| page.title=Custom Accessories |
| @jd:body |
| |
| <!-- |
| Copyright 2015 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. |
| --> |
| <div id="qv-wrapper"> |
| <div id="qv"> |
| <h2>In this document</h2> |
| <ol id="auto-toc"> |
| </ol> |
| </div> |
| </div> |
| |
| <p>An accessory for Android can be anything: keyboard, thermometer, robot, |
| lighting control, or anything else you can imagine. All Android accessories |
| connect to an Android device in some way, so when building an accessory you must |
| consider the type of connections your accessory will use. This page provides a |
| quick overview of your options for connecting your Android accessory and |
| a list of 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 via USB. |
| Due to the low power output of Android devices, AOA requires the accessory to |
| act as a USB host, meaning the connecting accessory must power the bus.</p> |
| |
| <p>AOA has two versions that support different types of communication:</p> |
| <ul> |
| <li><strong>AOAv1</strong>. Supports generic accessory communication and adb |
| debugging. Available 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.</li> |
| <li><strong>AOAv2</strong>. Supports audio streaming and human interface |
| device (HID) capabilities. Available in Android 4.1 (API Level 16).</li> |
| </ul> |
| |
| <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_0">Next steps</h3> |
| <p>To get started 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 <a href="{@docRoot}accessories/protocol.html">AOA</a> specifications to |
| understand how to implement this protocol on your accessory hardware. |
| Implementing <a href="{@docRoot}accessories/aoa2.html">AOAv2</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>When 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 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 to use the accessory. You can also provide a secondary Android |
| application that handles 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 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>When 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 class="note"><strong>Note:</strong> The ADK 2012 source code includes an open |
| source Bluetooth stack built for the Texas Instruments CC2564 chip but is |
| designed to work with any Bluetooth chip that supports a standard |
| Host/Controller Interface (HCI).</p> |
| |
| <h2 id="audio-over-usb">Connecting audio over USB</h2> |
| <p>An accessory that connects with Android over USB can use AOAv2 (supported on |
| Android 4.1 (API Level 16) and higher. After an Android device connects to an |
| accessory that supports this protocol, the Android system treats it as a |
| standard audio output device and routes all audio to that accessory. No |
| secondary software application is required on the Android device.</p> |
| |
| <p class="note"><strong>Note:</strong> Due to the low power output of Android |
| devices, AOA requires accessories to act as a USB host, meaning the connecting |
| accessory must power the bus.</p> |
| |
| <h3 id="next-steps_2">Next steps</h3> |
| <p>To get started building an audio accessory that uses a USB connection, see |
| <a href="#next-steps_0">next steps for USB connections.</a></p> |
| |
| <p>AOAv2 also supports the |
| <a href="{@docRoot}accessories/aoa2.html#hid-support">human interface device</a> |
| (HID) protocol through a USB connection, enabling accessories such as audio |
| docks to provide hardware play back controls such as pause, fast-forward or |
| volume buttons.</p> |