小编Rag*_*eth的帖子

无法在 Safari 中恢复 AudioContext

我遇到了一个问题,当尝试在 Safari 中播放音频时,调用永远无法解决resumeAudioContext我正在创建一个AudioContext页面加载,因此它以暂停状态启动。

根据此 chromium 问题resume如果浏览器的自动播放策略阻止,调用将无法解决。我有一个绑定到 a 的点击事件<button>,如果它被挂起,它将恢复上下文。这适用于 Firefox 和 Chrome,并且如果我更改网站的自动播放设置,也将适用于 Safari。

以下是我通常如何恢复上下文:

await context.resume();
Run Code Online (Sandbox Code Playgroud)

对于 Safari,我尝试在不等待承诺解决的情况下调用resume,而是注册一个回调onstatechange,然后将其包装在Promise

if (window.webkitAudioContext) {
    await new Promise((accept, reject) => {
        this.context.onstatechange = async () => {
            if ((await this.context.state) === "playing") {
                accept();
            } else {
                reject();
            }
         };

        this.context.resume();
    });
}
Run Code Online (Sandbox Code Playgroud)

然而,什么都没有改变:Promise永远不会解决,这意味着上下文状态没有改变。

我错过了什么吗?

safari web-audio-api

7
推荐指数
2
解决办法
4303
查看次数

在Multimap中检索特定值

我正在使用每个键有两个值的Multimap.下面是我用来分别获取每个值的代码:

第一个代码获取第一个对象值:

for(Object object : map.get(object))
{
    return object
}
Run Code Online (Sandbox Code Playgroud)

然后,我正在使用另一种方法来检索其他值.此方法将第一个对象作为参数:

for(Object object : team.get(object))
{
    if(object != initialObject)
    {
        return object;
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎是一种"hackish"做事方式,所以有没有办法让我更容易获得价值?

java guava

2
推荐指数
1
解决办法
4852
查看次数

标签 统计

guava ×1

java ×1

safari ×1

web-audio-api ×1