Polar H10 デバイスから心拍数を測定する Android アプリがあります。心拍数の解釈方法に完全に迷っています。残念ながら、bluetooth.com サイトへのさまざまなリンクで 404 エラーが発生しています。
特性値は [16, 59, 83, 4] です。
私が理解したところでは、2 番目のバイト (59) は BPM での心拍数です。しかし、値が 127 まで上がってから -127、-126、-125 と続くため、これは 10 進数ではないようです。16 進数でもありません。
試してみました(kotlinで)
characteristic.value[1].toUInt()
characteristic.value[1].toInt()
characteristic.value[1].toShort()
characteristic.value[1].toULong()
characteristic.value[1].toDouble()
-127 が表示されるとすぐに、すべての値が異常になります。
59 をバイナリ (59=111011) に変換して、そこに表示する必要がありますか? 洞察力を教えてください。
### 編集 (2021 年 4 月 12 日) ###
これらの値を取得するために行うことは、BluetoothDevice.connectGatt() です。次に、GATT をホールドします。私が探している心拍数の値を取得するために
- サービス 0x180d とその
- 特性 0x2a37 とその唯一の
- 記述子 0x2902。
次に、記述子に 0x01 を設定して通知を有効にします。次に、GattClientCallback.onCharacteristicChanged() コールバックで進行中のイベントを取得します。以下に、すべてのデータを含むスクリーンショットを追加します。
私が理解したところでは、応答の長さは 4 バイトではなく 6 バイトでなければなりません。私は何を間違っていますか?
写真では一番上に特徴があります。サービス180dに紐づけられており、特性は下4バイトの値を保持しています。