在 phonegap 中播放本地声音
Posted
技术标签:
【中文标题】在 phonegap 中播放本地声音【英文标题】:Playing local sound in phonegap 【发布时间】:2011-05-25 05:46:40 【问题描述】:我的www
文件夹中有一个.wav
文件。我正在使用带有以下代码的 jQuery。警报响起,但不播放声音。我做错了吗?
<script type="text/javascript" charset="utf-8" src="phonegap-0.9.2.js"></script>
<script type="text/javascript" charset="utf-8" src="jquery.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function ()
window.alert("READY!");
document.addEventListener("deviceready", onDeviceReady, true);
function onDeviceReady()
window.alert("OK@!");
var snd = new Media("test.wav");
snd.play();
);
</script>
只是没有播放声音。
【问题讨论】:
【参考方案1】:您可以使用window.location.pathname
在任何PhoneGap 应用程序中获取您的应用程序的路径。这样您就不必为 android 进行硬编码。它在 iPhone 上看起来像这样:
/var/mobile/Applications/GUID/appname.app/www/index.html
这在 Android 上:
/android_asset/www/index.html
删除/index.html
,添加file://
,并添加您的文件test.wav
。
演示:http://jsfiddle.net/ThinkingStiff/r7eay/
代码:
function getPhoneGapPath()
var path = window.location.pathname;
path = path.substr( path, path.length - 10 );
return 'file://' + path;
;
var snd = new Media( getPhoneGapPath() + 'test.wav' );
【讨论】:
谢谢谢谢! Phonegap 3.0 刚刚发布,这在所有官方地方仍然没有记录。 这个答案结束了 2 天的痛苦。非常感谢。 我尝试使用上面的getPhoneGapPath()函数来获取ios中的本地文件音频路径。但它仍然没有解决。请告诉我如何在 ios 中指定本地音频文件路径。 在使用phonegap serve
而不是在本地安装应用程序时,有什么方法可以让本地声音文件正常工作?
@Sathiyaraj 如果从不是“index.html”的文件中调用获取路径的函数,则该函数将不起作用,因此您必须从返回的路径中裁剪多于或少于 10 个字符。试试这个:// Get absolute file path on the device. function getPhoneGapPath() var path = window.location.pathname; var sizefilename = path.length - (path.lastIndexOf("/")+1); path = path.substr( path, path.length - sizefilename ); return path; ;
【参考方案2】:
尝试给出一个绝对的本地路径。例如
新媒体("/android_asset/www/test.wav");
这应该可以在 Android 上运行。希望他们能在 PhoneGap 中解决这个问题,因为这是跨设备支持中的一个错误。
【讨论】:
感谢您提供这些信息。在看到路径之前,我无法弄清楚为什么它不起作用。我在写“/android_asset/polka.mp3”之类的东西。 iPhone 怎么样?有没有 iphone_asset 文件夹? 如果我使用 Phone Gap Build 会有什么不同?【参考方案3】:我有另一个版本的 getPhonegapPath,它会检测你何时使用 Android:
function getPhoneGapPath()
var path = window.location.pathname;
path = path.substr( path, path.length - 10 );
var devicePlatform = device.platform;
if(devicePlatform=="Android")
path = 'file://'+path;
return path;
;
【讨论】:
以上是关于在 phonegap 中播放本地声音的主要内容,如果未能解决你的问题,请参考以下文章
PhoneGap/Cordova iOS 播放声音禁用麦克风