我想在我的页面加载时在后台播放音频mp3,所以如果我使用按钮点击,它可以工作,但如果我尝试在我的控制器加载$ state时播放它,它不起作用:
angular.module('starter', ['ionic','ngCordova'])
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
if(window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if(window.StatusBar) {
StatusBar.styleDefault();
}
});
})
.controller("ExampleController", function($scope, $cordovaMedia) {
$scope.play = function(url) {
var my_media = new Media(url,
function () {
console.log("playAudio() : success");
},
function (err) {
console.log("playAudio() : : "+err);
});
my_media.play();
};
$scope.play('/android_asset/www/someAudio.mp3');
});
答案 0 :(得分:1)
$ scope.play未定义。你的意思是定义一个my_media的函数吗?您需要稍微改变一下:
$scope.play = function(url) {
var my_media = new Media(url,
function () {
console.log("playAudio() : success");
},
function (err) {
console.log("playAudio() : : "+err);
});
my_media.play();
};
答案 1 :(得分:0)
感谢您的帮助,答案是:
$scope.play = function() {
var mp3URL = getMediaURL("sounds/yourMp3AudioFile.mp3");
var media = new Media(mp3URL, null, null, mediaStatusCallback);
media.play();
}
var mediaStatusCallback = function(status) {
if(status == 1) {
$ionicLoading.show({template: 'Loading...'});
} else {
$ionicLoading.hide();
}
}
function getMediaURL(s) {
var isAndroid = ionic.Platform.isAndroid();
if(isAndroid) return "/android_asset/www/" + s;
return s;
}
$timeout(function() {
$scope.play();
}, 1000);