如何语域我MusicPlayer应用到OnAudioFocusChangeListener(how

2019-10-17 03:16发布

我创建一个音乐播放器应用程序。

我想要:

  1. 当用户使用我的应用程序播放歌曲,那么默认的音乐播放器应该得到停止(播放)
  2. 如果其他一些应用程序启动时我的应用程序已经在玩耍,然后我的应该得到停止。

我能够使用第1点制定出音频焦点 。 但对于第二点,即处理AUDIOFOCUS_LOSS ,我遇到了一些问题。

问题:我已经试过了文档,但我应该怎么注册我的音乐播放器服务来检测AudioFocus已丢失。

对于第一点,这里是代码:

if (reqAudioFocus()) {
    mPlayer.start();
}

private boolean reqAudioFocus() {
    boolean gotFocus = false;
    int audioFocus = am.requestAudioFocus(null, AudioManager.STREAM_MUSIC,
            AudioManager.AUDIOFOCUS_GAIN);
    if (audioFocus == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
        gotFocus = true;
    } else {
        gotFocus = false;
    }
    return gotFocus;
}

对于第二点我到目前为止的代码:

//Class implements OnAudioFocusChangeListener

@Override
public void onAudioFocusChange(int focusChange) {
    /*
     * TODO : Call stopService/onDestroy() method. Pause the track; Change
     * the Play/Pause icon; save the track postion for seekTo() method.
     */
    if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) {
        // TODO: Pause playback
        if (mPlayer.isPlaying()) {
            mPlayer.pause();
        }
    } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
        // TODO: Resume Playback
        if (!mPlayer.isPlaying()) {
            mPlayer.start();
        }
    } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
        // TODO: stop playback.
        // am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);
        am.abandonAudioFocus(afChangeListener);
    }

}

现在,如何让我的应用程序调用onAudioFocusChange()当应用程序失去焦点的音频。

谢谢

Answer 1:

第一个参数requestAudioFocusOnAudioFocusChangeListener实例。 你传递null的时刻。 假设你已经实现reqAudioFocusonAudioFocusChanged在同一类,通过this来代替null应该是足够的。



文章来源: how to resgister my MusicPlayer App to OnAudioFocusChangeListener