声音停止工作phonegap媒体

时间:2013-07-15 07:27:47

标签: android jquery-mobile cordova

$(document).on('click', '#bar img', function () { 



    alphaLetter = $(this).data('club-id');
    audio_file_path = '/android_asset/www/audio/'+alphaLetter+'.mp3';


    var my_media = null;
     my_media = new Media(audio_file_path);

    my_media.play();




    });

以上是我播放声音的代码。它发挥了作用,但是当我重新启动我的项目时,它从那时起就停止了工作,并给出了这些错误;

 E/MediaPlayer(2306): error (-19, 0)
 E/MediaPlayer(2306): Attempt to call getDuration without a valid mediaplayer
 E/MediaPlayer(2306): error (-38, 0)
 E/MediaPlayer(2306): Error (-19,0)

2 个答案:

答案 0 :(得分:1)

这可能是由于您有太多媒体对象同时运行造成的。声音结束后你应该释放它。

PhoneGap文档说明了这一点:

  

函数media.release是一个释放的同步函数   底层操作系统音频资源。这个功能是   对于Android来说尤其重要,因为有一定数量的   用于媒体播放的OpenCore实例。开发人员应该致电   当他们不再需要媒体资源时,“释放”功能。

我也得到了同样的错误,并且在完成的声音工作后使用重置对我来说是膨胀的。请记住在声音完成后调用它,例如:

var my_media = null;
my_media = new Media(audio_file_path, function()
{
   this.release();
});

my_media.play();

如果您有兴趣,我已经写了更多关于问题here的文章,但上述解决方案应该运作良好。

答案 1 :(得分:0)

即使在某个时刻(Attempt to call getDuration)没有完全加载声音,似乎每当您尝试播放声音时都会弹出此错误。

我查了一下Phonegap文档,找不到可能检查声音可用性的方法。你能做的是:

  • 构建一个等待一段时间的定时器,直到播放声音。

  • 播放声音失败时,请使用var media = new Media(src, mediaSuccess, [mediaError], [mediaStatus]);进行进一步处理。