我正在尝试使用Phonegap播放本地声音文件。这适用于http,但不适用于本地文件。我可以看到设备上的文件并手动播放,但不能使用Phonegap的API。我试过了:
/android_asset/www/sound.mp3
)和/ sdcard /(与路径sound.mp3
)。但似乎没有任何工作,成功和错误回调都不会被调用。在尝试播放之前,我也确保文件确实存在。这是我的代码:
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。
有什么想法吗?
答案 0 :(得分:2)
getDuration
返回-1。您需要在setInterval循环中调用它,如此处http://docs.phonegap.com/en/1.9.0/cordova_media_media.md.html#media.getDuration所示,以获得正确的持续时间。
我认为你不能播放来自assets / www的文件,但是SD卡上的文件工作得很好。您需要确保不从FileEntry对象传递完整路径。您需要修剪起始路径(file:/// mnt / sdcard /),因为媒体播放器插件会自行添加。我发现在一个小时左右的头部刮伤后出来了!