2

https://developer.android.com/preview/reference.htmlで入手できる Android L の API リファレンスで説明されているとおりです。

Bluetooth Low Energy を使用して Android L でデータの広告を開始するには、次の 2 つの方法があります。

  1. public void startAdvertising (AdvertiseSettings 設定、AdvertisementData、AdvertiseData、AdvertiseCallback コールバック)

  2. public void startAdvertising (AdvertiseSettings 設定、AdvertisementData 広告データ、AdvertisementData scanResponse、AdvertiseCallback コールバック)

2 番目のメソッドには、もう 1 つのパラメーターが含まれます: scanResponse

最初の方法を使用すると、すべて正常に動作し、advertiseData に設定された情報をスキャンできました。ただし、2 番目の方法をテストすると、scanResponse でデータをスキャンして取得することしかできず、LogCat から次のエラーが発生しました。 ここに画像の説明を入力

ここに画像の説明を入力

これは Bluetooth バッファの問題のようです。私の (広告) コールバック オブジェクトには、次の文が記録されています。

advertiseCallback = new AdvertiseCallback() {
            @Override
            public void onSuccess(AdvertiseSettings advertiseSettings) {

                Log.i(TAG, "Adv Success");
                // Other operations
            }

            @Override
            public void onFailure(int i) {
                // Other operations
            }
        };

LogCat から、onSuccess() メソッドが 2 回呼び出されていることがわかります。次の 2 つの理由のいずれかであると考えられます。放送されません。2. 広告データは、開始 (成功) した後 (おそらく) 閉じられます。

この方法を間違った方法で使用しましたか? Nexus 5 を Android L プレビュー エディションで使用していますが、それは現在の Android システムのバグですか?

参考

メソッド: public void startAdvertising (AdvertiseSettings 設定、AdvertisementData 広告データ、AdvertisementData scanResponse、AdvertiseCallback コールバック)

Bluetooth LE アドバタイジングを開始します。操作が成功すると、advertiseData がブロードキャストされます。スキャン デバイスがアクティブなスキャン要求を送信すると、scanResponse が返されます。メソッドはすぐに戻り、操作ステータスはコールバックを介して配信されます。

BLUETOOTH_ADMIN が必要です

パラメーター

settings Bluetooth LE アドバタイジングの設定。

広告データ 広告パケットで広告する広告データ。

scanResponse 広告データに関連付けられたスキャン応答。

callback 広告ステータスのコールバック。

4

0 に答える 0