我正在开发android中的音频记录应用程序。因此,如果设备音乐播放器中已播放任何背景音乐,则应在开始录制之前暂停,并且每当录制停止或暂停时应恢复背景音乐。在播放录制的音频时也应如此。任何人都可以帮我解决这个问题吗?在此先感谢.. :))
答案 0 :(得分:2)
获取audioManager并检查
audioManager.isMusicActive()
如果是真的
private void toggleNativePlayer(Context context) {
Intent intent = new Intent("com.android.music.musicservicecommand");
intent.putExtra("command", "togglepause");
context.sendBroadcast(intent);
}
在完成录制后再次运行此代码再次开始播放musig
答案 1 :(得分:0)
您可以通过请求 AudioFocus 来阻止其他应用播放音乐。当您被授予 AudioFocus 时,其他应用程序将停止播放音乐,然后您可以根据需要进行播放/录制。
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
// Request audio focus for playback
int result = am.requestAudioFocus(focusChangeListener,
// Use the music stream.
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
// other app had stopped playing song now , so you can start recording.
}
但是,只有一个AudioManager。因此,音频焦点会分配给每个请求一个接一个的应用程序。这意味着如果另一个应用程序请求音频焦点,您的应用程序将丢失它。通过您在请求音频焦点时注册的音频焦点更改侦听器( afChangeListener )的onAudioFocusChange处理程序,您将收到有关音频焦点丢失的通知。
private OnAudioFocusChangeListener focusChangeListener =
new OnAudioFocusChangeListener() {
public void onAudioFocusChange(int focusChange) {
AudioManager am =(AudioManager)getSystemService(Context.AUDIO_SERVICE);
switch (focusChange) {
case (AudioManager.AUDIOFOCUS_LOSS) :
//Lost focus. Stop recording
break;
case (AudioManager.AUDIOFOCUS_GAIN) :
//Gained AudioFocus. Start recording tasks
break;
default: break;
}
}
};