如何在android中录制音频时暂停背景音乐

时间:2012-06-19 09:47:54

标签: android

我正在开发android中的音频记录应用程序。因此,如果设备音乐播放器中已播放任何背景音乐,则应在开始录制之前暂停,并且每当录制停止或暂停时应恢复背景音乐。在播放录制的音频时也应如此。任何人都可以帮我解决这个问题吗?在此先感谢.. :))

2 个答案:

答案 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;
        }
    }
};