android - 使用 Android NDK 发现蓝牙

标签 android bluetooth android-ndk ioctl

我正在尝试以下操作:

sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0) {
    goto gotError;
}

lastlen = 0;
len = 100 * sizeof(struct ifreq);   /* initial buffer size guess */
for ( ; ; ) {
    buf = (char*)malloc(len);
    if (buf == NULL) {
        goto gotError;
    }
    ifc.ifc_len = len;
    ifc.ifc_buf = buf;
    if (ioctl(sockfd, SIOCGIFCONF, &ifc) < 0) {

然而,ioctl 只返回环回和 wifi 的接口(interface):

(gdb) p ifc.ifc_ifcu.ifcu_req[0].ifr_ifrn.ifrn_name
$1 = "lo", '\000' <repeats 13 times>
(gdb) p ifc.ifc_ifcu.ifcu_req[1].ifr_ifrn.ifrn_name
$2 = "wlan0\000\000\000\000\000\000\000\000\000\000"
(gdb) p ifc.ifc_ifcu.ifcu_req[2].ifr_ifrn.ifrn_name
$3 = "\344\233\025j\000\000\000\000m\004\357k\005\000\000"

在 list 中,有:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

是否有可能让蓝牙发现与 NDK 一起工作,还是我需要求助于 Java?

最佳答案

据我所知,这是不可能的。我求助于使用 this Java sample作为模板并构建一个本地桥梁。

我改编并扩展了Demo_Multiscreen.java到 BluetoothConnectionManager 类,并完成所有与它的桥接。

扩展的 Java 源代码可以在这个 github repo 的 google 目录中找到。 .

关于android - 使用 Android NDK 发现蓝牙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16720084/

相关文章:

android - 可调整的自定义用户界面

android - Firemonkey:当 VKAutoShowMode 为 Never 时弹出软键盘

ios - 在其他平台上使用 iOS GameKit 的 "Bluetooth Bonjour"

ios - 是否可以使用 iPhone gamekit API 扫描蓝牙 "id' s”

android - Android Tensorflow Lite C++ .SO库未在运行时链接

javascript - 我无法在安装了 phonegap 插件的 eclipse 中使用 css、javascript 文件

java - Insert } to Complete ClassBody 错误,即使有匹配的大括号

linux - 从命令行进行蓝牙配对和连接

c++ - 强制 lld 链接在不同 DWARF 版本中使用调试信息的可重定位文件

Android-NDK "java.lang.UnsatisfiedLinkError"