我目前正在编程一个使用麦克风查询声级的应用程序。我正在使用AlarmManager来每分钟查询声音级别。我面临的问题是我发现如果我正在使用另一个使用麦克风的应用程序(例如分贝级读取器),我的应用程序将因为麦克风不可用而崩溃。有没有办法检查麦克风是否正在使用?如何检查android麦克风是否可用?
1
A
回答
2
尝试捕捉异常,因为当您尝试使用麦克风时可能会遇到异常,您可以处理它。
是否正在使用麦克风“的麦克风实际上将准备精美即使麦克风正在使用中”
OR 此代码段可能会给你一个想法
//returns whether the microphone is available
public static boolean getMicrophoneAvailable(Context context) {
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
recorder.setOutputFile(new File(context.getCacheDir(), "MediaUtil#micAvailTestFile").getAbsolutePath());
boolean available = true;
try {
recorder.prepare();
recorder.start();
}
catch (Exception exception) {
available = false;
}
recorder.release();
return available;
}
0
我也想检测或不。我的解决方案是使用AudioManager获取当前模式。
AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if (am.getMode() == AudioManager.MODE_NORMAL){
//microphone is available.
}
其它方式使用像MODE_IN_COMMUNICATION,MODE_IN_CALL,请 https://developer.android.com/reference/android/media/AudioManager.html#MODE_NORMAL
+0
您的解决方案不正确。即使麦克风被某些应用程序(如录音机)捕获,模式仍可能处于MODE_NORMAL模式。 –
相关问题
- 1. 如何检查麦克风是否可用于录音
- 2. 如何检测新麦克风是否可用?
- 3. 检查蓝牙设备是否有麦克风Android
- 4. 如何检查麦克风是否插入/拔出
- 5. 如何检查麦克风是否插入iPhone?
- 6. 检测耳机是否有麦克风
- 7. 检测麦克风是否开启
- 8. IOS录音,如何在麦克风播放忙碌前检查麦克风/播放是否正常
- 9. 如何检查麦克风是否被任何背景应用程序使用
- 10. 如何知道麦克风是否在使用Android
- 11. 如何在Android上使用麦克风
- 12. 如何检测麦克风是否存在
- 13. 检查相机或麦克风是否连接到电脑
- 14. 如何检测设备中的麦克风是否可用(iPhone/iPad) - 目标C
- 15. 如何检查麦克风的增益是否允许使用C#
- 16. 检测打击在Android的麦克风
- 17. 带麦克风的Android哨音检测
- 18. 检测麦克风/耳机?
- 19. 如何检测外部麦克风是否插入(实时)在Android上?
- 20. 如何检查麦克风和扬声器是否来自同一张声卡?
- 21. 有什么方法可以检查麦克风是否有输入?
- 22. MonoTouch检测iPhone上是否启用麦克风
- 23. 的Android流麦克风
- 24. Android麦克风问题
- 25. 是否支持任何Android上的麦克风类?
- 26. 如何关闭麦克风?
- 27. 如何让麦克风webview
- 28. Android - 如何检查一些其他应用程序正在使用麦克风
- 29. Android - 如何获取所有可用的麦克风?
- 30. Loudtalks麦克风
感谢您的想法。即使麦克风正在使用,麦克风实际上也会做好准备。所以我所做的就是捕获start所抛出的异常。如果您将此添加到您的答案,我会接受它。 – rabz100
我编辑了我的答案,谢谢。 –