Android OS の識別

Android 16 以降、Android フレームワークには Android 情報サービス(AIS)という汎用属性(GATT)サービスが含まれています。これにより、Bluetooth デバイスはサービスの GATT 特性として Android API レベルを読み取ることができます。このサービスにより、Bluetooth デバイス メーカーは、Bluetooth 周辺機器が Android OS を搭載したセントラル デバイスとペア設定されているかどうかを把握し、API レベルに基づいて特殊なロジックを管理できます。

Android 情報サービス(AIS)

AIS は標準の GATT サービスであり、デバイスに存在できる AIS のインスタンスは 1 つだけです。プライマリ サービスの UUID は e73e0001-ef1b-4e74-8291-2e4f3164f3b5 です。Android API レベルの特性(UUID: e73e0002-ef1b-4e74-8291-2e4f3164f3b5)には、デバイスの API レベルがバイナリ形式(リトル エンディアン)の符号なし 32 ビット整数として格納されます。Android API レベル特性の値の長さは 4 オクテットです(API レベル 36 は 0x24_00_00_00 です)。デバイスが検出可能になっている場合、Android API レベル特性値は認証や承認なしで読み取ることができます。デバイスが検出可能でない場合、Android API レベルの特性値は、認証と認可でのみ読み取ることができます。

サービスを検出する

Bluetooth デバイスは GATT クライアント ロールで、Android デバイスはサーバー ロールです。Bluetooth デバイスは、AIS を検出して Android API レベルを読み取るために、プライマリ サービス ディスカバリ特性ディスカバリ特性値の読み取りなどの GATT プロファイル プロシージャを使用します。これらの手順の詳細については、GATT プロファイル仕様をご覧ください。

API レベルは、ro.build.version.sdk システム プロパティによって定義されます。プライマリ サービスを検出できない場合は、システム プロパティが定義されていないか、値が空に設定されているか、ホスト オペレーティング システムが Android ではないことを意味します。

検証

AIS が検出できることを確認するには、Bluetooth 周辺機器を Android デバイスとペア設定し、検出されたプライマリ サービスで AIS サービス UUID を検索して、手動テストを実行します。