MediaSession.setPositionState() 不显示音频时间, 搜索栏也没有按预期显示。
const audio= document.querySelector('audio');
function updatePositionState() {
if ('setPositionState' in navigator.mediaSession) {
navigator.mediaSession.setPositionState({
duration: audio.duration,
playbackRate: audio.playbackRate,
position: audio.currentTime,
});
}
}
await audio.play();
updatePositionState();
navigator.mediaSession.setActionHandler('seekto', (details) => {
updatePositionState();
});
我也遇到同样的事情
然后我做了一些清理工作,并决定现在不需要以下内容:
navigator.mediaSession.setActionHandler("seekbackward", (data) => {
console.log('seekBackward: data: ', data);
// seekBackward: data: { action: 'seekbackward' }
});
navigator.mediaSession.setActionHandler("seekforward", (data) => {
console.log('seekForward: data: ', data);
// seekForward: data: {action: 'seekforward'}
});
将其注释掉后,搜索栏现在在我的移动设备上可见。在桌面上它仍然不可见。我怀疑 MediaSession API 的工作方式可能是,如果您有向前和向后跳跃按钮,那么会禁用eekTo。
现在,seekTo 栏可见并且可以被触发,但它是不正确的。当曲目开始时,已经完成了四分之一。
我似乎找不到在流上的 MedaSession API 中设置轨道运行时间的方法。
我在某处读到,在流上甚至不可能有搜索栏。 🤷u200d♀️
这对我有用:
audio = document.querySelector("audio");
navigator.mediaSession.setActionHandler('seekto', (details) => {
audio.currentTime = details.seekTime;
});