gpt4 book ai didi

java - 如何将我的音乐播放器应用程序注册到 OnAudioFocusChangeListener

转载 作者:行者123 更新时间:2023-11-30 04:04:55 28 4
gpt4 key购买 nike

我正在创建一个音乐播放器应用。

我要:

  1. 当用户使用我的应用播放歌曲时,默认音乐播放器应该停止(正在播放)
  2. 如果其他应用程序开始播放而我的应用程序已经在播放,那么我的应用程序应该停止。

我可以使用 Audio Focus 计算出第一个点.但是对于第二点,即处理 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()

谢谢

最佳答案

requestAudioFocus 的第一个参数是一个 OnAudioFocusChangeListener 实例。您现在正在传递 null。假设您已经在同一个类上实现了 reqAudioFocusonAudioFocusChanged,传递 this 而不是 null 就足够了。

关于java - 如何将我的音乐播放器应用程序注册到 OnAudioFocusChangeListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11839742/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com