【问题标题】:Android NDK accessing native bluetooth functions bluedroidAndroid NDK 访问原生蓝牙功能 bluedroid
【发布时间】:2014-02-24 23:19:40
【问题描述】:

我正在尝试查看使用 JNI 和 Android NDK 可以访问哪些原生蓝牙功能。我尝试了两种不同的方法:使用预构建的 .so 或构建我自己的。至于使用预建的 .so,我已经使用 adb pull 将 libbluetooth_jni.so 从三星 Galaxy S4 中拉出。但是,我在网上找不到这个(bluetooth_jni.c??)的源代码,也无法识别任何可访问的功能。

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

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

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

谁能给我一些关于如何编译或以其他方式获取 .so 以访问本机蓝牙功能的建议?

【问题讨论】:

  • 您将无法在典型的安全消费设备上做很多有用的事情,因为您无法获得绕过堆栈并直接与蓝牙芯片对话的权限。

标签: android bluetooth android-ndk


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    相关资源
    最近更新 更多