2010-12-14 24 views
27

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?Lecture du son local dans le téléphone

<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("[email protected]!"); 
     var snd = new Media("test.wav"); 
     snd.play(); 
    } 
}); 

</script> 

Le son ne joue tout simplement pas.

Répondre

31

Essayez d'indiquer un chemin local absolu. Par exemple.

new Média ("/ android_asset/www/test.wav");

Cela devrait fonctionner sur Android. Heureusement, ils vont corriger cela dans PhoneGap, car il s'agit d'un bug dans le support multi-périphérique.

+0

Merci pour ce peu d'info. Je ne pouvais pas comprendre pourquoi cela ne fonctionnait pas jusqu'à ce que j'ai vu le chemin. J'écrivais "/android_asset/polka.mp3" et des trucs comme ça. – wavyGravy

+0

Qu'en est-il de l'iPhone? Y a-t-il un dossier iphone_asset? – Mark

+0

Cela fait-il une différence si j'utilise Phone Gap Build? –

48

Vous pouvez utiliser window.location.pathname pour obtenir le chemin de votre application dans n'importe quelle application PhoneGap. De cette façon, vous ne devez pas le coder en dur pour Android. Il ressemblera à quelque chose comme ça sur iPhone:

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

Et ceci sur Android:

/android_asset/www/index.html

Désape la /index.html, précédez file:// 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'); 
+1

Merci merci pour ça! Phonegap 3.0 vient d'être publié et il est encore non documenté dans tous les endroits officiels. – c0bra

+2

Cette réponse met fin à 2 jours de misère. Merci beaucoup. – tomwoods

+2

J'ai essayé en utilisant la fonction getPhoneGapPath() ci-dessus pour obtenir le chemin audio du fichier local dans ios. Mais ce n'est pas encore fini. S'il vous plaît donnez-moi une idée pour savoir comment spécifier le chemin du fichier audio local dans ios. – Sathiyaraj

0

J'ai une autre version de getPhonegapPath, il est détecter quand you'r utilisant 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; 
};