Ho una parte di riconoscimento vocale nella mia applicazione per catturare l'input vocale degli utenti.Come rilevare se un microfono è presente in Android?
Questo è quello che faccio
Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
startActivityForResult(voiceIntent, REQUEST_CODE);
Questo funziona bene sulla maggior parte dei dispositivi, ma ora, poiché le compresse sono sempre più diffuse e alcuni di loro non hanno un microfono, si genera un errore
W/dalvikvm (408): threadid = 1: filetto uscendo con eccezione non rilevata (gruppo = 0x40015560) E/AndroidRuntime ( 408): eccezione irreversibile: main E/AndroidRuntime (408): android.c ontent.ActivityNotFoundException: trovate attività per gestire Intent { atto = android.speech.action.RECOGNIZE_SPEECH (ha comparse)} E/AndroidRuntime ( 408): a android.app.Instrumentation.checkStartActivityResult (Instrumentation.java: 1408) .....
Quindi voglio rilevare se il microfono è presente prima di consentire all'utente di accedere alla funzione di input vocale. Come posso rilevare se sul dispositivo è presente un microfono.
Grazie.
Hai trovato la soluzione? – blackfyre
Perché non limitarsi a rilevare l'eccezione? Lo sto facendo in una delle mie applicazioni, quando provo ad aprire uno scanner di codici a barre. Funziona bene –
L'acquisizione di un'eccezione risolve il problema di impedire l'arresto anomalo dell'app se rileviamo l'eccezione giusta. Ma perché prendere l'eccezione quando puoi risolverlo nel modo giusto? Significa anche che devo prendere solo le eccezioni causate dal fatto che il microfono è assente o gli assenti del discorso sono assenti. Cosa succede se si è schiantato per qualche altro motivo e le eccezioni stanno catturando anche quelli? Effettuando i controlli giusti, sarò in grado di intraprendere azioni alternative quando necessario. Detto questo, se quello che stai facendo funziona perfettamente per te, potresti non aver bisogno di cambiarlo :). – achie