2012-07-16 78 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); 
    } 
} 
相關問題