kinderspiele1/www/js/services.js
2016-10-28 01:10:26 +02:00

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;
});