2

私は次のことを試しています:

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 のインターフェイスのみを返します。

(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"

マニフェストには、次のものがあります。

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

Bluetooth 検出を NDK で動作させることは可能ですか、それとも Java に頼る必要がありますか?

4

1 に答える 1

1

私が知る限り、それは不可能です。この Java サンプルをテンプレートとして使用し、それへのネイティブ ブリッジを構築することにしました。

私は、 Demo_Multiscreen.javaを BluetoothConnectionManager クラスに適合させて拡張し、それとの間のすべての橋渡しを行いました。

拡張された Java ソースは、このgithub リポジトリの google ディレクトリにあります。

于 2013-06-13T00:35:30.003 に答える