21

我目前正在开发一个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):非常好,多次播放音频

根据对 Internet 的一些研究,这似乎是Android 版本 4.0.4 的问题

请帮助我找到一些解决方案,使其适用于所有设备。

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

4

3 回答 3

6

我有一个可行的解决方案..

问题出在 Android 4.0.4 浏览器中,当音频播放一次(结束)时,寻道时间不会重置到起始位置,它本身会停留在结束位置。因此,通过在音频结束后设置currentTime = 0会将其重置为起始位置,这样我们就可以根据需要多次播放相同的音频,而无需任何页面刷新。 经过测试,在所有设备上都能完美运行。

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;  
}
于 2012-12-06T04:56:21.640 回答
1

这对我有用:

var movie_audio = document.getElementById('movie_audio');  
movie_audio.addEventListener('ended', function(){  
   movie_audio.load(); 
});
于 2013-08-28T12:15:35.357 回答
0

如果上述解决方案对您不起作用,请尝试此解决方案。

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

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

于 2012-12-17T04:14:49.550 回答