2012-11-02 50 views
4

第一次当我播放使用手机媒体的MP3文件,它工作正常。但闻一停止,以及第二次再次播放不,当我发挥它显示的错误代码0phonegap媒体错误代码0

第3次以下是代码

  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。

回答

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){ 
     ; 
    } 

我知道是不是正确的方式,但我不能找到其他的解决办法。

P.D.对不起,我的英语不好。

1

3.5.0我遇到错误代码为0的错误代码。

从较早的文档,0似乎意味着none,似乎没有任何问题的迹象。

我似乎在这种情况下这是可以忽略不计,而不是一个真正的错误

2

它与音频ressources它是有限的,因此必须得到释放做。我这样做,调用停止()

后直接 - http://docs.phonegap.com/en/3.3.0/cordova_media_media.md.html

在我的情况下,它的伎俩调用的release()在那一刻,我再也不会使用它我的媒体对象:这说明有

this.stopAudio = function() { 
    if (my_media) { 
     my_media.stop(); 
     my_media.release(); 
    } 
} 
+0

确实是这个问题,这是来自文档:'释放底层操作系统的音频资源。这对Android来说尤其重要,因为媒体播放的OpenCore实例数量有限。应用程序应该为不再需要的任何媒体资源调用release函数 – sebaferreras

0

除了您创建的停止方法之外,还在onSuccess方法中添加发布方法。

function onSuccess() { 
my_media.release(); 
console.log("playAudio():Audio Success"); 
}