2012-08-24 8 views
7

내 응용 프로그램에서 Android 음성 인식 서비스를 사용합니다.Android 음성 인식 서비스가 사용 중입니까?

두 명의 클라이언트가 동시에 요청을 보내려고 할 때 (예를 들어 사용자가 앱에서 음성 검색을 시작한 다음 검색이 여전히 활성화되어있는 동안 다른 애플리케이션으로 전환 한 후 다른 검색을 시작한 경우) 서비스가 작동을 멈 춥니 다.

진행중인 음성 인식 세션이 있으므로 다른 음성 인식 세션을 시작할 수 없다는 것을 확인하는 방법이 있습니까?

답변

1

당신은 아마의 OnError 처리기에서 ERROR_RECOGNIZER_BUSY을 트래핑한다 : 당신은 (? 만) 가장 가능성이 듣기를 시작하는 요청이를 받으려고하는

@Override 
public void onError(int error) { 
    switch (error) { 
    case SpeechRecognizer.ERROR_RECOGNIZER_BUSY: 
     // do something reasonable 
    … 
    } 
} 

; 불행하게도 나는 시도하지 않고이 조건을 테스트 할 방법을 모른다. (예를 들어, 다른 프로세스의 청취자가 마이크 버튼을 제거하기 위해 활성화되어 있다고 미리 감지 할 수 있다고 생각하지 않는다.)

(듣기를 멈 추면, d) 다른 프로세스의 청취자를 어떻게 든 죽이려고 한 경우에만이 오류가 발생합니다.

0

이 오류 (ERROR_RECOGNIZER_BUSY)가 표시되어 패키지가 의도하지 않은 것임을 알게되었습니다. 방금 추가 한이 줄은 이제 작동합니다.

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
... 
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, context.getPackageName());