Android类AudioManager中的音频焦点是什么



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();
                        }

最新更新