67 lines
2.1 KiB
JavaScript
67 lines
2.1 KiB
JavaScript
angular.module('kinderspiel.services', [])
|
|
|
|
// for media plugin : http://plugins.cordova.io/#/package/org.apache.cordova.media
|
|
.factory('MediaSrv', function($q, $cordovaMedia, $ionicPlatform){
|
|
var service = {
|
|
loadMedia: loadMedia,
|
|
getStatusMessage: getStatusMessage,
|
|
getErrorMessage: getErrorMessage
|
|
};
|
|
|
|
|
|
function loadMedia(src, onStop, onError, onStatus){
|
|
var defer = $q.defer();
|
|
$ionicPlatform.ready(function(){
|
|
var mediaStatus = {
|
|
code: 0,
|
|
text: getStatusMessage(0)
|
|
};
|
|
var mediaSuccess = function(){
|
|
mediaStatus.code = 4;
|
|
mediaStatus.text = getStatusMessage(4);
|
|
if(onStop){onStop();}
|
|
};
|
|
var mediaError = function(err){
|
|
_logError(src, err);
|
|
if(onError){onError(err);}
|
|
};
|
|
var mediaStatus = function(status){
|
|
mediaStatus.code = status;
|
|
mediaStatus.text = getStatusMessage(status);
|
|
if(onStatus){onStatus(status);}
|
|
};
|
|
|
|
if($ionicPlatform.is('android')){src = '/android_asset/www/' + src;}
|
|
var media = new $window.Media(src, mediaSuccess, mediaError, mediaStatus);
|
|
media.status = mediaStatus;
|
|
defer.resolve(media);
|
|
});
|
|
return defer.promise;
|
|
}
|
|
|
|
function _logError(src, err){
|
|
console.error('MediaSrv error', {
|
|
code: err.code,
|
|
text: getErrorMessage(err.code)
|
|
});
|
|
}
|
|
|
|
function getStatusMessage(status){
|
|
if(status === 0){return 'Media.MEDIA_NONE';}
|
|
else if(status === 1){return 'Media.MEDIA_STARTING';}
|
|
else if(status === 2){return 'Media.MEDIA_RUNNING';}
|
|
else if(status === 3){return 'Media.MEDIA_PAUSED';}
|
|
else if(status === 4){return 'Media.MEDIA_STOPPED';}
|
|
else {return 'Unknown status <'+status+'>';}
|
|
}
|
|
|
|
function getErrorMessage(code){
|
|
if(code === 1){return 'MediaError.MEDIA_ERR_ABORTED';}
|
|
else if(code === 2){return 'MediaError.MEDIA_ERR_NETWORK';}
|
|
else if(code === 3){return 'MediaError.MEDIA_ERR_DECODE';}
|
|
else if(code === 4){return 'MediaError.MEDIA_ERR_NONE_SUPPORTED';}
|
|
else {return 'Unknown code <'+code+'>';}
|
|
}
|
|
|
|
return service;
|
|
}); |