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

如何在android中录制音频时暂停背景音乐,android,Android,我正在用android开发一个录音应用程序。因此,如果任何背景音乐已在设备音乐播放器中播放,则应在开始录制之前暂停,并且无论何时停止或暂停录制,背景音乐都应恢复。在播放录制的音频时也应该如此。有谁能帮我渡过这个难关吗?提前感谢..:)联系audioManager并查看 audioManager.isMusicActive() 如果是真的 private void toggleNativePlayer(Context context) { Intent intent = new Inte

我正在用android开发一个录音应用程序。因此,如果任何背景音乐已在设备音乐播放器中播放,则应在开始录制之前暂停,并且无论何时停止或暂停录制,背景音乐都应恢复。在播放录制的音频时也应该如此。有谁能帮我渡过这个难关吗?提前感谢..:)

联系audioManager并查看

audioManager.isMusicActive()
如果是真的

private void toggleNativePlayer(Context context) {
    Intent intent = new Intent("com.android.music.musicservicecommand");
    intent.putExtra("command", "togglepause");
    context.sendBroadcast(intent);
}

录制完成后,再次运行此代码以再次开始播放音乐

获取audioManager并检查

audioManager.isMusicActive()
如果是真的

private void toggleNativePlayer(Context context) {
    Intent intent = new Intent("com.android.music.musicservicecommand");
    intent.putExtra("command", "togglepause");
    context.sendBroadcast(intent);
}

录制完成后,再次运行此代码以再次开始播放音乐

您可以通过请求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.
}
但是,只有一个音频管理器。因此,音频焦点会一个接一个地分配给每个请求音频焦点的应用程序。这意味着如果另一个应用程序请求音频焦点,您的应用程序将丢失它。在请求音频焦点时,您将通过注册的音频焦点更改侦听器(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;
        }
    }
};

您可以通过请求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.
}
但是,只有一个音频管理器。因此,音频焦点会一个接一个地分配给每个请求音频焦点的应用程序。
这意味着如果另一个应用程序请求音频焦点,您的应用程序将丢失它。在请求音频焦点时,您将通过注册的音频焦点更改侦听器(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;
        }
    }
};

不再工作了。谷歌现在正在减少此类广播。不再有效。谷歌现在正在减少这类广播。谢谢你的回答,但是,我怎样才能恢复以前的音乐?好的,这对我来说很有效:谢谢你的回答,但是,我怎样才能恢复以前的音乐?好的,这对我来说很有效: