2012-12-05 52 views
21

我目前正在致力於一個HTML5項目。HTML5音頻在Android 4.0.4設備中不能播放多次Native Browser

多次播放同一音頻文件Android本機瀏覽器有一個問題。該問題特別注意於Android ICS 4.0.4版本。在這個版本中,音頻將會播放一次,但是當再次發起時音頻將不會播放。同樣的事情是在Android ICS 4.0.3版本和更新的4.1.1版本完美工作。

測試的設備:
三星Galaxy Tab(安卓4.0.4):打第一時間才把它不玩
的HTC One(安卓4.0.4):播放僅第一次那麼它不玩
索尼標籤(Android 4.0.3):完全沒有問題,播放音頻多次
HTC感覺(安卓4.0.3):完全沒有問題,播放音頻多次
三星Nexus手機(安卓4.1.1):完全沒有問題,播放音頻多次

基於Internet的一些研究,這似乎是與Android版本的問題4.0.4

請幫我找到一些解決方案使其可以在所有設備上工作。

Please use this W3 Schools HTML5 audio link for try outs

+0

我得到了同樣的問題,在我的項目。 –

+0

我也有類似的問題,希望社區可以提供幫助。 – Deepukjayan

+0

將一個演示網址發佈到HTML5應用程序以便其他人可以測試它是否符合您的最佳利益?至少直到有人能夠回答它。否則再現有點困難。 –

回答

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

如果上述解決方案不適合你,試試這個。

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

注意:我們將seekbar設置爲音頻結束之前的開始位置。

1

這個工作對我來說:

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