Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.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
Javascript iOS Phonegap媒体对象-如何访问WWW文件夹中的资源?_Javascript_Ios_Xcode_Cordova - Fatal编程技术网

Javascript iOS Phonegap媒体对象-如何访问WWW文件夹中的资源?

Javascript iOS Phonegap媒体对象-如何访问WWW文件夹中的资源?,javascript,ios,xcode,cordova,Javascript,Ios,Xcode,Cordova,我正在用phonegap开发一个应用程序,我有一个声音文件要播放,它位于一个类似于www/Sounds/sound.mp3的路径中,我试图使用phonegap的媒体对象访问这个文件以便播放它 我无法在使用媒体对象的javascript文件中找到访问此声音文件的路径?我试过这样的路,file:///www/Sounds/sound.mp3,相对路径等,我无法访问它。我在xcode 4中不断遇到以下错误 Will attempt to use file resource 'file:///www/S

我正在用phonegap开发一个应用程序,我有一个声音文件要播放,它位于一个类似于www/Sounds/sound.mp3的路径中,我试图使用phonegap的媒体对象访问这个文件以便播放它

我无法在使用媒体对象的javascript文件中找到访问此声音文件的路径?我试过这样的路,file:///www/Sounds/sound.mp3,相对路径等,我无法访问它。我在xcode 4中不断遇到以下错误

Will attempt to use file resource 'file:///www/Sounds/sound.mp3'
Unknown resource 'file:///www/Sounds/sound.mp3'
我需要使用什么路径来访问该文件?或者我需要将声音文件从我的www目录复制到我的Resources文件夹中并在那里访问它吗


我的WWW文件夹已被引用,不确定这是否会产生影响。

使用
window.location.pathname
获取应用程序的路径。它在iPhone上看起来像这样:

/var/mobile/Applications/{GUID}/{appname}.app/www/index.html

在Android上:

/android_资产/www/index.html

去掉
/index.html
,在
文件://
前面加上相对路径
Sounds/sound.mp3

以下是一些让您开始学习的内容:

演示:

代码:

函数getPhoneGapPath(){ var path=window.location.pathname; path=path.substr(0,path.length-10); 返回'file://'+路径; }; var resource=getPhoneGapPath()+'Sounds/sound.mps';
这里有一个修改版的getPhoneGapPath,在iOS和Android上都适用。它还不仅限于处理文件名长度为10个字符的文件:)

getPhoneGapPath()将返回:

iOS:/var/mobile/Applications/{GUID}/{appName}/www/


Android:/Android\u asset/www/

从Cordova 3.3+开始,其他两个答案不正确。即使您只是传递一个文件名,它也应该可以工作

但是,只有当文件扩展名为
.wav
时,它才会在iOS中工作

这将有助于:

var media = new Media('recording.wav', ...);
这不会:

var media = new Media('recording.mp3', ...);

最好将可能添加到带有目录(“/”)的历史条目中的任何HTML5历史API代码考虑在内:

这本书已经过时了。您现在可以使用此“相对路径”方法在iOS上播放
wav
mp3
caf
格式:

请注意,上面的代码要求声音文件位于
www/
目录的根目录中——在本例中位于
www/beep.wav
。如果要将它们放在类似
www/sounds/
的子目录中,则需要使用相对于
www/
目录的路径来指定它。例如,现在也可以这样做:

var media = new Media('sounds/beep.wav', ...);

对于
www/sounds/beep.wav

上的声音文件,我遇到了同样的问题,使用Phone Gap Developer应用程序时,关于文件路径的所有答案都不适用于我。问题在于开发者应用程序没有将文件物理地推送到设备上,阻止我以任何方式访问它们

媒体插件使用户可以按预期工作

$phonegap运行android

$phonegap运行ios

使用此js代码:

函数getPhoneGapPath(){ var path=window.location.pathname; var phoneGapPath=path.substring(0,path.lastIndexOf('/')+1); 返回phoneGapPath; } var sound=新媒体(getPhoneGapPath()+“资产/声音/声音.mp3” //...
sound.play();试试
Sounds/sound.mp3
现在应该可以找到这个答案了。这似乎是我见过的最好的方法。谢谢你!在iOS上,我得到了“未知资源”file://var/mobile/Applications/{GUID}/{appname}/www/audio/bounce.mp3'”在android上,它可以工作,但返回路径"file:///android_asset/www/@BenXTan的路径中是否有
{GUID}/{appname}
,而不是实际的GUID和实际的应用程序名?android路径是正确的。window.location.pathname只为我提供了“/index.html”,这对我尝试这种方法没有帮助,我得到:`{message:“无法使用资源中的音频文件”file:///var/c…-4B61-91A4-93325E5E75AB/myApp.app/www/song.wav',代码:1}Object``它在Android上工作。稍后我将在iOS系统上测试它。顺便说一句:这个页面也说明了与您几乎相同的事情。但是在iOS系统上,他声明路径是:“。谢谢你的回答,本。这是我在Android和IOS上唯一有效的解决方案。谢谢。如果你在程序中使用HTML5历史API添加带有目录的历史记录条目(使用“/”),这将不起作用。”.最佳解决方案…谢谢BenSo实际的变化是什么?我们不能再在iOS上播放.mp3了?在您的第一个示例中,它会在哪里查找“recording.wav”?在www文件夹中?so var media=new media('sounds/recording.wav',…);如果wav在sounds文件夹中也可以使用?实际上,在查看3.3的文档时,我只能找到一个便条,上面说您不能在iOS上录制.wav以外的任何内容,而不是说您不能播放此类文件。这个答案已过时,请参阅。如果wav对我也不起作用,该怎么办?“无法使用资源中的音频文件”在iOS上,这里没有播放任何东西,无论是mp3还是wav,如果我在浏览器中运行它,它就会工作
function get_phonegap_path () {
 var path = window.location.pathname
 return path.slice(0, path.indexOf("/www/") + 5)
}
var media = new Media('beep.wav', ...);
var media = new Media('sounds/beep.wav', ...);