Mam część rozpoznawania głosu w mojej aplikacji do przechwytywania głosu użytkownika.Jak wykryć obecność mikrofonu w systemie Android?
To co robię
Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
startActivityForResult(voiceIntent, REQUEST_CODE);
Działa to dobrze na większości urządzeń, ale teraz, ponieważ tabletki są coraz bardziej popularne, a niektóre z nich nie mają mikrofonu, to zgłasza błąd
w/dalvikvm (408) ThreadID = 1: nić wyjściu z nieprzechwyconego wyjątkiem (grupa = 0x40015560) E/Android Runtime ( 408) krytyczny wyjątek: główny E/Android Runtime (408): android.c ontent.ActivityNotFoundException: brak aktywności stwierdzono, że uchwyt Intent { act = android.speech.action.RECOGNIZE_SPEECH dodatki umieszczone (HAS)} E/Android Runtime ( 408) w android.app.Instrumentation.checkStartActivityResult (Instrumentation.java: 1408) .....
Chcę więc sprawdzić, czy mikrofon jest obecny, zanim zezwolę użytkownikowi na dostęp do funkcji wprowadzania głosowego. Jak wykryć obecność mikrofonu w urządzeniu?
Dziękuję.
Znalazłeś rozwiązanie? – blackfyre
Dlaczego po prostu nie złapać wyjątku? Robię to w jednej z moich aplikacji, kiedy próbuję otworzyć skaner kodów kreskowych. To działa dobrze. –
Złapanie wyjątku rozwiązuje problem zapobiegania awariom aplikacji, jeśli wykryjemy właściwy wyjątek. Ale dlaczego złapać wyjątek, kiedy możesz go rozwiązać we właściwy sposób? Oznacza to również, że muszę złapać tylko te wyjątki, które są przyczyną, ponieważ mikrofon jest nieobecny lub nie ma mowy o intencji. Co jeśli rozbiłoby się z jakiegoś innego powodu, a wyjątki też ich złapią? Dokonując odpowiednich kontroli, będę w stanie podjąć alternatywne działania w razie potrzeby. Powiedziawszy, że jeśli to, co robisz, działa idealnie, nie musisz go zmieniać :). – achie