| 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> |