HTML5 аудио не воспроизводится несколько раз в устройстве Android 4.0.4 Собственный браузер
В настоящее время я работаю над проектом HTML5.
Существует проблема с воспроизведением одного и того же аудиофайла несколько раз на той же странице в автономном браузере Android. Эта проблема специально отмечена в версии Android ICS 4.0.4. В этой версии звук будет воспроизводиться один раз, но когда инициировано снова, звук не будет воспроизводиться. То же самое, что отлично работает в версии Android ICS 4.0.3 и в новой версии 4.1.1.
Протестированные устройства:
Samsung Galaxy Tab (Android 4.0.4): воспроизведение в первый раз только тогда, когда он не воспроизводится
HTC One (Android 4.0.4): воспроизведение в первый раз только тогда, когда он не воспроизводится
Sony Tab (Android 4.0.3): превосходно отлично, воспроизведение звука несколько раз
HTC Sensation (Android 4.0.3): превосходно отлично, воспроизводя аудио несколько раз
Samsung Nexus Phone (Android 4.1.1): отлично работает, проигрывая аудио несколько раз
Основываясь на некоторых исследованиях в Интернете, это похоже на проблему с версией 4.0.4 для Android
Пожалуйста, помогите мне найти решение, чтобы оно работало на всех устройствах.
Пожалуйста, используйте эту аудио-ссылку W3 Schools HTML5 для тестовых отключений
Ответы
Ответ 1
У меня есть рабочее решение.
Проблема была в браузере Android 4.0.4, когда звук воспроизводится один раз (заканчивается), тогда время поиска не будет reset в исходное положение, оно останется в самом конце.
Поэтому, установив currentTime = 0 после того, как звук закончился, будет reset в исходное положение, и таким образом мы можем воспроизводить тот же звук столько раз, сколько хотим обновление любой страницы.
Тестирование отлично работает на всех устройствах.
Код HTML:
<audio id="movie_audio">
<source src="my_audio_location/movie_audio.mp3" type='audio/mpeg; codecs="mp3"' />
<source src="my_audio_location/movie_audio.ogg" type='audio/ogg; codecs="vorbis"' />
</audio>
Код JavaScript:
var movie_audio = document.getElementById('movie_audio');
movie_audio.addEventListener('ended', function(){
movie_audio.currentTime = 0;
}
Ответ 2
Это работает для меня:
var movie_audio = document.getElementById('movie_audio');
movie_audio.addEventListener('ended', function(){
movie_audio.load();
});
Ответ 3
Если вышеуказанное решение не работает для вас, попробуйте это.
audio_element.addEventListener('timeupdate', function() {
if (audio_element.currentTime >= ( audio_element.duration - 0.3 ) ) {
audio_element.currentTime = 0;
audio_element.pause();
}
}, false);
Примечание. Мы устанавливаем стрелку в исходное положение непосредственно перед концом аудио.