Android NDK访问本机蓝牙功能bluedroid

时间:2014-02-24 23:19:40

标签: android bluetooth android-ndk

我正在尝试使用JNI和Android NDK查看可以访问的本机蓝牙功能。我尝试了两种不同的方法:使用预构建的.so或构建自己的方法。至于使用prebuilt。所以我使用adb pull从三星Galaxy S4上取下了libbluetooth_jni.so。但是,我无法在线找到此源代码(bluetooth_jni.c ??),无法识别任何可访问的函数。

其次,我试图从中下载bluedroid的来源 https://android.googlesource.com/platform/external/bluetooth/bluedroid/
但是,我在构建它时遇到了麻烦。

目前,当我尝试运行ndk-build时,出现以下错误:
    未定义的引用'__android_log_print'
    未定义的引用'socket_local_client_connect'
    未定义引用'str_parms_destroy'

我添加到这一行:
    LOCAL_LDLIBS:= -llog
它摆脱了第一个错误。但是,我不知道如何摆脱其他人。

任何人都可以给我一些关于如何编译或以其他方式获取.so以获取本机蓝牙功能的建议吗?

1 个答案:

答案 0 :(得分:1)

libbluedroid特定于某些硬件;在三星S4上你会发现不同的蓝牙库。如果您需要超越公共蓝牙API,您可能找不到共同点。

您面临的另一个问题是这些库无法在应用程序上下文中工作,正如@Chris在他的评论中所解释的那样。它们旨在以具有特殊权限的媒体服务器工作。

关于具体参考文献,它们位于libcutils.so。最近关于这个非公共图书馆的讨论是here