私はユーザーの音声入力をキャプチャするために私のアプリケーションに音声認識の部分を持っています。 アンドロイドにマイクが存在するかどうかを検出するにはどうすればよいですか?
この
は私が何をすべきかですIntent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
startActivityForResult(voiceIntent, REQUEST_CODE);
これは、デバイスのほとんどで正常に動作しますが、今錠剤が人気を集めている、そのうちのいくつかは、マイクを持っていないので、それはエラーをスロー
W/dalvikvm(408):= 1スレッドID:致命的な例外:メイン E/AndroidRuntime(408): android.cスレッドがキャッチされない例外 (グループ= 0x40015560)E/AndroidRuntime( 408)で終了しますontent.ActivityNotFoundException: android.app.Instrumentation.checkStartActivityResult(Instrumentation.javaで: 全く活性は、インテント{ 行為= android.speech.action.RECOGNIZE_SPEECH (持つエクストラ)} E/AndroidRuntime( 408)を処理することが見出されていません。 1408) .....
だから、私は、ユーザーが音声入力機能にアクセスできるようにする前にマイクが存在しているかどうかを検出します。デバイスにマイクが存在するかどうかをどのように検出できますか?
ありがとうございます。
あなたが解決策を見つけますか? – blackfyre
なぜ単に例外をキャッチしていませんか?バーコードスキャナーを開こうとすると、自分のアプリケーションの1つでこれをやっています。それはうまく動作します。 –
例外をキャッチすると、適切な例外をキャッチするとアプリがクラッシュするのを防ぐという問題が解決されます。しかし、なぜあなたはそれを正しい方法で解決することができます例外をキャッチですか?また、マイクが欠けているかスピーチの意図がないため、原因となっている例外だけを捕まえなければならないということも意味します。何か他の理由でクラッシュした場合、例外もそれらをキャッチしていますか?適切な点検をすることで、必要なときに代替行動を取ることができます。あなたがしていることがあなたのために完璧に働くならば、あなたはそれを変更する必要はないかもしれないと言っています。 – achie