在 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 媒体声音在 5 次后停止播放

PhoneGap/Cordova iOS 播放声音禁用麦克风

phonegap 媒体插件无法处理多种声音?

PhoneGap LimeJS 声音未加载

Phaser HTML5 应用程序通过Phonegap Cloud Build 移植后无法播放声音

Phonegap / Cordova 改变个别声音的音量?