システムの音声操作は、アシスタントとの統合に推奨されるパスではなくなりました。ビルドの代替について詳しくは、App Actions のドキュメントをご覧ください。

システムの音声操作を使ってみる

Google 音声操作で、音声による入力リクエストと入力アクションのリクエストを認識し、それらに Android インテントを作成します。Play Music や Keep などのアプリは、これらのインテントを受け取り、リクエストされた操作を実行できます。アプリで、以下のアクションの一部を宣言することもできます。

  1. インテント フィルタを定義する
  2. アプリでインテントを処理する
  3. アプリの完了ステータスを更新する

サポートされているシステム アクションの詳細なリストについては、システム アクションのリファレンスをご覧ください。

ステップ 1: インテント フィルタを定義する

アプリが 1 つ以上のシステム アクションをサポートしていることを示すには、アプリのマニフェスト ファイルにアクションごとにインテント フィルタを追加します。

たとえば、アプリがアラームを設定できる場合は、マニフェスト ファイルに次のインテント フィルタを追加します。

<activity ...>
    <intent-filter>
        <action android:name="android.intent.action.SET_ALARM"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

アラームの設定インテントを処理できるアプリが複数ある場合、Google Voice Actions ではアクションを選択するためのアプリを選択できます。

アプリを呼び出している Google の音声操作を示す画像

図 1: 音声操作を使用して、ユーザーはシステム アクションをサポートするアプリを選択できます。

ステップ 2: アプリ内でインテントを処理する

インテントを受け取ったアプリは、そのアクションを実行する必要があります。この例では、アラームを設定する必要があります。以下のサンプルコードをご覧ください。

ステップ 3: アプリの完了ステータスを更新する

App Indexing API を使用すると、完了したアプリのアクティビティを Google に送信できます。Google アプリは、Google アプリからのクエリ オートコンプリートを使用して、後でユーザーにコンテンツを再表示させることができます。

アプリがアクションを実行した後、適切なアクション タイプ(Action.TYPE_ADD など)を指定して AppIndexApi.end() メソッドを呼び出します。

また、アクションが正常に完了したかどうかを報告する適切なアクション ステータス タイプを設定する必要もあります。setActionStatus メソッドを使用して、特定のアクションのステータスを設定できます。

ここでは、受信インテントを処理し、App Indexing API を使用してユーザーがアラームを正常に設定したことを報告する方法を示す完全な例を示します。

public class MainActivity extends Activity {

    private static final Uri ALARM_URI = Uri.parse("android-app://com.myclockapp/set_alarm_page");

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...

        // Get the intent
        Intent intent = getIntent();
        if (AlarmClock.ACTION_SET_ALARM.equals(intent.getAction())) {
            if (intent.hasExtra(AlarmClock.EXTRA_HOUR)) {
                // Step 2: get the rest of the intent extras and set an alarm
                ...
            }

            // Step 3: report the action through the App Indexing API
            Thing alarm = new Thing.Builder()
                    .setName("Alarm for 4:00 PM")
                    .setDescription("Alarm set for 4:00 PM, with the 'Argon' ringtone"
                                    + " and vibrate turned on.")
                    .setUrl(APP_URI)
                    .build();

            Action setAlarmAction = new Action.Builder(Action.TYPE_ADD)
                    .setObject(alarm)
                    .setActionStatus(Action.STATUS_TYPE_COMPLETED)
                    .build();

            AppIndex.AppIndexApi.end(mClient, setAlarmAction);
        }
    }

    ...

}

システム アクションのリファレンス

Google 音声操作は、次の表に示すアクションのいずれかを認識すると、インテントを呼び出します。

アラームの動作

アクション コマンドの例
アラームを設定する 午前 6 時にアラームを設定
タイマーの設定 タイマーを 5 分にセットして

コミュニケーション アクション

アクション コマンドの例
通話を開始する 555-5555 まで電話
スターバックスに電話
お母さんに電話
ボイスメールに電話

[Call] アクションは、電話機能が組み込まれたデバイス(スマートフォンなど)と、ダイヤル機能をサポートするアプリ(VoIP アプリ搭載タブレットなど)でのみトリガーされます。

フィットネス アクション

アクション コマンドの例
サイクリングを開始/停止する サイクリングを開始
ランニングを開始 / 停止 ランニングを開始
ワークアウトを開始/停止する ワークアウトを開始
心拍数を表示 心拍数を表示
歩数を表示 歩数を表示

ローカル アクション

アクション コマンドの例
タクシーを予約 タクシーを予約する

タクシーを予約する操作は、Android Wear でのみトリガーされます。

メディア操作

アクション コマンドの例
検索から音楽を再生する マイケル ジャクソン ビリー ジーンズを再生
クラシックを再生
壁を消して
vnstreamer でピンク色のフロイドを再生
写真の撮影 写真を撮る
動画を撮影する 動画を撮影

未対応のアクション

アクション コマンドの例
URL を開く twitter.com を開く
アプリを開く open twitter(デフォルトでは機能します。特定のインテントではありません。)

仕事効率化アクション

アクション コマンドの例
メモを取る メモを取って食料品を買う

検索の操作

アクション コマンドの例
特定のアプリを使用した検索 YouTube で猫の動画を検索して