0

Android で BLE デバイスと通信する必要があるアプリケーションを作成しています。

BLE デバイスへの接続を確立する際に問題が発生しています。

ケース 1) スキャン: デバイスが検出され、レポートされた後のスキャン中

BluetoothLEScanCallback.onScanResult(...)

次の方法で接続を試みています。

result.getDevice().connectGatt(...)

問題は、私がこれをテストした一部のデバイス (つまり、Android 5.0.1 を実行している HTC One M8 と Android 4.3 を実行している HTC Desire 516) で、接続プロセス、つまりコールバックが失敗しているようです。

BluetoothGattCallback.onConnectionStateChange(....)

ほとんどの場合、単に呼び出されません。現在、これは一貫した動作ではなく、場合によってはそうでない場合もあります。

2 番目の問題は、接続が確立されると、多くの場合、

BluetoothGatt.discoverServices()

呼び出しは失敗します。つまり、BluetoothGattCallback.onServicesDiscovered(...) も呼び出されません。Xミリ秒間隔で数回呼び出しを再試行しようとしましたが、試行回数や間隔に関係なく、一貫して失敗するようです。

ケース 2リスニング

デバイスを単純に「リッスン」しようとすると、ほぼ同じことが起こります。

BluetoothDevice device = BluetoothManager.getAdapter().getRemoteDevice(macAddress);
device.connectGatt(...)

多くの場合、同じ状況になります。

どちらの場合も、ほとんどの場合、Android で問題が発生しています。Nexus 5 デバイスでは、同じコードがほとんどの部分で機能しているように見えます (BT スタックが機能しない場合もあります)。私たちが持っている iOS アプリケーションには、これらの問題はありません。

誰かがこれらの問題に遭遇しましたか? それらに対処する方法はありますか?

4

2 に答える 2