デバイス情報
プロバイダは、メッセージ ストリームを介してシーカーにデバイス情報を通知できます。
メッセージ グループ名 | 値 |
---|---|
デバイス情報イベント | 0x03 |
デバイス情報のコード名 | 値 |
---|---|
モデル ID | 0x01 |
BLE アドレスを更新しました | 0x02 |
バッテリーを更新しました | 0x03 |
残りのバッテリー時間 | 0x04 |
アクティブ コンポーネントのリクエスト | 0x05 |
アクティブ コンポーネントのレスポンス | 0x06 |
(非推奨)機能 | 0x07 |
プラットフォーム タイプ | 0x08 |
モデル ID
RFCOMM が接続したときに、モデル ID 情報(遡及的に AccountKey を書き込む用)をシーカーに送信する必要があります。たとえば、0x03010003AABBCC
は次のようになります。
- 0x03: デバイス情報イベント
- 0x01: モデル ID の値
- 0x0003: 追加データ、長さ 3
- 0xAABBCC: 追加データ、モデル ID
BLE アドレス
BLE アドレス情報(Retroactively write AccountKey 用)も、RFCOMM が接続したときとアドレスがローテーションされるたびにシーカーに送信する必要があります(使用可能な場合)。たとえば、0x03020006AABBCCDDEEFF
は次のようになります。
- 0x03: デバイス情報イベント
- 0x02: BLE アドレス値
- 0x0006: 追加データ、長さ 6
- 0xAABBCCDDEEFF: 追加データ、BLE アドレス
バッテリーを更新しました
バッテリー通知をサポートするプロバイダの場合、バッテリー情報を RFCOMM を介して送信することもできます。RFCOMM が接続されるか、バッテリーの値が変化したら、更新を送信する必要があります。BLE でバッテリー データをアドバタイジングする場合、パケットの追加データ セクションには、s + 2、s + 3、s + 4 のバイトと同じデータが含まれている必要があります。たとえば、0x0303000357417F
は次のようになります。
- 0x03: デバイス情報イベント
- 0x03: バッテリー値
- 0x0003: 追加データ、長さ 3
- 0x57417F: 追加データ、電池値
- 0x57: 左のイヤフォンの値、充電中、バッテリー 87%
- 0x41: 右のイヤフォンの値、充電中、バッテリー 65%
- 0x7F: ケースの値、充電中、不明なバッテリー
プロバイダは、バッテリー残量がわかっている場合に更新することもできます。たとえば、0x03040001F0
は次のようになります。
- 0x03: デバイス情報イベント
- 0x04: 残りバッテリー時間
- 0x0001: 追加データ、長さ 1(必要に応じて uint16 の場合は 2 にできます)
- 0xF0: 追加データ、電池残量(分単位)、240 分
アクティブなコンポーネント
シーカーは、現在アクティブなコンポーネント、つまりコンポーネントに対してアクションを実行したいと思う場合があります(デバイスのアクションをご覧ください)。プロバイダが、アクティブなコンポーネント リクエストのコード(0x05)を含むリクエストを受信すると、プロバイダの現在の状態を示すレスポンスが 1 秒以内に返されます。レスポンスは、アクティブなコンポーネント レスポンス コード(0x06)を使用し、どのコンポーネントが使用可能かを示す追加データを含みます。
単一のコンポーネントを持つプロバイダで、追加データが利用できない場合は、0x00 に設定する必要があります。たとえば、メディア再生が行われない低電力モードなどです。それ以外の場合、追加データは 0x01 に設定する必要があります。
複数のコンポーネント(左右のイヤフォンなど)を備えたヘッドセットの場合、追加データの各ビットはそのコンポーネントがアクティブかどうかを表します。非アクティブなコンポーネントの例として、ケースに入っていて使用されていないイヤフォンが挙げられます。左右のイヤフォンケースの詳細:
- 0x00(0b00000000): どちらのイヤフォンもアクティブではありません
- 0x01(0b00000001): 右のイヤフォンはアクティブ、左は非アクティブ
- 0x02(0b00000010): 左のイヤフォンはアクティブ、右は非アクティブ
- 0x03(0b00000011): 両方のイヤフォンがアクティブ
プラットフォーム タイプ
プロバイダは、接続しているプラットフォームに応じて異なるパフォーマンスを必要とする場合があります。現在、ファスト ペアリングは Android でのみ実施されていますが、今後サポートが拡張される可能性があります。
追加データには、プラットフォーム タイプを識別する最初のバイトが含まれます。
プラットフォーム名 | 値 |
---|---|
Android | 0x01 |
2 番目のバイトはプラットフォームごとにカスタマイズされます。Android では、SDK バージョンを指します。たとえば、Android Pie の場合、値は 28(0x1C)になります。