web-dev-qa-db-fra.com

Jouer du son local dans Phonegap

J'ai un fichier .wav dans mon dossier www. J'utilise jQuery avec le code suivant. Les alertes se déclenchent mais le son ne joue pas. Est-ce que je fais quelque chose de mal?

<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> 

Le son ne joue tout simplement pas.

27
james

Essayez de donner un chemin local absolu. Par exemple.

nouveau média ("/ Android_asset/www/test.wav");

Cela devrait fonctionner sur Android. J'espère qu'ils vont résoudre ce problème dans PhoneGap, car il s'agit d'un bug dans le support inter-appareils.

31
Ben Winters

Vous pouvez utiliser window.location.pathname pour obtenir le chemin de votre application dans n’importe quelle application PhoneGap. De cette façon, vous n'avez pas à le coder en dur pour Android. Cela ressemblera à ceci sur iPhone:

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

Et ceci sur Android:

/Android_asset/www/index.html

Dénudez le /index.html, ajoutez le file:// au début et ajoutez votre fichier test.wav.

Démo: http://jsfiddle.net/ThinkingStiff/r7eay/

Code:

function getPhoneGapPath() {

    var path = window.location.pathname;
    path = path.substr( path, path.length - 10 );
    return 'file://' + path;

};

var snd = new Media( getPhoneGapPath() + 'test.wav' );
48
ThinkingStiff

J'ai une autre version de getPhonegapPath, elle détecte lorsque vous utilisez 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;
};
0
Marcelo Agimóvel