在phonegap中播放本地声音

时间:2010-12-14 11:49:23

标签: android jquery ios cordova

我的.wav文件夹中有www个文件。我使用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> 

声音无法播放。

3 个答案:

答案 0 :(得分:48)

您可以使用window.location.pathname在任何PhoneGap应用中获取应用的路径。这样您就不必为Android进行硬编码。在iPhone上它看起来像这样:

  

的/ var /移动/应用/ {GUID} / {appname中}。应用程序/网络/ 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' );

答案 1 :(得分:31)

尝试提供绝对的本地路径。 E.g。

新媒体(“/ android_asset / www / test.wav”);

这应该适用于Android。希望他们能在PhoneGap中解决这个问题,因为这是跨设备支持中的一个错误。

答案 2 :(得分:0)

我有另一个版本的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;
};