私は単純なアプリケーションを繰り返し使用しています。デスクトップのブラウザ、ipads、iphoneなどでうまくいきます。Android 2.3.3を実行しているモバイルデバイスでは、初めてサウンドを再生するときにplay()メソッドを呼び出した直後に聞きますが、その後の呼び出しでは顕著で可変の遅延。JavaScriptでオーディオ要素のplay()メソッドを呼び出すと、Androidブラウザが各play()の後にHTML5オーディオ要素をアンロードして、遅延を引き起こします。
私はいくつかのスルーチューニングを行い、play()メソッドが呼び出されるたびにデバイスがサーバーからオーディオファイルを取得していることがわかりました。オーディオ要素のload()メソッドを呼び出して、各演奏後にリロードして、次の演奏のためにキューイングすることができますが、そのバンドエイドにはいくつかの問題があります。私は本当に、再生を終了するとすぐにブラウザをアンロードするのではなく、永久にロードされたオーディオ要素を保つようにしたいと思います。それが可能なら誰でも知っていますか?
EDIT:もう少し調べてみましたが、サウンドを再生した後、ブラウザがそのサウンドを再フェッチせずに再生しなくても、オーディオ要素の読み取り値はHAVE_ENOUGH_DATAのままですサーバーから。これはバグだと思う。私はreadystateを使って、再生した後にアンロードするブラウザを検出し、必要に応じて明示的にロードすることを望んだが、うまくいかない。