Это старый вопрос, но я показываю, как я решаю эту проблему. Может быть, кому-то понадобится эта помощь. Примечание: это грязный способ, но он работал для меня.
Вы можете попробовать / поймать MediaRecorderObject.start (). Вы получите исключение, если микрофон занят
MediaRecorder myAudioRecorder = new MediaRecorder();
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myAudioRecorder.setOutputFile(outputFile);
try {
myAudioRecorder.prepare();
myAudioRecorder.start();
}
catch (Exception exception) {
Toast.makeText(getApplicationContext(), "Mic in use", Toast.LENGTH_LONG).show();
}