カスタム アクセサリ

キーボード、温度計、ロボット、照明制御など、Android のアクセサリには思いつくだけでもさまざまな用途のものがあります。すべての Android アクセサリは、なんらかの方法で Android デバイスに接続されます。したがって、アクセサリを作成する際は、アクセサリで使用する接続の種類を検討する必要があります。このページでは、Android アクセサリの接続方法について簡単に説明し、アクセサリの作成に役立つリソースの一覧を紹介します。

USB 経由で接続する

USB ケーブルで Android デバイスに接続するアクセサリは、Android Open Accessory(AOA)プロトコルに対応している必要があります。AOA プロトコルは、アクセサリが USB 経由で Android デバイスと通信する方法を規定しています。Android デバイスの電源は低出力であるため、AOA では、アクセサリが USB ホストとして動作することが要求されます。つまり、デバイスに接続したアクセサリはバスに給電する必要があります。

AOA には、次の 2 種類の通信に対応したバージョンがあります。

  • AOAv1:: 汎用的なアクセサリ通信と ADB デバッグをサポートします。
  • AOAv2: ヒューマン インターフェース デバイス(HID)機能をサポートします。Android 4.1(API レベル 16)以上で使用できます。

ADB やオーディオ プロトコルを使わずに、一般的なアクセサリ プロトコルでアクセサリと通信する場合は、Android アプリで USB アクセサリの接続を検出して通信を確立できるようにする必要があります。

次のステップ

USB 接続を使用する Android アクセサリを作成するには:

  • ハードウェア プラットフォームを選択するか、USB ホストモードをサポートするハードウェア デバイスを作成します。
  • AOA 仕様を確認して、アクセサリのハードウェアにこのプロトコルを実装する方法を理解します。
  • ADK 2012 ファームウェアのソースコード<adk-src>/adk2012/board/library/ADK2/)を確認します。一般的なデータ通信とオーディオ ストリーミング用に USB 接続を使用するアクセサリの実装例を参照できます。
  • USB 経由でアクセサリと通信する Android アプリを作成する場合は、ADK 2012 Android アプリのソースコード<adk-src>/adk2012/app/)を確認します。

Bluetooth 経由で接続する

Bluetooth 接続で Android デバイスと接続するアクセサリは、Android がサポートする接続プロファイルを使用できます。そのようなプロファイルには、Simple Serial Protocol(SSP)プロファイルや Advanced Audio Distribution Profile(A2DP)プロファイルがあります。Android デバイスとの接続に Bluetooth を使用するアクセサリは、Bluetooth 通信に加え、サポートされているプロファイルを少なくとも 1 つサポートする必要があります。

ユーザーがアクセサリを使用するには、Android デバイスで Bluetooth を有効にし、アクセサリをペアリングする必要があります。データ入力やインターフェースへの出力の制御など、特別な通信を処理するセカンダリ Android アプリをアクセサリと合わせて用意することもできます。

次のステップ

Bluetooth 接続を使用する Android アクセサリを作成するには:

  • ハードウェア プラットフォームを選択するか、または Bluetooth 通信に加えて Android がサポートする接続プロファイル(SSP や A2DP など)に対応できるハードウェア デバイスを作成します。
  • ADK 2012 ファームウェアのソースコード<adk-src>/adk2012/board/library/ADK2/)を確認します。Bluetooth 接続を使用した一般的なデータ通信とオーディオ ストリーミングの実装例を参照できます。
  • Bluetooth 経由でアクセサリと通信する Android アプリを作成する場合は、ADK 2012 Android アプリのソースコード<adk-src>/adk2012/app/)を確認します。

注: ADK 2012 のソースコードは、Texas Instruments CC2564 チップ用に作成されたオープンソースの Bluetooth スタックを含んでいますが、標準の Host/Controller Interface(HCI)に対応した Bluetooth チップでも動作するように設計されています。