我正在开发一个用于VoIP通话的Android应用程序,并有以下问题:
如果像Hangouts或Skype这样的任何其他应用已经启用了呼叫,那么即使我从我的应用程序调用了AudioManager的requestAudioFocus API,麦克风/录音控件也会保留。播放控制来到我的应用程序,但录制控件保留在早期的应用程序中。
Android中是否有办法请求录制焦点?
答案 0 :(得分:1)
就像相机访问一样,一次只有一个应用可以访问麦克风。在这种情况下您可以处理的只是请求麦克风,如果您没有得到它,请通知用户相关问题 - “Microphone is used by other application
或Microphone is busy
”
您可以使用以下代码检查麦克风可用性 -
private boolean validateMicAvailability(){
Boolean available = true;
AudioRecord recorder =
new AudioRecord(MediaRecorder.AudioSource.MIC, 44100,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_DEFAULT, 44100);
try{
if(recorder.getRecordingState() != AudioRecord.RECORDSTATE_STOPPED ){
available = false;
}
recorder.startRecording();
if(recorder.getRecordingState() != AudioRecord.RECORDSTATE_RECORDING){
recorder.stop();
available = false;
}
recorder.stop();
} finally{
recorder.release();
recorder = null;
}
return available;
}
您可以查看 here
的独立帖子