UNPKG

cordova-plugin-media-session

Version:

Media session and notification handler (with music controls) for Cordova Android/iOS

135 lines (127 loc) 4.46 kB
var mediaSession = { updateCallback: function () {}, create: function (data, successCallback, errorCallback) { data.artist = !isUndefined(data.artist) ? data.artist : ""; data.track = !isUndefined(data.track) ? data.track : ""; data.album = !isUndefined(data.album) ? data.album : ""; data.cover = !isUndefined(data.cover) ? data.cover : ""; data.date = !isUndefined(data.date) ? data.date : ""; data.trackid = !isUndefined(data.trackid) ? data.trackid : ""; data.genre = !isUndefined(data.genre) ? data.genre : ""; data.mediauri = !isUndefined(data.mediauri) ? data.mediauri : ""; data.ticker = !isUndefined(data.ticker) ? data.ticker : ""; data.duration = !isUndefined(data.duration) ? data.duration : 0; data.rating = !isUndefined(data.rating) ? data.rating : false; data.elapsed = !isUndefined(data.elapsed) ? data.elapsed : 0; data.isPlaying = !isUndefined(data.isPlaying) ? data.isPlaying : true; data.hasPrev = !isUndefined(data.hasPrev) ? data.hasPrev : true; data.hasNext = !isUndefined(data.hasNext) ? data.hasNext : true; data.hasSkipForward = !isUndefined(data.hasSkipForward) ? data.hasSkipForward : false; data.hasSkipBackward = !isUndefined(data.hasSkipBackward) ? data.hasSkipBackward : false; data.hasScrubbing = !isUndefined(data.hasScrubbing) ? data.hasScrubbing : false; data.skipForwardInterval = !isUndefined(data.skipForwardInterval) ? data.skipForwardInterval : 0; data.skipBackwardInterval = !isUndefined(data.skipBackwardInterval) ? data.skipBackwardInterval : 0; data.hasClose = !isUndefined(data.hasClose) ? data.hasClose : false; data.dismissable = !isUndefined(data.dismissable) ? data.dismissable : false; data.playIcon = !isUndefined(data.playIcon) ? data.playIcon : ""; data.pauseIcon = !isUndefined(data.pauseIcon) ? data.pauseIcon : ""; data.prevIcon = !isUndefined(data.prevIcon) ? data.prevIcon : ""; data.nextIcon = !isUndefined(data.nextIcon) ? data.nextIcon : ""; data.closeIcon = !isUndefined(data.closeIcon) ? data.closeIcon : ""; data.notificationIcon = !isUndefined(data.notificationIcon) ? data.notificationIcon : ""; cordova.exec(successCallback, errorCallback, "MediaSession", "create", [ data ]); }, updateIsPlaying: function (isPlaying, successCallback, errorCallback) { cordova.exec( successCallback, errorCallback, "MediaSession", "updateIsPlaying", [{ isPlaying: isPlaying }] ); }, updateElapsed: function (args, successCallback, errorCallback) { cordova.exec( successCallback, errorCallback, "MediaSession", "updateElapsed", [{ elapsed: args.elapsed, isPlaying: args.isPlaying === undefined ? "" : !!args.isPlaying }] ); }, updateDismissable: function (dismissable, successCallback, errorCallback) { cordova.exec( successCallback, errorCallback, "MediaSession", "updateDismissable", [{ dismissable: dismissable }] ); }, destroy: function (successCallback, errorCallback) { cordova.exec( successCallback, errorCallback, "MediaSession", "destroy", [] ); }, updatePosition: function (position, successCallback, errorCallback) { cordova.exec( successCallback, errorCallback, "MediaSession", "position", [{ time: position }] ); }, login: function(successCallback, errorCallback) { cordova.exec( successCallback, errorCallback, "MediaSession", "login", [] ); }, // Register callback subscribe: function (onUpdate) { mediaSession.updateCallback = onUpdate; }, // Start listening for events listen: function () { cordova.exec( mediaSession.receiveCallbackFromNative, function (res) {}, "MediaSession", "watch", [] ); }, receiveCallbackFromNative: function (messageFromNative) { mediaSession.updateCallback(messageFromNative); cordova.exec( mediaSession.receiveCallbackFromNative, function (res) {}, "MediaSession", "watch", [] ); } }; function isUndefined(val) { return val === undefined; } module.exports = mediaSession;