这已经在旧版本中工作,ionic
但现在我已经完成了对这个应用程序的其余部分的更新,并且回过头来确定声音将无法播放.
我有一个开关用于在应用程序中播放演示声音.这是代码,带有注释和注释掉的部分我认为可能会导致我的问题.事实并非如此.
.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论坛上的这篇文章,你必须在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
注意:注意在使用SoundCtrl进行Media
实例化时,类(函数)已经可用new media()
.在我之前创建SoundCtrl之前onDeviceReady
(也就是当cordova.plugin.media变得可用时),所以我添加new Media(...)
到了$scope.soundPlayer()
函数中.