2016-06-11 24 views
2

system voice command docsによれば、を開くことができます。音声コマンドを使用したアプリケーションです。例えばOK Google - open foobar。また、ドキュメントによると、このはデフォルトで動作します。特定の意図はありません。
私のサンプル開発アプリケーションでは、これは機能しません。私は、インテントフィルターにアクションとカテゴリの順列の組み合わせをいくつか追加しようとしましたが、これまでのところ運がありません。
私は最小SDKを23、6.0.1のデバイスでテストしています。Androidオープンアプリケーションの音声対話を有効にする方法

この場合、有効にする必要がある新しい空のアクティビティプロジェクトの変更は何ですか?

+0

は、それが動作しません応用? – brandall

+0

はい。他のほとんどの一般的なアプリケーションが動作します。何人かは、私がそれを可能にするために何らかのコーディングが必要と思うようにしています。 –

+0

私はアプリケーション名の前に 'open'を含めるように私の答えを編集しました。私はあなたが間違いを見つけたと思う! – brandall

答えて

0

私が知っている限り、Googleはインストールされたアプリケーションのリストを単純に反復し、という完全一致が見つかると、対応するアプリケーションを開きます。これをテストする

、これはあなたのアプリケーションを開いた場合、それは単にあなたのアプリケーション名の音声学のケースである、またはGoogleがそれの発音をどのように解釈するか、次のIntent

 final String PACKAGE_NAME_GOOGLE_NOW = "com.google.android.googlequicksearchbox"; 
     final String GOOGLE_NOW_SEARCH_ACTIVITY = ".SearchActivity"; 
     final String APP_NAME = "Open " +getString(R.string.app_name); 

     final Intent startMyAppIntent = new Intent(Intent.ACTION_WEB_SEARCH); 
     startMyAppIntent.setComponent(new ComponentName(PACKAGE_NAME_GOOGLE_NOW, 
       PACKAGE_NAME_GOOGLE_NOW + GOOGLE_NOW_SEARCH_ACTIVITY)); 

     startMyAppIntent.putExtra(SearchManager.QUERY, APP_NAME); 
     startMyAppIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

     try { 
      startActivity(startMyAppIntent); 
     } catch (final ActivityNotFoundException e) { 
      e.printStackTrace(); 
     } 

を使用しています。

アプリケーションのマニフェスト(または他のグローバルに利用可能な設定ファイル)に「音声ラベル」を追加する必要があると思うので、一意の名前が十分ではない場合はGoogleがアプリケーションを開くことができます音声検索結果を生成する。

これは、あなたのアプリケーションを開き、次のようにあなたが正しくマニフェストでアプリケーション名を定義していることを確認していない場合:あなたは `開いclock`または別の発音に聞こえるが、現在インストールされていると言うとき

<application 
    android:label="@string/app_name" 
+0

brandallありがとうございます - それは厳密に一致している必要があるように見えます。 –

関連する問題