page.title=USB Headset: Accessory Specification
@jd:body

<!--
    Copyright 2016 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>
This documentation specifies USB headset buttons behavior to function uniformly
across the Android ecosystem. Device manufacturers should also consult the
<a href="{@docRoot}devices/audio/usb.html">USB
Digital Audio</a> page for more information about USB implementation on Android
and the <a href="http://source.android.com/compatibility/android-cdd.html">Android
Compatibility Definition Document (CDD)</a> for requirements related to Android
devices.
</p>
<p>There are also specifications for
<a href="plug-headset-spec.html">3.5 mm headsets</a> for accessory manufacturers and
<a href="jack-headset-spec.html">3.5 mm jacks</a> for device manufacturers.
</p>
<p>
This documentation specifies the minimum requirements: accessory manufacturers
are encouraged to add features while keeping these requirements in mind.
</p>
<h2 id="control-function-mapping">Control-function mapping</h2>
<table>
  <tr>
   <th>Control Function</th>
   <th>Accessory Support</th>
   <th>Description</th>
  </tr>
  <tr>
   <td>Function A</td>
   <td>Required</td>
   <td>Play/pause (short press), launch voice assistance (long press), next (double
       press)</td>
  </tr>
  <tr>
   <td>Function B</td>
   <td>Optional</td>
   <td>Vol+</td>
  </tr>
  <tr>
   <td>Function C</td>
   <td>Optional</td>
   <td>Vol-</td>
  </tr>
  <tr>
   <td>Function D</td>
   <td>Optional</td>
   <td>Launch voice assistance</td>
  </tr>
</table>
<p>
<strong>Assign functions to buttons as follows:</strong>
</p>
<ul>
  <li>All one-button headsets must implement Function A.</li>
  <li>Headsets with multiple buttons must implement functions according to the
      following pattern:
    <ul>
      <li>2 functions: A and D</li>
      <li>3 functions: A, B, C</li>
      <li>4 functions: A, B, C, D</li>
    </ul>
  </li>
</ul>
<p class="note">
<strong>Note</strong>: No key latching allowed. Each key press by the end user
must generate the corresponding "down" and "up" key event, matching the end user
action. In other words, the keys for functions A through D are never "latched"
or implemented to be used as a toggle (where the "up" event only follows "down"
on a second key press).
</p>
<h2 id="software-mapping">Software mapping</h2>
<p>
Compatible USB headsets are required to support the following software mappings
for the headset buttons. Device support is required for the following software
mappings.
</p>

<table>
  <tr>
   <th>Function</th>
   <th>Mappings</th>
   <th>Context</th>
   <th>Behavior</th>
  </tr>
  <tr>
   <td rowspan="6">Function A</td>
   <td rowspan="6"><strong>HID usage page</strong>: 0x0C<br>
       <strong>HID usage</strong>: 0x0CD<br>
       <strong>Kernel key</strong>: <code>KEY_PLAYPAUSE</code><br>
       <strong>Android key</strong>: <code>KEYCODE_MEDIA_PLAY_PAUSE</code></td>
   <td rowspan="2">Media playback</td>
   <td><strong>Input</strong>: Short press<br>
       <strong>Output</strong>: Play or pause</td>
  </tr>
  <tr>
   <td><strong>Input</strong>: Long press<br>
       <strong>Output</strong>: Launch voice assistance<br>
       <strong>Sends</strong>:
       <code>android.intent.action.VOICE_SEARCH_HANDS_FREE</code></td>
  </tr>
  <tr>
   <td rowspan="2">Incoming call</td>
   <td><strong>Input</strong>: Short press<br>
       <strong>Output</strong>: Accept call</td>
  </tr>
  <tr>
   <td><strong>Input</strong>: Long press<br>
       <strong>Output</strong>: Reject call</td>
  </tr>
  <tr>
   <td rowspan="2">Ongoing call</td>
   <td><strong>Input</strong>: Short press<br>
       <strong>Output</strong>: End call</td>
  </tr>
  <tr>
   <td><strong>Input</strong>: Long press<br>
       <strong>Output</strong>: Mute or unmute microphone</td>
  </tr>
  <tr>
   <td>Function B</td>
   <td><strong>HID usage page</strong>: 0x0C<br>
       <strong>HID usage</strong>: 0x0E9<br>
       <strong>Kernel key</strong>: <code>KEY_VOLUMEUP</code><br>
       <strong>Android key</strong>: <code>VOLUME_UP</code></td>
   <td>Media playback, Ongoing call</td>
   <td><strong>Input</strong>: Short or long press<br>
       <strong>Output</strong>: Increases the system or headset volume</td>
  </tr>
  <tr>
   <td>Function C</td>
   <td><strong>HID usage page</strong>: 0x0C<br>
       <strong>HID usage</strong>: 0x0EA<br>
       <strong>Kernel key</strong>: <code>KEY_VOLUMEDOWN</code><br>
       <strong>Android key</strong>: <code>VOLUME_DOWN</code></td>
   <td>Media playback, Ongoing call</td>
   <td><strong>Input</strong>: Short or long press<br>
       <strong>Output</strong>: Decreases the system or headset volume</td>
  </tr>
  <tr>
   <td>Function D</td>
   <td><strong>HID usage page</strong>: 0x0C<br>
       <strong>HID usage</strong>: 0x0CF<br>
       <strong>Kernel key</strong>: <code>KEY_VOICECOMMAND</code><br>
       <strong>Android key</strong>: <code>KEYCODE_VOICE_ASSIST</code></td>
   <td>All. Can be triggered in any instance.</td>
   <td><strong>Input</strong>: Short or long press<br>
       <strong>Output</strong>: Launch voice assistance</td>
  </tr>
</table>

<h2 id="mechanical">Mechanical</h2>
<p>
Accessory manufacturers must follow the requirements for USB connectors
as specified by <a href="http://www.usb.org/">USB.org</a>.
</p>
<p>
Device manufacturers must follow the requirements in the
<a href="{@docRoot}compatibility/android-cdd.html#7_7_usb">USB section</a> of
the Android CDD.
</p>
