2016-11-09 1 views
1

私は電話番号の呼び出し、他のアプリケーションのオープン、設定の切り替えなど多くのイベントを処理するために音声認識を使用するアプリケーションを開発しようとしています。音声コマンドを使用してアンドロイドで別のアプリケーションを開きますか?

今まで私が行ったことは、 、私はこだわっています場所は、今まで他のアプリケーション

私のコードを開く方法です:

今、あなたは、私が最初の単語として「オープン」ケースを使用することができます参照し、それを続けることができるよう
private void promptSpeechInput() { 
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); 
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech Prompt"); 
    try { 
     startActivityForResult(intent, REQ_CODE_SPEECH_INPUT); 
    } catch (ActivityNotFoundException a) { 
     Toast.makeText(getApplicationContext(), "Error Occured Try again",Toast.LENGTH_SHORT).show(); 
    } 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode,resultCode,data); 

    switch(requestCode) { 
     case REQ_CODE_SPEECH_INPUT : { 
      if (resultCode == RESULT_OK && null != data) { 
       ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
       txtSpeechInput.setText(result.get(0)); 
       String arr[] = result.get(0).split(" ",2); 
       String firstWord = arr[0]; 
       String secondWord = arr[1]; 
       switch(firstWord) { 
        case "call": 
         callPhone(secondWord); 
         break; 
        case "open": 


       } 

      } 
     } 
    } 
} 

。しかし、私はどのように現在電話にインストールされているすべてのアプリのリストを取得するか分からない。 親切にお手伝いしますか?

答えて

0

のGetリスト:

final Intent Intent = new Intent(Intent.ACTION_MAIN, null); 
Intent.addCategory(Intent.CATEGORY_LAUNCHER); 
final List<ResolveInfo> packageAppsList = context.getPackageManager().queryIntentActivities(Intent, 0); 

ResolveInfo上のアプリを開きます関連するデータを取得し、以下続きを読む:

for (ResolveInfo res : packageAppsList){ 
    //print it to logger etc. 
    res.loadLabel(getPackageManager().toString(); 

https://developer.android.com/reference/android/content/pm/ResolveInfo.html

+0

'ResolveInfo {151f1374 com.snapchat.android/.LandingPageActivity m = 0x108000}'。 List packageAppsListには、上に挙げたような様々なタプルが含まれています。どのように私はこの情報からアプリケーション名を抽出すべきですか?どうもありがとう。 –

+0

@XavierJacob私の編集を参照してください – sup4eli

+0

その編集に感謝します。それは私の質問を完全に解決しました。 –

0

関連質問:How to enable Android Open Application voice interaction

そこからの引用:「インストールされているアプリケーションのリストの上に私の知る限り、Googleは単に反復処理し、それは完全な一致が見つかった場合、対応するアプリケーションを開きます」

よろしく、デバイスにインストールされているすべてのアプリケーション/活動の

+0

リンクをありがとう、私はすでにそれを見ていましたが。私が欲しいのは、SearchManagerが自分のアプリで行うことです。今すぐ最初にGoogleを開き、結果を表示して、それを開くかどうかを尋ねます。 –

関連する問題