Подтвердить что ты не робот

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 для тестовых отключений

4b9b3361

Ответ 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);  

Примечание. Мы устанавливаем стрелку в исходное положение непосредственно перед концом аудио.