私のアプリは同時に9つのBleデバイスを接続する必要があります。 このarticleと他のリソースでは、アンドロイド4.4+は7つのデバイスにしか接続できないと書いています。 MバージョンまたはNバージョンに新しいものはありますか?おかげさまで 最大並行Ble接続とは何ですかandroid M +が持つことができる
答えて
接続の数が現在定数MAX_L2CAP_LINKSとGATT_MAX_PHY_CHANNELによって制限されている(まだ)あなたは真の自動接続=で8デバイスを接続しようとした場合、スタックはハングとに失敗します7.
に設定Android Mに導入されたバグのためにBluetoothを再起動するまで再接続してください。autoConnect = falseを使用して8番目のデバイスに接続すると、直ちにnewState = disconnectedでonConnectionStateChangeコールバックを取得し、接続を試みません。
なぜこれらの定数が低いのか分かりません。多くの場合、ハードウェア自体は7以上の処理を実行できます。たとえば、AOSPを自分でコンパイルして定数を変更すると、Nexus 6Pは15になります。
サムスンはこの問題に気づき、デバイスのいくつかで定数を増やしたようです。たとえば、Samsung Galaxy Tab A 10.1は、変更なしで15個のBLE接続を処理できます。
これらの定数はアプリごとではなく、グローバルな制限であるようです。私はAndroidのBTスタックのソースにリンクしています。私はなぜこれらの定数がそのままであるのだろう...無作為に見える。
#define GATT_MAX_PHY_CHANNEL 7
#define BTA_GATTC_CONN_MAX GATT_MAX_PHY_CHANNEL
tBTA_GATTC_CONN conn_track[BTA_GATTC_CONN_MAX];
注
これは公式のAndroidコードです。 Android 7.2まで、ベンダーはその実装を多く変更していました。 Android 8以上の理論では、ベンダーはそれを修正してはいけません(少なくともこの回答を書いた時点で、実際にこの仕組みがどのように機能するかについては、現場のAndroid 8デバイスでは不十分です)。
- 1. Android 6 BLEの最大接続間隔
- 2. Swiftのメソッドが持つことができるパラメータの最大数は何ですか?なぜですか?
- 3. BLE:接続間隔の最大パケット数
- 4. プロセスがウィンドウ内に持つことができるスレッドの最大数は何ですか?
- 5. ページがAEMに持つことができる最大のバージョンは何ですか?
- 6. iOS上のBLE接続デバイスとは何ですか?
- 7. iOS 8 BLEに接続できません。 iOS 9に接続することができます
- 8. iOS BLEペリフェラルへの接続と接続を維持する最良の方法
- 9. Android Bluetooth BLEどの接続の設定パラメータを変更することができますか
- 10. 接続することができるgrunt serveは何ですか?
- 11. クライアントはモノラルでlinuxカスタムサーバーに最大15の接続を行うことができます
- 12. テーブル変数がSQL Serverに持つことができるレコードの最大数
- 13. AndroidはBLEデバイスを見つけることができません
- 14. 最大幅と最大高を持ちながらビデオを反応させることができますか?
- 15. データベースサーバは一度に何個のオープン接続を持つことができますか?
- 16. Cで、あなたが持つことができる識別子の最大量はいくらですか?
- 17. 特定の瞬間にBLEゲートウェイに接続できるBLEセンサーの最大数は?
- 18. 近接接続で最大接続エンドポイント
- 19. ノードに接続されたエッジの数と最大接続エッジを持つノードを見つける
- 20. 私たちが持つことができるFirebaseシャードの最大数はいくらですか?
- 21. MongoDBが持つことができるシャードの最大数はいくらですか?
- 22. s3で保持できる接続の最大数
- 23. BLE、残りのAPI経由でSamsung GearとAndroidを接続
- 24. BLEアクセサリー(iOS、Swift)としてバックグラウンドモードでXMPP接続を保持
- 25. 私が持つことができる最長の文字列は何ですか?
- 26. 大文字を書くことができませんM
- 27. 私のプログラムで持つことができるクラスの最大数はいくらですか?
- 28. RPCの最大同時接続は何ですか?
- 29. Android/eclipseに#regionsを持つことができますか。
- 30. TCP接続が最大65000〜
したがって、autoConnect = trueを指定しないで自分の接続デバイスのリストを管理すると、 私は他のデバイスに接続できますか? –
No. autoConnect = falseを使用して8番目のデバイスに接続すると、すぐにnewState = disconnectedを指定してonConnectionStateChangeコールバックを取得し、接続を試みません。 – Emil