主にそれがどれほど永続的であるかのために、私は完全に困惑している問題を抱えています。
Bluegiga BLE113 と通信するための小さな Android アプリを作成していました。以前にこのデバイスに接続したことはありますが、最近 GATT を変更したため、Android デバイスに反映されていませんでした (試したどのアプリにも反映されていませんでした。デスクトップと iOS アプリから GATT が更新されたことを確認しました)。予想通り)。
Bluetooth をオフ/オンにして、Nexus 7 を再起動しようとしましたが、それでも何も起こりません。最後に、私は必死になり、ここで言及されている解決策を試しました: https://stackoverflow.com/a/22709467/992509リフレクションを使用して、refresh と呼ばれるプライベート BluetoothGatt メソッドをヒットします。
私の新しいサービスが表示されていたので、完全に機能しているように見えましたが、私が遭遇したのは、私のサービス (1 つの特性のみ) が同じ UUID を持つ数百の特性を示しているということでした。アプリを実行するたびに、デバイスの再起動や BT のサイクリングによっても、同一の特性の数が増加しました。
最後に、私は必死になり、Nexus を工場出荷時設定にリセットしました (これはテスト デバイスなので、気にしません)。この画像は私が見ているものを示しています (10k 特性):
私の BLE113 GATT は次のようになります。
<service uuid="deadbeef-cdcd-cdcd-cdcd-cdcdcdcdcdcd">
<description>Debugging Service</description>
<characteristic uuid="deadbeef-0000-0000-0000-000000000000" id="xgatt_debug">
<description>Debugging output</description>
<properties read="true" notify="true" />
<value length="20" />
</characteristic>
</service>
Android コードは、基本的に BluetoothGatt.discoverServices() です (これが起こるのは初めてです)。
繰り返しますが、BT のリセット、Nexus の再起動、工場出荷時設定へのリセットを試みました。また、デスクトップ アプリと iOS を介して、BLE 周辺機器が期待どおりに動作することを確認しました。
私は Nexus 7 を使用しており、5.0.2 を実行しており、アプリで 4.4 をターゲットにしています。