To support an action on a media session, such as seeking, pausing, or changing tracks, you need to call the
MediaSession
接口的
setActionHandler()
method to establish a handler for that action.
The specific type of media session action to be handled on a
MediaSession
is identified using a string from the
MediaSessionAction
enumerated type.
A media session action's type is specified using a string from the
MediaSessionAction
enumerated type.
Each of the actions is a common media session control request. Implement support for each of these in order to allow that type of action to be performed. The following strings identify the currently available types of media session action:
nexttrack
Advances playback to the next track.
pause
暂停媒体回放。
play
Begins (or resumes) playback of the media.
previoustrack
Moves back to the previous track.
seekbackward
MediaSessionActionDetails
property
seekOffset
specifies the amount of time to seek backward.
seekforward
MediaSessionActionDetails
property
seekOffset
specifies the amount of time to seek forward.
seekto
MediaSessionActionDetails
property
seekTime
. If you intend to perform multiple
seekto
operations in rapid succession, you can also specify the
MediaSessionActionDetails
property
fastSeek
property with a value of
true
. This lets the browser know it can take steps to optimize repeated operations, and is likely to result in improved performance.
skipad
stop
Halts playback entirely.
A media session action may be generated by any media session action source; these sources include anything from UI widgets within the browser itself to media control keys on the user's keyboard to buttons on the user's headset or earbuds.
This example implements seek forward and backward actions for an audio player by setting up the
seekforward
and
seekbackward
action handlers.
let skipTime = 10; // Time to skip in seconds
navigator.mediaSession.setActionHandler('seekforward', evt => {
// User clicked "Seek Forward" media notification icon.
audio.currentTime = Math.min(audio.currentTime + skipTime,
audio.duration);
});
navigator.mediaSession.setActionHandler('seekbackward', evt => {
// User clicked "Seek Backward" media notification icon.
audio.currentTime = Math.max(audio.currentTime - skipTime, 0);
});
You can also, if you prefer, use a single function to handle multiple action types, by checking the value of the
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()
function handles both
seekbackward
and
seekforward
actions.
| 规范 | 状态 | 注释 |
|---|---|---|
|
Media Session Standard
The definition of 'Media Session action types' in that specification. |
草案 | 初始定义。 |
No compatibility data found. Please contribute data for "api.MediaSessionAction" (depth: 1) to the MDN 兼容性数据存储库 .