0

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

4

2 回答 2

3

获取 audioManager 并检查

audioManager.isMusicActive()

如果真实

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

并在完成录制后再次运行此代码以再次开始播放 musig

于 2012-06-19T10:02:21.743 回答
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;
        }
    }
};
于 2016-05-22T12:59:49.877 回答