2012-08-07 2 views
0

음악 플레이어 응용 프로그램을 만들고 있습니다.내 MusicPlayer 응용 프로그램을 OnAudioFocusChangeListener에 등록하는 방법

내가 원하는 :

  1. 사용자가 내 응용 프로그램을 사용하여 노래를 재생 한 다음 기본 음악 플레이어는
  2. 그리고 중단을하셔야합니다 (재생) 다른 응용 프로그램 내 응용 프로그램이 이미있는 경우 재생을 시작하는 경우 그때 내 연주는 멈춰야합니다.

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 포인트를 들어

, 여기에 코드입니다 오디오 포커스.

감사

답변

1

requestAudioFocus의 첫 번째 인수는 OnAudioFocusChangeListener 인스턴스입니다. 현재 null을 전달 중입니다. 같은 클래스에 reqAudioFocusonAudioFocusChanged을 구현했다고 가정하면 null 대신 this을 전달하면 충분합니다.

관련 문제