MediaSession.setPositionState()和seekto不起作用

问题描述 投票:0回答:2

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

javascript typescript navigator android-music-player mediasession
2个回答
0
投票

我也遇到同样的事情

然后我做了一些清理工作,并决定现在不需要以下内容:

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♀️


0
投票

这对我有用:

audio = document.querySelector("audio");
navigator.mediaSession.setActionHandler('seekto', (details) => {
        audio.currentTime = details.seekTime;
    });
© www.soinside.com 2019 - 2024. All rights reserved.