Skip to content

Commit

Permalink
feat: mediaSession
Browse files Browse the repository at this point in the history
  • Loading branch information
EYHN committed Aug 25, 2017
1 parent d264b6c commit 22abb44
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 1 deletion.
5 changes: 5 additions & 0 deletions lib/lib/mediaSession.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/// <reference types="wicg-mediasession" />
import cplayer from './';
import { IAudioItem } from '../lib/interfaces';
export declare function cplayerMediaSessionPlugin(player: cplayer): void;
export declare function mediaMetadata(audio: IAudioItem): MediaMetadata;
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
"repository": "https://github.com/MoePlayer/cPlayer",
"devDependencies": {
"@types/node": "^8.0.15",
"@types/wicg-mediasession": "^1.0.0",
"autoprefixer": "^7.1.2",
"awesome-typescript-loader": "^3.2.1",
"babel-core": "^6.25.0",
Expand Down
2 changes: 2 additions & 0 deletions src/lib/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { decodeLyricStr } from "./lyric";
import { singlecyclePlaymode } from "./playmode/singlecycle";
import { listrandomPlaymode } from "./playmode/listrandom";
import shallowEqual from "./helper/shallowEqual";
import { cplayerMediaSessionPlugin } from "./mediaSession";

export interface ICplayerOption {
playlist?: Iplaylist;
Expand Down Expand Up @@ -94,6 +95,7 @@ export default class cplayer extends EventEmitter {
if (options.autoplay && this.playlist.length > 0) {
this.play();
}
cplayerMediaSessionPlugin(this)
}

private initializeEventEmitter() {
Expand Down
3 changes: 2 additions & 1 deletion src/lib/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ export interface IAudioItem {
artist?: string; //艺术家
src: string; //音频
lyric?: Lyric | string; // 歌词
sublyric?: Lyric | string; // 小歌词
sublyric?: Lyric | string; // 小歌词;
album?: string; // 专辑 & 唱片
}

export type Iplaylist = IAudioItem[];
Expand Down
27 changes: 27 additions & 0 deletions src/lib/mediaSession.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import cplayer from './';
import { IAudioItem } from '../lib/interfaces';

export function cplayerMediaSessionPlugin(player: cplayer)
{
if ('mediaSession' in navigator) {
navigator.mediaSession.metadata = mediaMetadata(player.nowplay);
navigator.mediaSession.setActionHandler('play', () => player.play());
navigator.mediaSession.setActionHandler('pause', () => player.pause());
navigator.mediaSession.setActionHandler('previoustrack', () => player.prev());
navigator.mediaSession.setActionHandler('nexttrack', () => player.next());
player.on('openaudio', () => {
navigator.mediaSession.metadata = mediaMetadata(player.nowplay);
})
}
}

export function mediaMetadata(audio: IAudioItem) {
return new MediaMetadata({
title: audio.name,
artist: audio.artist,
album: audio.album,
artwork: [
{src: audio.poster}
]
});
}

0 comments on commit 22abb44

Please sign in to comment.