Как определить, присутствует ли микрофон в андроиде?

У меня есть функция распознавания голоса в моем приложении для захвата голосового ввода пользователей.

Вот что я делаю

Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); startActivityForResult(voiceIntent, REQUEST_CODE); 

Это отлично работает на большинстве устройств, но теперь, когда планшеты становятся популярными, а некоторые из них не имеют микрофона, это вызывает ошибку

W / dalvikvm (408): threadid = 1: поток, выходящий с неперехваченным исключением (группа = 0x40015560) E / AndroidRuntime (408): FATAL EXCEPTION: main E / AndroidRuntime (408): android.content.ActivityNotFoundException: Intent {act = android.speech.action.RECOGNIZE_SPEECH (имеет дополнительные функции)} E / AndroidRuntime (408): at android.app.Instrumentation.checkStartActivityResult (Instrumentation.java:1408) …..

Поэтому я хочу определить, присутствует ли микрофон, прежде чем я позволю пользователю получить доступ к функции голосового ввода. Как определить, присутствует ли микрофон на устройстве.

Спасибо.

Solutions Collecting From Web of "Как определить, присутствует ли микрофон в андроиде?"

 PackageManager pm = getPackageManager(); boolean micPresent = pm.hasSystemFeature(PackageManager.FEATURE_MICROPHONE); 

Справочник по API Android: hasSystemFeature

Я добавил еще один ответ, но это лишь ссылка, которая была сломана через некоторое время, но вот правильный ответ, который включает в себя код.

Это код, который вам нужно использовать для запуска намерения распознавателя голоса. Это проверяет, имеются ли какие-либо намерения для обработки намерения распознавания речи.

 PackageManager pm = getPackageManager(); List<?> activities = pm.queryIntentActivities( new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); if (activities.size() > 0) { Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); voiceIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5); startActivityForResult(voiceIntent, REQUEST_CODE); Toast toast = Toast.makeText(this, "Loading Voice recognizer...", Toast.LENGTH_SHORT); toast.show(); } else { Toast.makeText(this, "This action is not available on this device.", Toast.LENGTH_SHORT).show(); } 

В верхней части этого вы также проведете еще одну проверку, чтобы убедиться, что сам микрофон присутствует на устройстве.

 if (getPackageManager().hasSystemFeature( "android.hardware.microphone")) { //Microphone is present on the device }