gpt4 book ai didi

Android 手机使用 cordova 手机插件不发出声音并且不给出错误消息

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:18 24 4
gpt4 key购买 nike

我正在使用 ionic 框架来创建一个应用程序。我想播放声音,所以我使用了 https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-media/.这是我用来播放声音的一段代码:

var my_media = new Media('/android/assets/www/audio/National Anthem.mp3',
// success callback
function () { console.log("playAudio():Audio Success"); },
// error callback
function (err) {console.dir("playAudio():Audio Error: " + err); }
);
my_media.play();

不幸的是它没有播放,给出的错误信息是:

playAudio():Audio Error: [object Object]

我无法在 chrome 控制台上查看对象!

如果我将 var my_media = new Media(.. 替换为 var my_media =$cordovaMedia.newMedia(... 我在控制台上根本没有收到任何消息...

最佳答案

所以我的媒体播放器解决方案如下:

首先,创建一个服务:

.factory('MediaSrv', function($q, $ionicPlatform, $window){
var service = {
loadMedia: loadMedia,
getStatusMessage: getStatusMessage,
getErrorMessage: getErrorMessage
};

function loadMedia(src, onError, onStatus, onStop){
var defer = $q.defer();
$ionicPlatform.ready(function(){
var mediaSuccess = function(){
if(onStop){onStop();}
};
var mediaError = function(err){
_logError(src, err);
if(onError){onError(err);}
};
var mediaStatus = function(status){
if(onStatus){onStatus(status);}
};

if($ionicPlatform.is('android')){src = '/android_asset/www/' + src;}
defer.resolve(new $window.Media(src, mediaSuccess, mediaError, mediaStatus));
});
return defer.promise;
}

function _logError(src, err){
console.error('media error', {
code: err.code,
message: 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;
})

然后,在 Controller 中:

.controller('phrasebookCtrl', function ($scope, $ionicPlatform, $timeout,    $cordovaMedia,MediaSrv) { 

$scope.play = function(src){
MediaSrv.loadMedia(src).then(function(media){
media.play();
});

在您看来(点击测试我):

 <p>Welcome: <a  ng-click="play('audio/welcome1_el.mp3')">Test me</a></p>

注意:此解决方案适用于 Android 和 iOS 平台。此外,您还必须在项目的 www 文件夹中创建一个名为 audio 的文件夹,其中包含 .mp3 文件。

如果这解决了您的问题,请告诉我。

关于Android 手机使用 cordova 手机插件不发出声音并且不给出错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39328430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com