因此,我制作了一个音乐应用,该音乐应用播放类似于广播的流,但是我注意到当我的应用正在播放音频并且用户决定在Whatsapp上发送语音便笺时,我的应用不会停止播放音频。我已经实现了电话功能,如果有电话到达,它就会停止。
有什么想法我会怎么做?
我正在研究Audio Focus,但是我认为这不是我所需要的。
答案 0 :(得分:0)
您需要按以下说明管理音频焦点:https://developer.android.com/guide/topics/media-apps/audio-focus
在有人要求音频焦点并开始播放一些音频的同时,将举行Audio Focus,同时向所有正在收听Audio Focus更改的所有人广播“系统通知”,以便他们停止操作(在您的录音中例如)让音频成为唯一的音频。 此“锁定”可以是“排他”(只有储物柜可以播放音频)或“与其他音频混合”(两种音频都可以一起播放/录制,但较新的音量或优先级更高)。
答案 1 :(得分:-1)
我还没有看到任何面向回调的方法来解决此问题,但是this SO question:
上发布了一个很棒的解决方案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;
}
只有这样,我才能看到这项工作是在后台定时任务线程上对其进行轮询的。 This post对于如何实现这一点有两个答案,并且肯定会发现很多其他示例。
也许有一种方法可以从openSL添加回调方法,以便在状态改变时可以回避音乐音量或所需的音量,但是似乎人们正在努力实现这一目标。