2

既に、別のthreadを見たところ、RecognizerIntentでのアクティビティがsingleInstance起動モードのアクティビティから起動された場合、正常に動作していないことが記載されています。だから、私の選択肢が何であるか知りたい。singleInstance起動モードのアクティビティからVoice Recognitionアクティビティを正しく起動するにはどうすればよいですか?

私のアプリケーションはイベントを待ち受け、このイベントが発生すると、ユーザーが別のアプリケーションを使用中であっても、警告ダイアログを表示します。他のquestionsから、これを行う一般的な方法はsingleInstance起動モードでアクティビティを起動することであることがわかりました。しかし、いったんこの警告ダイアログがポップアップすると、私はRecognizerIntentを使用してテキスト処理にスピーチを行う必要があります。しかし、音声入力ダイアログはただちに入力を待つことはなく、onActivityResult()はただちに呼び出されます。私の警告ダイアログが "singleInstance"以外の起動モードを持つアクティビティからポップアップした場合、正常に動作します。

この問題を解決する他の方法はありますか?

+0

この[解決策](http://stackoverflow.com/questions/6316937/how-can-i-use-speech-recognition-without-the-annoying-dialog-in-android-phones)は、上記の問題の周り。 – user492501

答えて

0

このようにコードを実行してみましょう: - 以下のことouside

public void onClick(View v) { 
    if (v.getId() == R.id.btn_speak) { 
     startVoiceRecognitionActivity(); 
    } 
} 


private void startVoiceRecognitionActivity() { 
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
      RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo"); 
    startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); 

//Run a loop checking whether the list is empty or not:- 
    while(activities.isEmpty()){ 
     //wait  
    } 
//Now run your alert dialog box 
} 

を記述する必要がありながら、私はDellXCD35アンドロイド2.3上でそれをテストしている)(コードの上

List<ResolveInfo> activities = pm.queryIntentActivities(
      new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); 
    if (activities.size() != 0) { 
     speakButton.setOnClickListener(this); 
    } else { 
     speakButton.setEnabled(false); 
     speakButton.setText("Recognizer not present"); 
    } 

はのonCreate内に記述する必要があります.3あなたが選択したいと思うようにあなたのリストの中のテキストのリストを得ると、それは完璧にうまくいっています。

関連する問題