提问者:小点点

HTML5音频在Android 4.0.4设备本机浏览器中未播放多次


我目前正在从事一个HTML5项目。

在Android本机浏览器中,在同一页面中多次播放同一音频文件时存在问题。此问题在 Android ICS 4.0.4 版本上特别明显。在此版本中,音频将播放一次,但再次启动时,音频将不会播放。同样的事情在Android ICS 4.0.3版本和较新的4.1.1版本中完美运行。

测试设备:<br>三星Galaxy Tab(Android4.0.4):第一次播放时不播放<br>HTC One(Android四点0.4)>第一次播放后不播放<br>索尼Tab(Android四点零.3)<完美,多次播放音频<br>三星Nexus手机,多次播放音频

根据互联网上的一些研究,这似乎是Android版本4.0.4的一个问题

请帮助我找到一些解决方案,使其在所有设备上工作。

请使用此 W3 学校 HTML5 音频链接进行试用


共3个答案

匿名用户

我有一个有效的解决方案。.

问题是在Android 4.0.4浏览器中,当音频播放一次(结束)时,搜索时间将不会重置为开始位置,而是停留在结束位置。因此,通过设置currentTime=0,音频结束后会将其重置为起始位置,这样我们就可以在不刷新任何页面的情况下播放相同的音频
经过测试,可在所有设备上完美运行。

代码:

<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;  
}

匿名用户

这对我有用:

var movie_audio = document.getElementById('movie_audio');  
movie_audio.addEventListener('ended', function(){  
   movie_audio.load(); 
});

匿名用户

如果上面的解决方案对你不起作用,试试这个。

audio_element.addEventListener('timeupdate', function() {
 if (audio_element.currentTime >= ( audio_element.duration - 0.3 ) ) {
  audio_element.currentTime = 0;
  audio_element.pause();
 }
}, false);  

注意:我们将搜索栏设置为音频结束前的起始位置。