$(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)
答案 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]);
进行进一步处理。