MediaSession.setActionHandler()

翻译不完整。 请帮助我们翻译这篇文章!

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

MediaSession 接口的属性 setActionHandler() 为media session动作设置一个监听器。这些动作让网页程序在用户操作设备的内置物理或屏上媒体控制项时收到消息,例如播放、停止或搜寻按钮。

语法

navigator.mediaSession.setActionHandler(type, callback)

参数

type
一个提供要监听的动作类型的 DOMString 。它可以是 playpauseseekbackwardseekforwardprevioustrack 或 nexttrack
callback
一个在指定动作被调用时要调用的方法。回调方法不会收到参数,并且不应该返回值。

返回值

undefined

使用说明

要移除一个已经存在的监听器,再调用一次 setActionHandler() ,将 null 作为回调方法。

示例

下面的示例创建一个新的media session并且为它添加监听器(不做任何事情)。

if ('mediaSession' in navigator){
  navigator.mediaSession.metadata = new MediaMetadata({
    title: "播客音乐名字",
    artist: "播客主持人",
    album: "播客名字",
    artwork: [{src: "podcast.jpg"}]
  });
  navigator.mediaSession.setActionHandler('play', function() {});
  navigator.mediaSession.setActionHandler('pause', function() {});
  navigator.mediaSession.setActionHandler('seekbackward', function() {});
  navigator.mediaSession.setActionHandler('seekforward', function() {});
  navigator.mediaSession.setActionHandler('previoustrack', function() {});
  navigator.mediaSession.setActionHandler('nexttrack', function() {});
}

这个示例使用了适当的监听器来允许在不同的方向搜寻正在播放的媒体。

let skipTime = 10; // 要跳过的秒

navigator.mediaSession.setActionHandler('seekbackward', evt => {
  // 用户点击了“向前搜寻”的媒体按钮
  audio.currentTime = Math.max(audio.currentTime - skipTime, 0);
});

navigator.mediaSession.setActionHandler('seekforward', evt => {
  // 用户点击了“向后搜寻”的媒体按钮
  audio.currentTime = Math.min(audio.currentTime + skipTime,    
                               audio.duration);
});

要移除一个监听器,将它设为null。

navigator.mediaSession.setActionHandler('nexttrack', null);

技术指标

技术指标 状态 注释
Media Session Standard
MediaSession.setActionHandler()
Draft 初始定义。

浏览器兼容性

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
setActionHandler()
Experimental
Chrome Full support 73Edge ? Firefox Full support 71IE ? Opera No support NoSafari ? WebView Android No support NoChrome Android Full support 57Firefox Android ? Opera Android No support NoSafari iOS ? Samsung Internet Android Full support 7.0

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
Experimental. Expect behavior to change in the future.
Experimental. Expect behavior to change in the future.