page.title=Adding Voice Capabilities
page.tags=wear
helpoutsWidget=true

@jd:body

<div id="tb-wrapper">
  <div id="tb">

    <!-- Required platform, tools, add-ons, devices, knowledge, etc. -->
    <h2>This lesson teaches you to</h2>
    <ol>
      <li><a href="#SystemProvided">Declare System-provided Voice Actions</a></li>
      <li><a href="#AppProvided">Declare App-provided Voice Actions</a></li>
      <li><a href="#FreeFormSpeech">Obtaining Free-form Speech Input</a></li>
    </ol>
    <h2>You should also read</h2>
    <ul>
      <li><a href="{@docRoot}design/wear/index.html">Android Wear Design Principles</a></li>
    </ul>
  </div>
</div>

<p>Voice actions are an important part of the wearable experience. They let users carry
out actions hands-free and quickly. Wear provides two types of voice actions:</p>

<dl>
  <dt><b>System-provided</b></dt>
  <dd>These voice actions are task-based and are built
  into the Wear platform. You filter for them in the activity that you want to start when the
  voice action is spoken. Examples include "Take a note" or "Set an alarm".</dd>
  <dt><b>App-provided</b></dt>
  <dd>These voice actions are app-based, and you declare them just like a launcher icon.
  Users say "Start <Your App Name>" to use these voice actions and an activity that you specify
  starts.</dd>
</dl>

<h2 id="SystemProvided" style="clear:right">Declare System-provided Voice Actions</h2>
<p>
The Android Wear platform provides several voice intents that are based on user actions such
as "Take a note" or "Set an alarm". This allows users to say what they want to do and let
the system figure out the best activity to start.</p>

<p>When users speak the voice action, your app can filter for the intent that is fired to start
an activity. If you want to start a service to do something in the background, show an activity as
a visual cue and start the service in the activity. Make sure to call
{@link android.app.Activity#finish finish()} when you want to get rid of the visual cue.
</p>

<p>For example, for the "Take a note" command, declare this intent filter to start an activity
named <code>MyNoteActivity</code>:
</p>

<pre>
  &lt;activity android:name="MyNoteActivity"&gt;
      &lt;intent-filter&gt;
          &lt;action android:name="android.intent.action.SEND" /&gt;
          &lt;category android:name="com.google.android.voicesearch.SELF_NOTE" /&gt;
      &lt;/intent-filter&gt;
  &lt;/activity&gt;
</pre>

<p>Here is a list of the voice intents supported by the Wear platform:</p>

<table>
  <tr>
    <th>Name</th>
    <th>Example Phrases</th>
    <th>Intent</th>
  </tr>

  <tr>
    <td>Call a car/taxi</td>
    <td>"OK Google, get me a taxi"<br/><br/>"OK Google, call me a car"</td>
    <td>
      <dl>
        <dt>Action</dt>
        <dd>
          <code>com.google.android.gms.actions.RESERVE_TAXI_RESERVATION</code>
        </dd>
      </dl>
    </td>
  </tr>

  <tr>
    <td>Take a note</td>
    <td>"OK Google, take a note"<br/><br/>"OK Google, note to self"</td>
    <td>
      <dl>
        <dt>Action</dt>
        <dd><code>android.intent.action.SEND</code></dd>
        <dt>Category</dt>
        <dd><code>com.google.android.voicesearch.SELF_NOTE</code></dd>
        <dt>Extras</dt>
        <dd><code>android.content.Intent.EXTRA_TEXT</code> - a string with note body</dd>
      </dl>
   </td>
  </tr>

  <tr>
    <td>Set alarm</td>
    <td>"OK Google, set an alarm for 8 AM"<br/><br/>"OK Google, wake me up at 6 tomorrow"</td>
    <td>
      <dl>
        <dt>Action</dt>
        <dd><code>android.intent.action.SET_ALARM</code></dd>
        <dt>Extras</dt>
        <dd><code>android.provider.AlarmClock.EXTRA_HOUR</code> - an integer with the hour of
        the alarm.
        <p><code>android.provider.AlarmClock.EXTRA_MINUTES</code> -
        an integer with the minute of the alarm
        <p>(these 2 extras are optional, either none or
        both are provided)</p></dd>

      </dl>
   </td>
  </tr>

  <tr>
    <td>Set timer</td>
    <td>"Ok Google, set a timer for 10 minutes"</td>
    <td>
      <dl>
        <dt>Action</dt>
        <dd><code>android.intent.action.SET_TIMER</code></dd>
        <dt>Extras</dt>
        <dd><code>android.provider.AlarmClock.EXTRA_LENGTH</code> - an integer in the range of
        1 to 86400 (number of seconds in 24 hours) representing the length of the timer </dd>
      </dl>
   </td>
  </tr>

  <tr>
    <td>Start stopwatch</td>
    <td>"Ok Google, start stopwatch"</td>
    <td>
      <dl>
        <dt>Action</dt>
        <dd><code>com.google.android.wearable.action.STOPWATCH</code></dd>
      </dl>
   </td>
  </tr>

  <tr>
    <td>Start/Stop a bike ride</td>
    <td>"OK Google, start cycling"<br/><br/>"OK Google, start my bike ride"<br/><br/>"OK Google, stop cycling"</td>
    <td>
      <dl>
        <dt>Action</dt>
        <dd><code>vnd.google.fitness.TRACK</code></dd>
        <dt>Mime Type</dt>
        <dd><code>vnd.google.fitness.activity/biking</code></dd>
        <dt>Extras</dt>
        <dd><code>actionStatus</code> - a string with the value <code>ActiveActionStatus</code>
        when starting and <code>CompletedActionStatus</code> when stopping.</dd>
      </dl>
   </td>
  </tr>

  <tr>
    <td>Start/Stop a run</td>
    <td>"OK Google, track my run"<br/><br/>"OK Google, start running"<br/><br/>"OK Google, stop running"</td>
    <td>
      <dl>
        <dt>Action</dt>
        <dd><code>vnd.google.fitness.TRACK</code></dd>
        <dt>MimeType</dt>
        <dd><code>vnd.google.fitness.activity/running</code></dd>
        <dt>Extras</dt>
        <dd><code>actionStatus</code> - a string with the value <code>ActiveActionStatus</code>
        when starting and <code>CompletedActionStatus</code> when stopping</dd>
      </dl>
   </td>
  </tr>


  <tr>
    <td>Start/Stop a workout</td>
    <td>"OK Google, start a workout"<br/><br/>"OK Google, track my workout"<br/><br/>"OK Google, stop workout"</td>
    <td>
      <dl>
        <dt>Action</dt>
        <dd><code>vnd.google.fitness.TRACK</code></dd>
        <dt>MimeType</dt>
        <dd><code>vnd.google.fitness.activity/other</code></dd>
        <dt>Extras</dt>
        <dd><code>actionStatus</code> - a string with the value <code>ActiveActionStatus</code>
        when starting and <code>CompletedActionStatus</code> when stopping</dd>
        </dd>
      </dl>
   </td>
  </tr>

  <tr>
    <td>Show heart rate</td>
    <td>"OK Google, what’s my heart rate?"<br/><br/>"OK Google, what’s my bpm?"</td>
    <td>
      <dl>
        <dt>Action</dt>
        <dd><code>vnd.google.fitness.VIEW</code></dd>
        <dt>Mime Type</dt>
        <dd><code>vnd.google.fitness.data_type/com.google.heart_rate.bpm</code></dd>
        </dd>
      </dl>
   </td>
  </tr>

  <tr>
    <td>Show step count</td>
    <td>"OK Google, how many steps have I taken?"<br/><br/>"OK Google, what’s my step count?"</td>
    <td>
      <dl>
        <dt>Action</dt>
        <dd><code>vnd.google.fitness.VIEW</code></dd>
        <dt>Mime Type</dt>
        <dd><code>vnd.google.fitness.data_type/com.google.step_count.cumulative</code></dd>
        </dd>
      </dl>
   </td>
  </tr>

</table>

<p>
For documentation on registering for platform intents and accessing the extras information
contained in them, see <a href="{@docRoot}guide/components/intents-common.html">Common intents</a>.
</p>

<h2 id="AppProvided">Declare App-provided Voice Actions</h2>
<p>
If none of the platform voice intents work for you, you can start your apps directly with
a "Start MyActivityName" voice action. </p>

<p>Registering for a "Start" action is the same as registering
for a launcher icon on a handheld. Instead of requesting an app icon in a launcher,
your app requests a voice action instead.</p>

<p>To specify the text to say after "Start", specify a <code>label</code> attribute for the activtiy
that you want to start. For example, this intent filter recognizes the
"Start MyRunningApp" voice action and launches <code>StartRunActivity</code>.
</p>

<pre>
&lt;application&gt;
  &lt;activity android:name="StartRunActivity" android:label="MyRunningApp"&gt;
      &lt;intent-filter&gt;
          &lt;action android:name="android.intent.action.MAIN" /&gt;
          &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
      &lt;/intent-filter&gt;
  &lt;/activity&gt;
&lt;/application&gt;
</pre>

<h2 id="FreeFormSpeech">Obtaining Free-form Speech Input</h2>
<p>In addition to using voice actions to launch activities, you can also call the system's
built-in Speech Recognizer activity to obtain speech input from users. This is useful to obtain input
from users and then process it, such as doing a search or sending it as a message.</p>

In your app, you call {@link android.app.Activity#startActivityForResult startActivityForResult()} using
the {@link android.speech.RecognizerIntent#ACTION_RECOGNIZE_SPEECH} action. This starts the
speech recognition activity, and you can then handle the result
in {@link android.app.Activity#onActivityResult onActivityResult()}.
<pre>
private static final int SPEECH_REQUEST_CODE = 0;

// Create an intent that can start the Speech Recognizer activity
private void displaySpeechRecognizer() {
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
// Start the activity, the intent will be populated with the speech text
    startActivityForResult(intent, SPEECH_REQUEST_CODE);
}

// This callback is invoked when the Speech Recognizer returns.
// This is where you process the intent and extract the speech text from the intent.
&#64;Override
protected void onActivityResult(int requestCode, int resultCode,
        Intent data) {
    if (requestCode == SPEECH_REQUEST_CODE && resultCode == RESULT_OK) {
        List&lt;String&gt; results = data.getStringArrayListExtra(
                RecognizerIntent.EXTRA_RESULTS);
        String spokenText = results.get(0);
        // Do something with spokenText
    }
    super.onActivityResult(requestCode, resultCode, data);
}
</pre>
