Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Phonegap应用程序使用媒体插件播放mp3不起作用_Android_Cordova_Audio_Media - Fatal编程技术网

Android Phonegap应用程序使用媒体插件播放mp3不起作用

Android Phonegap应用程序使用媒体插件播放mp3不起作用,android,cordova,audio,media,Android,Cordova,Audio,Media,我在phonegap中开发了文件读取器,路径如下: var defaultPath=file:///storage/sdcard0/'; 所以我可以列出SD卡上的所有文件,并选择一个包含音频文件的文件夹进行加载。因此,我的音频文件列表如下所示: i[1] = 'file:///storage/sdcard0/Download/audio/file.mp3'; i[2] = 'file:///storage/sdcard0/Download/audio/file1.mp3'; 然后,我尝试使用媒

我在phonegap中开发了文件读取器,路径如下:

var defaultPath=file:///storage/sdcard0/';

所以我可以列出SD卡上的所有文件,并选择一个包含音频文件的文件夹进行加载。因此,我的音频文件列表如下所示:

i[1] = 'file:///storage/sdcard0/Download/audio/file.mp3';
i[2] = 'file:///storage/sdcard0/Download/audio/file1.mp3';
然后,我尝试使用媒体插件(已安装)和以下代码初始化歌曲:

var media = new Media(i[1]);
media.play();

但音频不能播放或什么也不做。但是,当我尝试使用PhoneGap应用程序进行测试时,一切正常。当我进行构建并尝试从构建中测试应用程序时,这根本不起作用。

我自己发现了问题。 Android不允许通过从根目录开始的路径读取本地存储或SD卡上的文件
/storage/sdcard0
/storage/sdcard1
。因此,当我们想要访问本地存储或SD卡时,我们必须通过
file:///mnt/sdcard/
用于SD卡和
file:///mnt/storage/sdcard1/
用于手机存储

如何从SD卡或手机存储器中读取条目的小示例:

var path = 'file:///mnt/storage/sdcard1/'; 
window.resolveLocalFileSystemURL(path, function(entry){
    var reader = entry.createReader();
    reader.readEntries(showEntries);
});

function showEntries(entries){
   var entries = [];
   for(var i =0; i < entries.length; i++){
       var entry = entries[i];
       var data = {
           name: entry.name,
           path: entry.fullPath,
       };

       entries[i] = data;
   }

   console.log(JSON.stringify(entries));
}
var路径='1〕file:///mnt/storage/sdcard1/'; 
resolveLocalFileSystemURL(路径、函数(条目){
var reader=entry.createReader();
reader.readEntries(showEntries);
});
函数showEntries(条目){
var分录=[];
对于(变量i=0;i

希望这将有助于解决与我相同的问题,因为phonegap中没有记录这一点。

我无法理解您文章的最后部分。你说它可以作为phonegap应用程序正常工作,但不能用于构建。你如何在没有构建的情况下测试应用程序?你可以在PC+Mobile中使用PhoneGap应用程序,这样你就可以更快地连接和查看应用程序,而不是一直进行构建。因此,在这种情况下,它使用PhoneGap应用程序工作,但在我使用cordova build android进行构建并从.apk安装应用程序后,播放歌曲停止工作。我怀疑你的第一句话,因为我尝试在sdcard中创建文件夹,并且能够使用从sdcard根目录访问文件夹中的文件cordova.file.externalrootdirectory您在apk构建中尝试过吗?尝试生成和加载数据,并从该路径播放数据。当我在移动设备上安装应用程序时,在phonegap环境中进行的测试对我来说不起作用。我尝试访问存储在外部根目录(android中的sd卡)中的文件,我能够成功访问并打开该文件。我在Android和iOS设备上都试过了。没有尝试过播放声音,但是尝试播放声音,我认为它不会起作用。问题不在于列出文件,而在于工作和读取文件。所以,当您开始访问或使用播放器中的文件时,问题就会出现,例如,该文件将无法播放。