gpt4 book ai didi

android - Audiomanager.abandonAudioFocus 不恢复播放

转载 作者:行者123 更新时间:2023-11-29 21:00:25 26 4
gpt4 key购买 nike

当文本到语音系统说出一个短语时,我试图让音频播放器静音。正如预期的那样,audiomanager 在请求音频焦点时降低音量,但在调用 abandonAudioFocus 时,音量不会恢复并且不会调用 abandonAudioFocus 的回调。这是我的代码:

private class SpeakRunnable implements Runnable {
String mText;

public SpeakRunnable(String text) {
mText = text;
}

@Override
public void run() {
stream_volume = am.getStreamVolume(AudioManager.STREAM_MUSIC);
am.requestAudioFocus(new OnAudioFocusChangeListener() {
@Override
public void onAudioFocusChange(int focusChange) {
//Check if focus granted
.....
HashMap<String, String> params = new HashMap<String, String>();
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "none");
talker.speak(mText, TextToSpeech.QUEUE_ADD, params);
}
},
AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);

}
}

和:

talker.setOnUtteranceProgressListener(new UtteranceProgressListener() {

@Override
public void onStart(String utteranceId) {

}

@Override
public void onError(String utteranceId) {

}

@Override
public void onDone(String utteranceId) {
am.abandonAudioFocus(new OnAudioFocusChangeListener() {
@Override
public void onAudioFocusChange(int focusChange) {
Log.v(app_id, "CALLBACK");
}
});
}
});

有什么想法吗?提前致谢。

最佳答案

您需要将传递给 requestAudioFocus 的相同 AudioManager.OnAudioFocusChangeListener 传递给 abandonAudioFocus。这在 the documentation for abandonAudioFocus 中有描述。 :

public int abandonAudioFocus (AudioManager.OnAudioFocusChangeListener l)

Parameters
l the listener with which focus was requested.

此外,我认为您不应期望 您的 监听器中的 onAudioFocusChange 方法会因为您放弃音频焦点而被调用。当您放弃音频焦点时,一些其他已请求音频焦点的音频焦点客户端将收到它已获得焦点的通知。如果您想了解这是如何在 Android 内部实现的,您可以查看 MediaFocusControl source code。 .

关于android - Audiomanager.abandonAudioFocus 不恢复播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26298104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com