AudioManager
类有一个方法abandonAudioFocus()
和另一个方法requestAudioFocus()
。我想知道什么是音频焦点?如果AudioManager
对象获得音频焦点或失去音频焦点,会发生什么?
谢谢!
这与使用扬声器时的优先级有关,以防止同时播放许多内容或被覆盖。如果您requestAudioFocus()
,则表示您想要控制。然后,您可以用onAudioFocusChange(int focusChange)
收听,看看是否有其他东西试图播放声音。你可能会突然失去注意力(比如在打电话时(,但之后你可以获得注意力。当你完成时,你应该abandonAudioFocus()
。
AudioManager am = (AudioManager)getContext().getSystemService(AUDIO_SERVICE);
AudioManager.OnAudioFocusChangeListener focusChangeListener =
focusChange -> {
};
int result = am.requestAudioFocus(focusChangeListener,
AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
mp = new android.media.MediaPlayer();
mp.setOnCompletionListener(mediaPlayer -> {
am.abandonAudioFocus(focusChangeListener);
});
mp.setDataSource("/data/data/" + getContext().getPackageName() + "/rasa.wav");
mp.prepare();
mp.start();
}