사용자 음성 입력을 캡처하는 응용 프로그램에 음성 인식 부분이 있습니다. 마이크가 안드로이드에 있는지 감지하는 방법은 무엇입니까?
이
내가 할 것입니다Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
startActivityForResult(voiceIntent, REQUEST_CODE);
이것은 대부분의 장치에서 잘 작동하지만 지금은 태블릿이 인기를 얻고있다 그들 중 일부가 마이크를 가지고 있지 않기 때문에,이 오류가 발생합니다
W/dalvikvm (408) : 1 = threadid : 스레드 를 캐치되지 않는 예외 군 (= 0x40015560) E/AndroidRuntime ( 408)로 출사 : FATAL EXCEPTION : 메인 E/AndroidRuntime (408) android.c을 ontent.ActivityNotFoundException : android.app.Instrumentation.checkStartActivityResult (Instrumentation.java에서 : 없음 활동 의도 { 행위 = android.speech.action.RECOGNIZE_SPEECH (가 엑스트라)} E/AndroidRuntime ( 408)을 처리하기 위해 찾을 수 없습니다 : 1408) .....
그래서 나는 사용자 액세스에게 음성 입력 기능을하도록하기 전에 마이크가있는 경우 감지합니다. 장치에 마이크가 있는지 어떻게 알 수 있습니까?
감사합니다.
당신이 해결책을 찾았나요? – blackfyre
단순히 예외를 잡는 게 어떨까요? 바코드 스캐너를 열려고 할 때 응용 프로그램 중 하나에서이 작업을 수행하고 있습니다. 그건 잘 작동합니다. –
예외를 잡으면 올바른 예외를 잡으면 앱이 충돌하지 못하게하는 문제가 해결됩니다. 그러나 왜 당신이 그것을 올바르게 해결할 수있을 때 예외를 잡을 수 있습니까? 또한 마이크가 없거나 음성 의도가 없기 때문에 원인이되는 예외 만 잡아야한다는 것을 의미합니다. 다른 이유로 인해 추락 한 경우에도 예외가 발생하면 어떻게됩니까? 올바른 수표를 작성함으로써 필자는 필요할 때 대체 조치를 취할 수 있습니다. 당신이하고있는 일이 당신에게 완벽하게 작동한다면, 당신은 그것을 바꿀 필요가 없을 것이라고 말한 것입니다. – achie