2013-02-20 4 views
5

Я пытаюсь воспроизвести аудио с помощью тега HTML5 Audio на своем телефоне. Я загрузил звук, но когда я запускаю команду .play(), ничего не происходит. Я сделал элементы управления по умолчанию видимыми, чтобы проверить, нажав эту кнопку воспроизведения, и тот работает, и звук воспроизводится. Я также попытался воспроизвести звук, выполнив javascript из адресной строки, и это работает.Android не воспроизводит html5 аудио с интервала

код, я использую, чтобы играть выглядит примерно так:

setInterval(function(){ 
    if(blahblah){ 
     document.getElementById("player").play(); 
    } 
},500); 

Чтобы убедиться, что он даже пытается воспроизвести звук, я ставлю оповещение после него, как это:

setInterval(function(){ 
    if(blahblah){ 
     document.getElementById("player").play(); 
     alert("Played!"); 
    } 
},500); 

Я видел предупреждение, но звук не воспроизводился.

Спасибо за любую помощь :)

+0

Никто не знает, что не так? – JerwuQu

+0

У меня такая же проблема, хотя я все пробовал. Howler.js, Soundmanager2 и т. Д. Ничего не работает. :( – Jared

ответ

1

Большинство мобильных устройств только позволит вам воспроизводить звук, когда это результат взаимодействия с пользователем. Если вы поместите свой игровой код в событие с нажатием кнопки, он должен работать (если у вас нет других ошибок в коде), но устройство препятствует воспроизведению вашего аудио изнутри setInterval, потому что оно не считает, что оно имеет разрешение пользователя играть в нее.

Что я делаю сейчас, и я признаю, что это обходное решение, я играю и сразу останавливаю звук внутри события нажатия кнопки, а затем вызываю setInterval. Он работает - на данный момент - потому что устройство считает, что ему было предоставлено разрешение на воспроизведение этого звука пользователем, даже если я его инициирую позже. Код внутри моей кнопки мыши событие выглядит следующим образом:

document.getElementById("player").play(); 
document.getElementById("player").pause(); 

setInterval(function(){ 
    document.getElementById("player").play(); 
}, 500); 

Имейте в виду, что на мобильном телефоне, он не может играть почти так же гладко, как это делает на вашем компьютере. Ищите альтернативные подходы, где это возможно.

Смежные вопросы