12

Voice Interaction APIのGoogle CodeLabs の例では、次のインテント フィルターを使用してアクティビティが定義されています (手順 6 を参照)。

<intent-filter>
    <action android:name="android.media.action.STILL_IMAGE_CAMERA" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.VOICE" />
</intent-filter>

「OK Google、セルフィーを撮って」という音声コマンドを使用すると、インテントがandroid.intent.category.VOICEカテゴリで起動されます。これは LogCat で次のように表示されます。

02-26 15:32:42.423 779-6923/? I/ActivityManager: START u0 {act=android.media.action.STILL_IMAGE_CAMERA cat=[android.intent.category.VOICE] flg=0x18000000 pkg=com.example.android.voicecamera cmp=com.example.android.voicecamera/.TakePictureActivity (has extras)} from uid 10027 on display 0

私自身のアプリでは、次のインテント フィルターを音声検索可能なアクティビティに追加しました。

<intent-filter>
    <action android:name="com.google.android.gms.actions.SEARCH_ACTION" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.VOICE" />
</intent-filter>

ただし、「OK Google、[my app] でコンピューターを検索してください」と入力すると、音声カテゴリがインテントに追加されません。

02-26 16:17:26.722 779-14786/? I/ActivityManager: START u0 {act=com.google.android.gms.actions.SEARCH_ACTION pkg=com.my.pkg cmp=com.my.pkg/.activity.VoiceSearchActivity (has extras)} from uid 10027 on display 0

このカテゴリはインテントで正しく設定されておらず、Activity.isVoiceInteraction()両方Activity.isVoiceInteractionRoot()とも を返しているためfalseです。

なぜこれが起こっているのか、誰か説明できますか?

ありがとう!

4

0 に答える 0