https://developer.android.com/preview/reference.htmlで入手できる Android L の API リファレンスで説明されているとおりです。
Bluetooth Low Energy を使用して Android L でデータの広告を開始するには、次の 2 つの方法があります。
public void startAdvertising (AdvertiseSettings 設定、AdvertisementData、AdvertiseData、AdvertiseCallback コールバック)
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 広告ステータスのコールバック。