我是phonegap的新手,我需要知道将文件放在本地文件夹中的位置以及如何访问它们。我尝试使用eclipse等在我的计算机上构建我的应用程序,但是有太多东西要安装,用户变量,命令行......我试过但它不起作用我不知道问题出在哪里,然后我尝试从build.phonegap.com构建我的应用程序,它工作得很好。我遇到的问题是我需要读取一个音频文件,我尝试了Audio
对象和Media
对象,但它们不起作用。
我找到了解决方案,我发现你必须将你的本地文件放在assets/
或android_assets/
中,你需要访问它们,我不知道如何
/assets/file.wav
file:///android_assets/file.wav
所以我开始添加assets/
,android_assets/
,audios/
,whatever/
等文件夹,但没有任何作用。
答案 0 :(得分:2)
这是一个有用的链接,可能会有所帮助:link
你安装了文件插件吗?因为这是必要的。如果没有,首先你需要安装它,在项目的文件夹中输入命令行这个命令(这并不难):
cordova插件添加org.apache.cordova.file
根据文件插件文档,最好的地方是存储文件的路径如下:
file:/// data / data / {app-id} / files / files / {your folder} / {your files}
例如:file:///data/data/com.phonegap.myapp/files/files/audio/file.wav
这是持久的,可读/可写的,操作系统不会清除它和私有。 “使用内部存储器在应用程序的沙箱中存储持久和私有数据”
在你的程序中你可以这样推荐: cordova.file.dataDirectory
例如,这是我的应用程序中的代码,该代码从URL下载图像并将其放入图像标记中的HTML:
window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {
var imageURL = "http://example.com/image.jpeg";
var ext = imageURL.substr(imageURL.lastIndexOf('.') + 1); //extension of the image
var relativeFilePath = "images/myimage" + "." + ext;
var ft = new FileTransfer();
ft.download(imageURL, fileSystem.root.toURL() + relativeFilePath, function(entry) {
var myImage= "<img src=" + fileSystem.root.toURL() + relativeFilePath + "' id=" + "imageID" + ">";
alert(fileSystem.root.toURL() + relativeFilePath); //kép
$('#imgdiv').html(myImage);
}, function(err) { alert("Download failure: " + JSON.stringify(err)); });
}, function(err) { alert("requestFileSystem failure: " + JSON.stringify(err)); });
在此代码中,fileSystem.root.toURL()引用file:///data/data/com.phonegap.myapp/files/files/
和relativeFilePath由我创建,指的是images / myimage.jpeg
(对于下载,您需要文件传输插件,您可以使用
进行安装cordova插件添加org.apache.cordova.file-transfer 命令)。
我希望这会有所帮助。
答案 1 :(得分:-1)
@Khalid您必须手动创建项目:
project_folder
|___index.html
|___audio_folder
|___any resources or folder
请查看来自Phonegap Build
的文件编辑1:按媒体对象播放媒体文件
// Get path 'www' in Android
function getPathApp(){
return location.href.slice(0,-10);
}
var media = new Media(getPathApp() + 'audio/file.wav');
// In IOS only need path from audio folder
var media = new Media('audio/file.wav');
media.play();