2012-11-02 80 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"); 
}