4

健康プロファイルから温度値を読み取ろうとしています。健康体温計サービス公式Google ble開発ページによると健康体温計の特性に温度を読み取るように通知しようとすると、writeDescriptor のコールバック メソッドを使用してディスクリプタ値 (クライアント特性設定) を書き込もうとします。Google によると、ステータス 5 を返します。だから私は writedescriptor のコードをコメントし、メソッド mBluetoothGatt.setCharacteristicNotification(characteristic, enabled); を呼び出そうとします。しかし、onCharacteristicChanged メソッドは呼び出されませんでした。私のiOS開発者チームと話すとき。彼らは、記述子の値を書き込むことは決してなく、通知をtrueに設定するだけで、同じチップから温度値を取得すると述べました。Android開発者が通知を受け取るには、記述子の値を書き込む必要があります??? 最後に、公式の bluetooth アプリを bluetooth から実行してみます。テスト目的のcomサイトでは、読み取りと書き込みに通知する3つのボタンすべてを無効にするだけですか??? ありがとう、私の英語でごめんなさい

[更新]
ボンディングの問題を引き起こす可能性のあるログを見つけてください。解決策があれば助けてください。

  • 生成された短期キーは、エラー
    11-08 11:26:44.392: E/bt-smp(1014): STK Generated としてログに記録されます

  • その後、結合状態が劇的に変化すると、認証が不十分になる可能性があり
    ます 11-08 11:26:49.437: I/BluetoothBondStateMachine(1014): bondStateChangeCallback: Status: 0 Address: 00:16:A4:C0:FF:EE newState: 2
    11- 08 11:26:49.437: D/BtGatt.btif(1014): btif_gattc_upstreams_evt: イベント 9 11-08
    11:26:49.437: E/BluetoothBondStateMachine(1014): 安定状態で、無効な newState を受信しました: 12

[更新]
nexus 7 で kitkat 4.4 をアップグレードした後。2 つのメソッドを追加する と、暗号化された特性を読み取ることができるようになりました。しかしまだ不安定。しかし、私が得たいくつかの成功。
device.createBond();
device.setPairingConfirmation(true);

4

2 に答える 2

0

私の場合、問題は BluetoothGatt オブジェクトが保留中の操作を 1 つだけ受け入れることができることでした。解決策は、読み取り/書き込み操作を順番に実行し、最初の完了コールバックを待ってから 2 番目の読み取り/書き込み操作を要求することでした。

于 2016-01-17T21:12:02.367 に答える