2010-12-14 15 views
27

Mam plik .wav w moim folderze www. Korzystam z jQuery z następującym kodem. Alarmy są wyłączane, ale dźwięk nie jest odtwarzany. czy robię coś źle?Odtwarzanie lokalnego dźwięku w phonegap

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

Dźwięk po prostu nie jest odtwarzany.

Odpowiedz

31

Spróbuj podać bezwzględną ścieżkę lokalną. Na przykład.

nowe Media ("/ android_asset/www/test.wav");

To powinno działać na Androidzie. Mamy nadzieję, że naprawią to w PhoneGap, ponieważ jest to błąd w obsłudze wielu urządzeń.

+0

Dziękuję za ten bit informacji. Nie mogłem zrozumieć, dlaczego nie działa, dopóki nie zobaczyłem ścieżki. Pisałem "/android_asset/polka.mp3" i podobne rzeczy. – wavyGravy

+0

A co z iPhonem? Czy istnieje folder iphone_asset? – Mark

+0

Czy korzystanie z luki w telefonie jest inne? –

48

Możesz użyć window.location.pathname, aby uzyskać ścieżkę aplikacji w dowolnej aplikacji PhoneGap. W ten sposób nie trzeba go kodować na stałe dla Androida. Będzie to wyglądać mniej więcej tak na iPhone:

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

i to na Androida:

/android_asset/www/index.html

Strip off /index.html, prepend file:// i dołączyć plik test.wav.

Demo: http://jsfiddle.net/ThinkingStiff/r7eay/

Kod:

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

Dziękuję ci za to! Phonegap 3.0 został właśnie wydany i jest NIESAMOWITE nieudokumentowane we wszystkich oficjalnych miejscach. – c0bra

+2

Ta odpowiedź położy kres 2 dniom nędzy. Dziękuję bardzo. – tomwoods

+2

Próbowałem za pomocą powyższej funkcji getPhoneGapPath(), aby uzyskać lokalną ścieżkę audio pliku w ios. Ale wciąż nie wyszło. Podaj mi, jak określić lokalną ścieżkę pliku audio w ios. – Sathiyaraj

0

mam inną wersję getPhonegapPath, wykrywać, kiedy you'r używając 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; 
}; 
Powiązane problemy