2

이미 thread을보고 있는데, 이는 SingleInstance 실행 모드가있는 활동에서 RecognizerIntent를 사용한 활동이 올바르게 작동하지 않는다고 언급했습니다. 그래서 나는 나의 대안이 무엇인지 알고 싶다.singleInstance 실행 모드로 활동에서 음성 인식 활동을 올바르게 시작하는 방법은 무엇입니까?

내 용도는 다음과 같습니다. 응용 프로그램에서 이벤트를 수신하고이 이벤트가 발생하면 사용자가 다른 응용 프로그램을 사용하고있는 경우에도 경고 대화 상자를 표시합니다. 다른 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

하면 코드이 방법을 실행 해보십시오 : - 코드 위

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() 안에 작성해야 아래에 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을 테스트 한 .3 당신이 당신이 원하는 것을 선택할 때까지 목록의 텍스트 목록을 얻으면 완벽하게 잘 작동합니다.