Чем больше экспериментов я делаю, тем больше грубых краев я нахожу в реализации 2.35 аудио тега HTML5 в Android 2.3.3. Там много чего сломано, по крайней мере, на телефоне Droid X, который я использую для тестирования.
Лучшее, что я до сих пор придумал, - это лейкопластырь, на который ссылается мой первоначальный вопрос: как только вызов play () завершится, вызовите метод load (), чтобы подготовиться к следующему play (). :
if (navigator.userAgent.toLowerCase().indexOf("android") > -1)
audElt.addEventListener('ended', function () {
var t = setTimeout(function () { audElt.load(); }, 1000);
}, false);
Мне пришлось ограничить обходные пути для пользовательских агентов Android, потому что простой вызов метода load () создает проблемы в Chrome и создает ненужные поездки на сервер в системах, отличных от Android.
Мне пришлось добавить задержку в 1 секунду, потому что, если я просто вызвал load () из обработчика «закончилась», это прервало воспроизведение, которое, по-видимому, еще не «закончилось» ....
Конечно, он по-прежнему несколько раз извлекает звук с сервера, поэтому, если вы попытаетесь воспроизвести его несколько раз подряд, все пойдет на юг.