음악 플레이어 응용 프로그램을 만들고 있습니다.내 MusicPlayer 응용 프로그램을 OnAudioFocusChangeListener에 등록하는 방법
내가 원하는 :
- 사용자가 내 응용 프로그램을 사용하여 노래를 재생 한 다음 기본 음악 플레이어는
- 그리고 중단을하셔야합니다 (재생) 다른 응용 프로그램 내 응용 프로그램이 이미있는 경우 재생을 시작하는 경우 그때 내 연주는 멈춰야합니다.
Audio Focus을 사용하여 1 위를 해결할 수 있습니다. 두 번째 사항 인 AUDIOFOCUS_LOSS
처리 중 일부 문제가 있습니다.
문제점 : 필자는 설명서를 따라 왔지만 AudioFocus가 손실되었음을 감지하기 위해 음악 플레이어 서비스를 어떻게 등록해야합니까? 응용 프로그램이 잃을 때 내 응용 프로그램 호출 onAudioFocusChange()
을 만드는 방법 이제
//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);
}
}
: 지금까지 2 점 내 코드에 대한
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;
}
:
1 포인트를 들어, 여기에 코드입니다 오디오 포커스.
감사
는