21

私は現在、HTML5プロジェクトに取り組んでいます。

Androidネイティブブラウザの同じページで同じオーディオファイルを複数回再生する際に問題が発生します。この問題は、AndroidICS4.0.4バージョンで特に発生します。このバージョンでは、オーディオは1回再生されますが、再度開始するとオーディオは再生されません。同じことがAndroidICS4.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):完全に正常、オーディオを複数回再生

インターネットに関するいくつかの調査に基づくと、Androidバージョン4.0.4の問題のようです。

すべてのデバイスで機能させるための解決策を見つけるのを手伝ってください。

試してみるには、このW3SchoolsHTML5オーディオリンクを使用してください

4

3 に答える 3

6

私は実用的な解決策を得ました..

問題は Android 4.0.4 ブラウザで、オーディオが 1 回再生されると (終了)、シーク時間が開始位置にリセットされず、最後にとどまります。したがって、オーディオが終了した後に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 に答える
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 に答える