第一次使用phonegap媒体播放mp3文件时效果很好。但是我会停止并再次播放第二次它没有,第三次播放时显示错误代码0
下面是代码
var my_media = null;
var mediaTimer = null;
var pausePos = 0;
var counter=0;
var playing=false;
function playAudio(src) {
// Create Media object from src
if(my_media==null){
my_media = new Media(src, onSuccess, onError);
}
if(!playing){
// get audio duration
var duration = my_media.getDuration();
// set slider data
if( duration > 0 ){
$('#slider').attr( 'max', Math.round(duration) );
$('#slider').slider('refresh');
}
// Play audio
my_media.play();
playing=true;
$("#play_pause_img").attr("src","img/pause.png")
// Update my_media position every second
if (mediaTimer == null) {
mediaTimer = setInterval(function() {
// get my_media position
my_media.getCurrentPosition(
// success callback
function(position) {
if (position > -1) {
setAudioPosition(position);
}
},
// error callback
function(e) {
console.log("Error getting pos=" + e);
setAudioPosition("Error: " + e);
}
);
}, 1000);
}
}
else{
pauseAudio();
playing=false;
$("#play_pause_img").attr("src","img/play.png");
}
}
function pauseAudio() {
if (my_media) {
my_media.pause();
}
}
function resumeAudio()
{
my_media.play();
}
function stopAudio() {
if (my_media) {
my_media.stop();
my_media.release();
playing=false;
$("#play_pause_img").attr("src","img/play.png");
}
clearInterval(mediaTimer);
mediaTimer = null;
pausePos = 0;
$('#slider').val(pausePos);
$('#slider').slider('refresh');
}
function onSuccess() {
console.log("playAudio():Audio Success");
}
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
原因可能是什么,错误代码是什么。
答案 0 :(得分:2)
它与有限的音频资源有关,因此必须被释放。这在那里解释:http://docs.phonegap.com/en/3.3.0/cordova_media_media.md.html
在我的情况下,它为我的媒体对象调用release()的技巧在那一刻我不再使用它 - 我在调用stop()后直接执行它()
< / p>
this.stopAudio = function() {
if (my_media) {
my_media.stop();
my_media.release();
}
}
答案 1 :(得分:1)
在3.5.0
我遇到错误功能,错误代码为0
。
从较旧的文档中,0
似乎表示none
,似乎并不表示存在问题。
在这种情况下,我似乎可以忽略这一点,而且实际上并不是错误
答案 2 :(得分:0)
我有同样的问题。我正在寻找解决方案,但我找不到任何东西。
我的代码:
$('#button').click(function{
media = new Media('/android_asset/www/sonidos/trans/sound.m4a', play, error);
});
function play(){
media.play();
}
function error(err){
alert(err.code);
}
如果我这样做,声音不会播放,我总是得到0的警报。这与mediaError的任何错误代码都不匹配。
测试和测试我使代码适用于下一个代码:
$('#button').click(function{
media = new Media('/android_asset/www/sonidos/trans/sound.m4a', play, error);
media.play();
});
function play(){
;
}
function error(err){
;
}
我知道这不是正确的方法,但我无法找到其他解决方案。
Pd积。抱歉我的英语不好。
答案 3 :(得分:0)
除了您创建的停止方法外,还在onSuccess方法中添加release方法。
function onSuccess() {
my_media.release();
console.log("playAudio():Audio Success");
}