Поведение звука HTML5
У меня есть аудиоэлемент на странице HTML5. Я начинаю проигрывать звук, а затем приостанавливаю его. После этого я возвращаюсь на рабочий стол, нажав кнопку home и делаю телефонный звонок. Когда вызов заканчивается, звуковой элемент возобновляется автоматически. Это происходит на Android 4.0.3
Проблема в том, что это не ожидаемое и желаемое поведение. К сожалению, когда браузер работает в фоновом режиме, события javascript не выбрасываются, и я не могу поймать и предотвратить это поведение с помощью Яваскрипт.
Любая помощь приветствуется. Заранее спасибо.
5 ответов:
У меня нет телефона ICS, чтобы попробовать его, но вот что я бы сделал:
pause
очевидно, отслеживает положение аудио времени. 4.0, кажется, автоматически возобновляется там, где вы приостановили аудиофайлТак что вместо паузы вы можете
stop
Ваш аудиофайл. К сожалению,stop
не поддерживается HTML5.У вас есть хитрое решение:
pause
аудио- запомните позицию:
trackPos = myTrack.currentTime;
- объем хранилища:
trackVol = myTrack.volume;
- приглушить его:
myTrack.volume = 0;
Затем, когда пользователь возвращается и снова нажимает play:
Если trackPos существует
- задайте начальную позицию для trackPos:
myTrack.currentTime = trackPos;
play
mytrack.volume = trackVol;
delete window.trackPos;
Это сложно, но должно работать, если вы используете элементы управления JavaScript.
Если вы используете собственные элементы управления, хотя воспроизведение и пауза будут управляться интерфейсом браузера. Затем вы должны просто сохранить позицию и начать получать Настоящий грязный:
Это быстрый и грязный Черновик, не проверенный. Но это должно сработать
Удалить источники:
MyTrack.removeChid (yourSRCs)
Восстановите ваши SRCs и положение на Фокусе
Дождитесь, пока пользователь сыграет
///править///
Рабочая демонстрация Javascript, по крайней мере на моем рабочем столе. Попробуйте это на ваших ИС: JSFiddle
(сохранить файл, я думаю, вы не можете правильно запустить jsfiddle на телефоне)
Попробуйте выполнить следующие действия в блоке скрипта. Это должно сработать.
var ppAudio = function(event){ var ppMethod = (event.type == "blur")? "pause" : "play", audio = document.getElementsByTagName("audio"), l = audio.length; for (;l--;) audio[l][ppMethod](); }; // window.onfocus = ppAudio; window.onblur = ppAudio;
Полагаю, вам не нужно событие onfocus. Но, его здесь для примера переключения.