У меня есть простое приложение, которое многократно воспроизводит короткий звук, вызывая метод play() для элемента audio в JavaScript. Он хорошо работает в настольных браузерах, айпадах, айфонах и т. д. На мобильном устройстве под управлением Android 2.3.3 при первом воспроизведении звука я слышу его сразу после вызова метода play(), но при последующих вызовах появляется заметная и переменная задержка.
Я провел некоторое расследование и обнаружил, что устройство извлекает аудиофайл с сервера каждый раз, когда вызывается метод play(). Я могу вызывать метод load() для аудиоэлемента, чтобы повторно загружать его после каждого воспроизведения, тем самым ставя его в очередь для следующего воспроизведения, но с этим пластырем возникает ряд проблем. Мне бы очень хотелось, чтобы браузер просто постоянно загружал аудиоэлемент, а не выгружал его, как только он заканчивает воспроизведение. Кто-нибудь знает, возможно ли это?
РЕДАКТИРОВАТЬ: я провел немного больше исследований и обнаружил, что после воспроизведения звука состояние готовности аудиоэлемента остается равным HAVE_ENOUGH_DATA, даже если браузер не будет воспроизводить этот звук снова, не выгрузив его с сервера. Я считаю, что это ошибка. Я надеялся использовать состояние готовности для обнаружения браузеров, которые выгружаются после игры и явно загружаются только при необходимости, но это не сработает.