Phonegap - 无法播放本地声音文件
问题描述:
我试图用Phonegap播放本地声音文件。这可以在http上正常工作,但不适用于本地文件。我可以看到设备上的文件并手动播放,但无法使用Phonegap的API。我试过了:Phonegap - 无法播放本地声音文件
- .mp3和.wav文件格式。
- 将文件放入www /(路径为
/android_asset/www/sound.mp3
)和/ sdcard /(路径为sound.mp3
)。 - 改变协议(带或不带file://)。
但似乎没有任何工作,成功和错误回调被调用。我也在确保文件真正存在之前试图播放它。这是我的代码:
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) {
var directoryReader = fs.root.createReader();
directoryReader.readEntries(function(entries) {
for (var i=0; i<entries.length; i++) {
if (entries[i].isFile && entries[i].name.match(/.*\.wav$/)){
var audio = new Media(entries[i].toURL().substr(19), function(){console.log('success');}, function(){console.log('error');});
console.log("!!!!! " + audio.getDuration());
audio.play();
audio.release();
break;
}
}
}, function (error) {
alert(error.code);
})
}, function (error) {
alert(error.code);
});
audio.getDuration
总是返回-1。我在运行Android 2.3.3的Android Nexus S上使用Phonegap 1.9,该应用针对的是API级别2.1。
任何想法?
答
getDuration
当您同步调用时返回-1。您需要在setInterval循环中调用它,如http://docs.phonegap.com/en/1.9.0/cordova_media_media.md.html#media.getDuration所示,以获得正确的持续时间。
我不认为你可以从资产/ www播放文件,但在SD卡上的文件工作得很好。您需要确保您不会传递FileEntry对象的完整路径。由于媒体播放器插件本身添加了该文件,因此您需要修剪开始路径(file:/// mnt/sdcard /)。我发现在一个小时左右的头部划伤之后!