java requestaudiofocus的正确参数是什么?
我不熟悉Android和Java。我一直在使用Android开发者和其他网站提供的MediaPlayer和AudioManager示例
我注意到,对于requestAudioFocus()的调用,似乎使用了两个独立的签名。 例如,从http://developer.安卓.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.
}
全文如下:
requestAudioFocus()的第一个参数是AudioManager.OnAudioFocusChangeListener,只要音频焦点发生变化,就会调用其onAudioFocusChange()方法。因此,您还应该在服务和活动上实现此接口。例如: (代码如下:)
class MyService extends Service
implements AudioManager.OnAudioFocusChangeListener {
// ....
public void onAudioFocusChange(int focusChange) {
// Do something based on focus change...
}
}
然后从网站: http://developer.安卓.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 (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
// Resume playback
} else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);
am.abandonAudioFocus(afChangeListener);
// Stop playback
}
}
};
AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
...
// Request audio focus for playback
int result = am.requestAudioFocus(afChangeListener,
// Use the music stream.
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
am.registerMediaButtonEventReceiver(RemoteControlReceiver);
// Start playback.
}
我在许多网站上看到过这种二分法,这些网站提供了处理音频焦点变化的示例代码。 我的理解是,“this”提供了应用程序当前状态的上下文。 我不明白为什么在某些情况下“this”是正确的参数,而在其他情况下,调用requestAudioFocus()时更改侦听器的句柄是正确的参数
事实上,我提供的第一个示例说明第一个参数应该是AudioManager。一个听众。但使用“this”
如果你能解释为什么用“this”代替AudioManager。如果将OnAudioFocusChangeListener用作参数,将不胜感激
# 1 楼答案
它总是需要一个onAudioFocusedChangeListener。在传递此消息的情况下,当前类实现onAudioFocusChangeListener接口