【问题标题】:Phonegap - unable to play local sound filePhonegap - 无法播放本地声音文件
【发布时间】:2012-07-18 13:46:39
【问题描述】:

我正在尝试使用 Phonegap 播放本地声音文件。这在 http 上运行良好,但不适用于本地文件。我可以看到设备上的文件并手动播放它们,但不能使用 Phonegap 的 API 这样做。我试过了:

  1. .mp3 和 .wav 文件格式。
  2. 将文件放在 www/(带路径 /android_asset/www/sound.mp3) 和 /sdcard/(路径为 sound.mp3)。
  3. 改变协议(带或不带 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。

有什么想法吗?

【问题讨论】:

    标签: cordova


    【解决方案1】:

    getDuration 同步调用时返回 -1。您需要在 setInterval 循环中调用它,如下所示 http://docs.phonegap.com/en/1.9.0/cordova_media_media.md.html#media.getDuration 以获得正确的持续时间。

    我不认为你可以从 assets/www 播放文件,但 sdcard 上的文件可以正常工作。您需要确保不传递 FileEntry 对象的完整路径。您需要修剪起始路径(file:///mnt/sdcard/),因为媒体播放器插件会自行添加。我在挠头一个小时左右后发现了这一点!

    【讨论】:

      猜你喜欢
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多