MediaSessionAction - 描述了用户可以在媒体会话中执行的操作,例如播放、暂停或搜索
MediaSessionAction
枚举类型描述了用户可以在媒体会话中执行的操作,例如播放、暂停或搜索。
您将这些值之一传递到 MediaSession
接口的 setActionHandler()
方法,以指示将为其调用处理程序的操作。
语法
媒体会话操作的类型使用来自 MediaSessionAction
枚举类型的字符串指定。
值
每个操作都是一个通用的媒体会话控制请求。实现对其中每一个的支持,以允许执行该类型的操作。以下字符串标识当前可用的媒体会话操作类型:
nexttrack
将播放前进到下一曲目。
pause
暂停媒体播放。
play
开始(或恢复)媒体播放。
previoustrack
返回上一曲目。
seekbackward
从当前位置向后浏览媒体。MediaSessionActionDetails
的 seekOffset
属性指定了向后搜索的时间量。
seekforward
从当前位置向前浏览媒体。MediaSessionActionDetails
的 seekOffset
属性指定向前搜索的时间量。
seekto
将播放位置移动到媒体内的指定时间。寻找的时间在 MediaSessionActionDetails
的 seekTime
属性中指定。如果您打算快速连续执行多个 seekto
操作,您还可以指定 MediaSessionActionDetails
的 fastSeek
属性值为 true
。这让浏览器知道它可以采取措施优化重复操作,并且可能会提高性能。
skipad
跳过当前播放的广告或商业广告。此操作可能可用也可能不可用,具体取决于平台和 user agent,或者可能由于订阅级别或其他情况而被禁用。
stop
完全停止播放。
描述
媒体会话动作可以由任何媒体会话动作源生成;这些来源包括浏览器本身内的 UI 小部件,用户键盘上的媒体控制键,以及用户耳机或耳塞上的按钮。
实例
添加动作处理程序
此实例通过设置 seekforward 和 seekbackward 动作处理程序来实现音频播放器的向前和向后搜索动作。
let skipTime = 10; // 以秒为单位跳过的时间
navigator.mediaSession.setActionHandler('seekforward', details => {
// 用户单击 “前进” 媒体通知图标。
audio.currentTime = Math.min(audio.currentTime + skipTime,
audio.duration);
});
navigator.mediaSession.setActionHandler('seekbackward', details => {
// 用户单击 “后退” 媒体通知图标。
audio.currentTime = Math.max(audio.currentTime - skipTime, 0);
});
在这种情况下,seekforward
和 seekbackward
处理程序都使用固定距离,忽略传递给处理程序的 MediaSessionActionDetails
指定的时间。
在一个处理函数中支持多个动作
如果您愿意,您还可以通过检查 MediaSessionActionDetails
对象的 action
属性的值,使用单个函数来处理多种操作类型:
let skipTime = 7;
navigator.mediaSession.setActionHandler("seekforward", handleSeek);
navigator.mediaSession.setActionHandler("seekbackward", handleSeek);
function handleSeek(details) {
switch(details.action) {
case "seekforward":
audio.currentTime = Math.min(audio.currentTime + skipTime,
audio.duration);
break;
case "seekbackward":
audio.currentTime = Math.max(audio.currentTime - skipTime, 0);
break;
}
}
在这里,handleSeek()
函数处理 seekbackward
和 seekforward
动作。
使用 MediaSessionActionDetails 提供的数据
在此实例中,seekforward
和 seekbackward
的处理程序都不是指定一个距离,而是使用 seekOffset
属性中指定的时间。
navigator.mediaSession.setActionHandler("seekforward", handleSeek);
navigator.mediaSession.setActionHandler("seekbackward", handleSeek);
function handleSeek(details) {
switch(details.action) {
case "seekforward":
audio.currentTime = Math.min(audio.currentTime + details.seekOffset,
audio.duration);
break;
case "seekbackward":
audio.currentTime = Math.max(audio.currentTime - details.seekOffset, 0);
break;
}
});
规范
规范 |
---|
Media Session Standard (Media Session) # enumdef-mediasessionaction |
桌面浏览器兼容性
暂无兼容数据