4

当我第一次使用 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 是什么。

4

4 回答 4

2

它与有限的音频资源有关,因此必须释放。那里对此进行了解释:http: //docs.phonegap.com/en/3.3.0/cordova_media_media.md.html

就我而言,当时它确实为我的媒体对象调用了 release(),我不再使用它了——我在调用 stop() 后直接调用

    this.stopAudio = function() {
    if (my_media) {
        my_media.stop();
        my_media.release();
    }
}
于 2014-11-04T13:59:16.153 回答
2

3.5.0我遇到错误函数触发时,错误代码为0.

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

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

于 2014-07-19T14:51:17.257 回答
1

我也有同样的问题。我正在寻找解决方案,但我没有找到任何东西。

我的代码:

$('#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对不起我的英语不好。

于 2013-02-14T09:08:38.293 回答
0

除了你创建的 stop 方法之外,在 onSuccess 方法中添加 release 方法。

function onSuccess() {
 my_media.release();
 console.log("playAudio():Audio Success");
}
于 2017-12-18T00:03:25.010 回答