2015-10-06 15 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