| page.title=Building Custom Accessories |
| @jd:body |
| |
| <!-- |
| Copyright 2010 The Android Open Source Project |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <p>An accessory for Android can be anything: keyboard, thermometer, robot, lighting control or |
| anything else you can imagine. Accessories for Android all have one thing in common; they all |
| connect to an Android device in some way. When starting out to build an accessory, you should |
| decide how your accessory will connect to Android devices. This page gives you quick overview of |
| your options for connecting your Android accessory and resources to help you get started.</p> |
| <h2 id="connecting-over-usb">Connecting over USB</h2> |
| <p>An accessory that connects to an Android device through a USB cable must support the Android |
| Open Accessory (AOA) protocol, which specifies how an accessory can establish communication with |
| an Android device over a USB cable. Due to the low power output of Android devices, the AOA |
| protocol requires the accessory act as a USB host, which means that the connecting accessory must |
| power the bus.</p> |
| <p>The AOA protocol has two versions which support different types of communication. Version |
| 1.0 supports a generic accessory communication and adb debugging. This version of the protocol is |
| supported by the platform in Android 3.1 (API Level 12) and higher, and supported through an |
| <a href="https://developers.google.com/android/add-ons/google-apis/">Add-On Library</a> in Android |
| 2.3.4 (API Level 10) and higher. Version 2.0 of the protocol is available in Android 4.1 (API Level |
| 16) and adds audio streaming and human interface device (HID) capabilities.</p> |
| <p>If you use the general accessory protocol to communicate with your accessory (rather than the |
| adb or audio protocol), you must provide an Android application that can detect the connection of |
| your USB accessory and establish communication.</p> |
| <h3 id="next-steps">Next steps</h3> |
| <p>To get started on building an Android accessory that uses a USB connection:</p> |
| <ul> |
| <li>Select a hardware platform or build a hardware device that can support USB host mode.</li> |
| <li>Review the <a href="{@docRoot}accessories/index.html">AOA protocol</a> specifications to understand |
| how to implement this protocol on your accessory hardware. Implementing the |
| <a href="{@docRoot}accessories/aoa2.html">AOA 2.0 protocol</a> is recommended for all new Android USB |
| accessories.</li> |
| <li>Review the ADK 2012 <a href="http://developer.android.com/tools/adk/adk2.html#src-download">firmware source code</a> |
| (<code><adk-src>/adk2012/board/library/ADK2/</code>), which demonstrates an implementation of an accessory |
| using a USB connection for general data communications and audio streaming.</li> |
| <li>If you are planning to build an Android application that communicates with your accessory |
| via USB, review the ADK 2012 Android |
| <a href="http://developer.android.com/tools/adk/adk2.html#src-download">application source code</a> |
| (<code><adk-src>/adk2012/app/</code>).</li> |
| </ul> |
| <h2 id="connecting-over-bluetooth">Connecting over Bluetooth</h2> |
| <p>An accessory that connects with Android devices over a Bluetooth connection can use the |
| various connection profiles supported by Android, including the Simple Serial Protocol (SSP) and |
| Advanced Audio Distribution Profile (A2DP) profile. An accessory that uses Bluetooth to connect to |
| Android devices must support Bluetooth communications and at least one of the supported connection |
| profiles.</p> |
| <p>Users must enable Bluetooth on their Android device and pair with your accessory in order to |
| use it. You can also provide a secondary Android application that handles any specialized |
| communication, such as data input or control outputs, to interface with your accessory.</p> |
| <h3 id="next-steps_1">Next steps</h3> |
| <p>To get started on building an Android accessory that uses a Bluetooth connection:</p> |
| <ul> |
| <li>Select a hardware platform or build an hardware device that can support Bluetooth |
| communications and an Android supported connection profile, such as SSP or A2DP.</li> |
| <li>Review the ADK 2012 <a href="http://developer.android.com/tools/adk/adk2.html#src-download">firmware source code</a> |
| (<code><adk-src>/adk2012/board/library/ADK2/</code>), which includes an example implementation |
| of general data communications and audio streaming using a Bluetooth connection.</li> |
| <li>If you are planning to build an Android application that communicates with your accessory |
| via Bluetooth, review the ADK 2012 Android |
| <a href="http://developer.android.com/tools/adk/adk2.html#src-download">application source code</a> |
| (<code><adk-src>/adk2012/app/</code>).</li> |
| </ul> |
| <p><strong>Note:</strong> The ADK 2012 source code includes an open source Bluetooth stack which |
| is built for the Texas Instruments CC2564 chip, but can work with any Bluetooth chip that |
| supports a standard Host/Controller Interface (HCI).</p> |