2012-07-16 9 views
0

오디오 플레이어와 비디오 플레이어가 있고 앱이 있습니다. 오디오 플레이어가 백그라운드에서 재생 중이고 오디오 플레이어가 멈추고 싶을 때를 원합니다.Android - 동영상 시작시 음악 플레이어 일시 중지

비디오를 열 때 의도를 전송하고 오디오 플레이어에서 그 의도를 듣고 onReceive()에서 중지하여 방송 수신기로 쉽게이 작업을 수행 할 수 있습니다.

그러나 오디오 플레이어뿐 아니라 모든 오디오 플레이어에이 기능을 확장하고 싶습니다. 그래서 비디오 플레이어가 열릴 때 표준 보낼 의도가 있다고 생각 했나요?

답변

0

오디오 포커스을 사용해야합니다. RandomMusicPlayer 샘플 안드로이드 프로젝트 :

public class AudioFocusHelper { 
    AudioManager mAM; 
    MusicFocusable mFocusable; 

    private final AudioManager.OnAudioFocusChangeListener listener = new AudioManager.OnAudioFocusChangeListener() { 

     @Override 
     /** 
     * Called by AudioManager on audio focus changes. We implement this by calling our 
     * MusicFocusable appropriately to relay the message. 
     */ 
     public void onAudioFocusChange(int focusChange) { 
      if (mFocusable == null) return; 
      switch (focusChange) { 
       case AudioManager.AUDIOFOCUS_GAIN: 
        mFocusable.onGainedAudioFocus(); 
        break; 
       case AudioManager.AUDIOFOCUS_LOSS: 
       case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: 
        mFocusable.onLostAudioFocus(false); 
        break; 
       case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: 
        mFocusable.onLostAudioFocus(true); 
        break; 
       default: 
      } 
     } 
    };; 

    public AudioFocusHelper(Context ctx, MusicFocusable focusable) { 
     mAM = (AudioManager) ctx.getSystemService(Context.AUDIO_SERVICE); 
     mFocusable = focusable; 
    } 

    /** Requests audio focus. Returns whether request was successful or not. */ 
    public boolean requestFocus() { 
     return AudioManager.AUDIOFOCUS_REQUEST_GRANTED == 
      mAM.requestAudioFocus(listener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); 
    } 

    /** Abandons audio focus. Returns whether request was successful or not. */ 
    public boolean abandonFocus() { 
     return AudioManager.AUDIOFOCUS_REQUEST_GRANTED == mAM.abandonAudioFocus(listener); 
    } 
} 
관련 문제