2017-07-07 106 views

回答

0

您将不得不实施Mediaplayer的AudioFocus。要做到这一点,你需要得到一个AudioManager的实例。一旦你有了实例,你就可以使用requestAudioFocus

AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);  
// Request audio focus for playback 
int result = am.requestAudioFocus(focusChangeListener, 
// Use the music stream. 
AudioManager.STREAM_MUSIC, 
// Request permanent focus. 
AudioManager.AUDIOFOCUS_GAIN); 

if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { 
     Log.d("AudioFocus", "Audio focus received"); 
     return true; 
    } else { 
     Log.d("AudioFocus", "Audio focus NOT received"); 
     return false; 
    } 
} 

AudioFocus被分配给每个请求它的应用程序。当您的应用程序获得焦点时,它可以通过一个AudioManager.OnAudioFocusChangeListener,它提供焦点更改发生时的回调。

如果应用程序获得音频焦点,并且另一个应用程序请求音频焦点,则重点将会提供给其他应用程序。 Android会通过OnAudioFocusChangeListener通知您的应用程序,以便您的应用程序可以响应此更改。要接收焦点事件,您需要像这样传递AudioManager.OnAudioFocusChangeListener的实例。

private OnAudioFocusChangeListener focusChangeListener = 
      new OnAudioFocusChangeListener() { 
        public void onAudioFocusChange(int focusChange) { 
          AudioManager am =(AudioManager)getSystemService(Context.AUDIO_SERVICE); 
        switch (focusChange) { 

          case (AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) : 
          // Lower the volume while ducking. 
          mediaPlayer.setVolume(0.2f, 0.2f); 
          break; 
          case (AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) : 
          pause(); 
          break; 

          case (AudioManager.AUDIOFOCUS_LOSS) : 
          stop(); 
          ComponentName component =new ComponentName(AudioPlayerActivity.this,MediaControlReceiver.class); 
          am.unregisterMediaButtonEventReceiver(component); 
          break; 

          case (AudioManager.AUDIOFOCUS_GAIN) : 
          // Return the volume to normal and resume if paused. 
          mediaPlayer.setVolume(1f, 1f); 
          mediaPlayer.start(); 
          break; 
          default: break; 
} 
} 
}; 

参考文档:https://developer.android.com/guide/topics/media-apps/volume-and-earphones.html

+0

感谢ABHI,现在我能停止音乐,但无法恢复。 – user8269038

+0

其他应用程序必须请求音频焦点。它将被授予该应用程序。 – Abhi

+0

我没有让你想说什么? – user8269038

相关问题