这已经在旧版本的离子版本中工作,但现在我已经完成了对这个应用程序的其余部分的更新,并且回过头来确定声音将无法播放. 我有一个开关用于在应用程序中播放演示声音.这是代码,带
我有一个开关用于在应用程序中播放演示声音.这是代码,带有注释和注释掉的部分我认为可能会导致我的问题.事实并非如此.
.controller( 'SoundCtrl', function( $scope, $timeout ) {
$scope.sound_on = false;
var media = new Media( '100bpm.wav' );
$scope.soundPlayer = function() {
console.log( "in soundPlayer" );
if( $scope.sound_on == false ) {
$scope.sound_on = true;
media.setVolume( '1.0' );
media.play();
console.log( "sound on" );
console.log( media );
/*$timeout(function(){
$scope.sound_on=false;
console.log("should change");
}, 12600);*/
} else {
media.stop();
$scope.sound_on = false;
console.log( "sound off" );
}
}
});
我得到了所有正确的控制台日志,并将wav文件放在与我的js脚本相同的文件夹中.
依然没有.
有帮助吗?
根据Ionic论坛上的 this post,你必须在Android设备上的媒体文件路径中添加’/ android_asset / www /’.所以你的代码变成如下:
$scope.media = new Media( '/android_asset/www/'+'100bpm.wav',
function() {
console.log("[mediaSuccess]");
}, function(err) {
console.log("[mediaError]", err);
}, function(status) {
console.log("[mediaStatus]", status);
});
在我的试用中,我使用了控制器$scope的属性(媒体)来存储媒体对象,我还附加了successHandler,errorHandler,statusHandler
N.B.:注意当您使用SoundCtrl中的新媒体()实例化媒体类(功能)时,它已经可用.我发现SoundCtrl是在onDeviceReady之前创建的(也就是当cordova.plugin.media变得可用时),所以我在$scope.soundPlayer()函数中添加了新的Media(…).
