2015-10-06 28 views
0

我想从我自己的应用中调用Android源中的com_android_bluetooth_hid.cpp提供的函数。目标Android版本> = 4.4和< = 5.x。我理解JNI,并可以编译我自己的代码并从我自己的应用程序调用。从您的应用调用Android的cpp代码

是否有可能从我的应用程序调用android的库?

另外,要调用该特定cpp文件中的函数,是否需要BLUETOOTH和BLUETOOTH_ADMIN权限或其他(其他权限或root)权限?

+0

我需要从我的设备接收(供应商特定)隐藏报告。目前Android系统正在吃掉所有报告。 查看代码,发现'sBluetoothHidCallbacks'中的'get_report_cb'在此代码中保留为NULL。另外'BluetoothInputDevice'类没有任何回调接口来接收这些报告。所以我想把自己的回调函数放在那里,并直接在我的应用程序中与此代码交互,如果需要的话绕过Android的Java堆栈。 – GPS

回答

0

调用Android的CPP代码最彻底的方法是,通常,复制相关作品到存储库,并建设为您的应用程序的一部分。遵循这种方法,您的应用只会调用公共API-- Java或C/C++。

但这可能不是相关的情况时,该代码必须使用特殊的权限运行,为系统服务,如媒体服务器或蓝牙堆栈。

恐怕你想运行的代码属于此第二类,因此没有可用的招数也无济于事。

在另一方面,定制ROM可能是你正在寻找一个解决方案。它可能发生,你不需要伪造一个完整的系统。使用固定设备并用自定义设备替换蓝牙服务可能就足够了。

我仍然建议您为服务提供缺少的回调,而不是直接从您的应用调用功能:最好不要在用户空间应用和系统服务之间混合使用环境。

+0

'我仍然建议你提供缺少的回调服务' 这是否意味着,以某种方式在香草系统中提供回调,或通过自定义ROM /生根来替代蓝牙服务?谢谢 – GPS

+0

通过自定义ROM/rooting提供回调 –

+0

我希望有一些方法可以在没有root权限/自定义ROM的情况下完成此操作,所以最好问问老年人。感谢您的回复。 – GPS