Ответ 1
Попробуйте дать абсолютный локальный путь. Например.
new Media ( "/android_asset/www/test.wav" );
Это должно работать на Android. Надеюсь, они исправят это в PhoneGap, поскольку это что-то вроде ошибки в поддержке кросс-устройств.
У меня есть файл .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("[email protected]!");
var snd = new Media("test.wav");
snd.play();
}
});
</script>
Звук просто не воспроизводится.
Попробуйте дать абсолютный локальный путь. Например.
new Media ( "/android_asset/www/test.wav" );
Это должно работать на Android. Надеюсь, они исправят это в PhoneGap, поскольку это что-то вроде ошибки в поддержке кросс-устройств.
Вы можете использовать window.location.pathname
, чтобы получить путь к вашему приложению в любом приложении PhoneGap. Таким образом, вам не нужно жестко кодировать его для Android. Это будет выглядеть примерно так на iPhone:
/вар/мобильный/Применения/{GUID}/{имя_приложения}.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' );
У меня есть другая версия 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;
};