2014-02-24 135 views
1

我想看看我可以使用JNI和Android NDK訪問哪種原生藍牙功能。我嘗試了兩種不同的方法:使用預編譯的.so或創建自己的。至於使用預編譯的.so,我已經使用adb pull將libbluetooth_jni.so關閉了Samsung Galaxy S4。但是,我無法在線找到此(bluetooth_jni.c ??)的源代碼,無法識別任何可訪問的功能。Android NDK訪問原生藍牙功能bluedroid

其次,我試圖從
https://android.googlesource.com/platform/external/bluetooth/bluedroid/
不過,我有麻煩建設這個下載源bluedroid。

目前,當我嘗試運行NDK建造,我收到以下錯誤:
未定義參考「__android_log_print」
未定義的引用「socket_local_client_connect」
未定義參考

我說「str_parms_destroy」到這一行:
LOCAL_LDLIBS:= -llog
它擺脫了第一個錯誤。但是,我不知道如何擺脫其他人。

任何人都可以給我一些建議如何編譯或以其他方式獲得.so以訪問本機藍牙功能?

+2

你將不能夠做很多有用的一個典型的安全消費設備上,因爲你不能獲得許可,繞過堆棧,並直接對着藍牙芯片。 –

回答

1

libbluedroid特定於某些硬件;在三星S4上,你會發現不同的藍牙庫。如果您需要超越公共藍牙API,您可能找不到共同點。

,你面臨的另一個問題是,這些庫不能在應用環境中工作,如@Chris在他的評論中解釋。它們被設計爲通過其特殊權限與媒體服務器一起工作。

至於具體提及,他們在libcutils.so。最近關於這個非公共圖書館的討論是here