我是Android和Java的新手.我一直在使用Android Developer和其他网站提供的MediaPlayer和AudioManager示例.
我注意到的是,对于requestAudioFocus()的调用,似乎有两个单独的签名被使用.例如,从http://developer.android.com/guide/topics/media/mediaplayer.html 网站有:
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int result = audioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN);
if (result != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
// could not get audio focus.
}
Run Code Online (Sandbox Code Playgroud)
使用以下文本:
"requestAudioFocus()的第一个参数是AudioManager.OnAudioFocusChangeListener,只要音频焦点发生变化,就会调用其onAudioFocusChange()方法.因此,您还应该在服务和活动上实现此接口.例如:"(With以下代码:)
class MyService extends Service
implements AudioManager.OnAudioFocusChangeListener {
// ....
public void onAudioFocusChange(int focusChange) {
// Do something based on focus change...
}
}
Run Code Online (Sandbox Code Playgroud)
然后从网站:http: //developer.android.com/training/managing-audio/audio-focus.html 有:
OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() {
public void onAudioFocusChange(int focusChange) {
if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT) {
// Pause playback
} else if …Run Code Online (Sandbox Code Playgroud)