2012-07-16 79 views
0

我有和音频播放器和视频播放器的应用程序。我希望当音频播放器在后台播放时,我开始播放视频,音频播放器停止播放。Android - 视频启动时暂停音乐播放器

我可以通过广播接收器轻松实现这一点,通过在打开视频时发送意图,并在音频播放器中监听该意图并在onReceive()中停止它。

但是,我想将此功能不仅扩展到我的音频播放器,而且还扩展到所有音频播放器。所以我想如果视频播放器打开时有标准的意图发送?

回答

0

您应该使用音频焦点为此。参考RandomMusicPlayer示例android项目:

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); 
    } 
} 
相关问题