1

GATTサーバを実行するデュアルモード(BR/EDR + BLE)デバイスがあります。 BLEとBD/EDRのアドレスはパブリックで同じです。
Android 6.0.1(APIレベル23)のGalaxy S7でconnectGattを呼び出し、トランスポートパラメータを "TRANSPORT_LE"に設定すると、電話機は引き続きBD/EDRとの接続を確立しようとします。問題はBLEのパブリックアドレスに関連しているように見えます。なぜなら私がプライベートに設定すると、期待通りにBLE経由で接続が行われるからです。connectGatt on Samsung Galaxy S7はBLEの代わりにBluetooth Classic経由で接続を作成します

この問題はGalaxy S7、他の携帯電話(Nexus 6Pなど)でのみ発生し、BLE経由では常に正しく接続されています。

これはAndroidのバグですか、それとも不足していますか?

+0

「どのようにプライベートに設定するのですか?別の住所タイプで広告しているということですか? BDアドレスでデバイスに直接接続しているのですか、最初にスキャンしてから見つかったデバイスに接続していますか? – Emil

+0

これは運が良かったですか?私は7.1.1を実行しているNexus 5Xで同じ問題に遭遇しています。 – watashi16

+0

いいえ、問題を解決できませんでした – akasi

答えて

0

Bluetooth 4.0仕様では、両方のデバイスがClassicとLEWをサポートしている場合、Classicを介して接続する必要があると記載されています。そしてAndroidスタックはこれに従う傾向があります。他のデバイスを接続不可能にし、照会で表示されないようにしてください。それは正常に動作するはずです。

0

GATTはトランスポート固有ではなく、属性プロトコル(ATT)の上に実装されるフレームワークです。周辺デバイスがデュアルモードデバイスでBR/EDR上のGATTをサポートする場合、BR/EDRを介してGATTにアクセスできます。 Bluetooth 4.Xのコア仕様では、GATT経由での接続ベアラのアクセスは必須ではありません。一部のアンドロイド携帯端末では、BR/EDRでGATTを使用しようとしますが、アプリケーションではコントロールできません。私はまたLenovo TAB 2 A8-50FのBR/EDRよりGATTを観察しました。

0

古い質問が、答えない...

あなたはGATTデバイス上の広告パケットに間違ったFLAGSを持っているかもしれません。さらに、実装のクラシック部分から送信されるEIR(Extended Inquiry Response)パケット。

これらの両方の場合に役立つフラグ「BR/EDR NOT SUPPORTED」があります。

この問題は、CSRによって提供されるADKコードのデフォルト設定のため、CSRチップセットでよく発生します。 CSRチップを使用している可能性はありますか?あなたの問題はアンドロイドデバイスにないかもしれませんか?

関連する問題