【发布时间】:2021-11-28 19:05:42
【问题描述】:
这似乎是我将 iPod Touch 升级到 iOS 15 (15.0.1) 后出现的问题。
运行下面的示例时,它在第一次加载时运行良好,可以根据需要多次播放声音。但是,如果我在 iPod Touch 上锁定屏幕,然后在几分钟后返回,声音将不再播放。为了排除故障,我在 AudioContext 实例上设置了一个状态更改侦听器,并验证了 Safari 在屏幕锁定时将状态设置回running 后将其设置为interrupted。但是,声音没有播放。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>audio-test</title>
</head>
<body>
<script>
const AudioContext = window.AudioContext || window.webkitAudioContext;
const audioContext = new AudioContext();
// Create AudioBuffer and fill with two seconds of white noise.
const channels = 2;
const frameCount = audioContext.sampleRate * 2.0;
const audioBuffer = audioContext.createBuffer(channels, frameCount, audioContext.sampleRate);
for (var channel = 0; channel < channels; channel++) {
var nowBuffering = audioBuffer.getChannelData(channel);
for (var i = 0; i < frameCount; i++) {
nowBuffering[i] = Math.random() * 2 - 1;
}
}
const button = document.createElement('button');
button.textContent = 'Play Audio';
document.body.append(button);
button.addEventListener('click', () => {
const currentSourceNode = new AudioBufferSourceNode(audioContext, {
buffer: audioBuffer,
});
currentSourceNode.connect(audioContext.destination);
currentSourceNode.start();
});
</script>
</body>
</html>
【问题讨论】:
标签: javascript html ios mobile-safari web-audio-api