Подтвердить что ты не робот

Поведение HTML5 Audio

У меня есть аудио-элемент на странице HTML5. Я начинаю играть аудио, а затем приостанавливаю его. После этого я вернусь на рабочий стол, нажав кнопку "домой" и сделав телефонный звонок. Когда вызов заканчивается, аудио-элемент возобновляется автоматически. Это происходит на Android 4.0.3

Проблема в том, что это не ожидаемое и желаемое поведение. К сожалению, когда браузер работает в фоновом режиме, события javascript не выбрасываются, и я не могу поймать и предотвратить это поведение с помощью Javascript.

Любая помощь приветствуется. Спасибо заранее.

4b9b3361

Ответ 1

У меня нет телефона ICS, чтобы попробовать, но вот что я сделал бы:

pause, очевидно, отслеживает положение аудиопотока. 4.0 автоматически возобновляется, когда вы приостановили аудиофайл

Итак, вместо паузы вы могли бы stop записать аудиофайл. К сожалению, stop не поддерживается HTML5.

У вас есть сложное решение:

  • pause аудио
  • сохранить позицию: trackPos = myTrack.currentTime;
  • объем магазина: trackVol = myTrack.volume;
  • отключить звук: myTrack.volume = 0;

Затем, когда пользователь возвращается и снова проигрывает:

, если trackPos существует

  • установите начальную позицию в trackPos: myTrack.currentTime = trackPos;
  • play
  • mytrack.volume = trackVol;
  • delete window.trackPos;

Это сложно, но должно работать, если вы используете элементы управления JavaScript.

Если вы используете собственные элементы управления, хотя воспроизведение и пауза будут управляться интерфейсом браузера. Затем вы должны просто сохранить позицию и начать получать REAL грязно:

  • удалите источники:

    myTrack.removeChid(yourSRCs)

  • восстановить ваши SRC и положение в фокусе

  • подождите, пока пользователь будет проигрывать

Это быстрый и грязный проект, не проверенный. Но он должен работать

//////РЕДАКТИРОВАТЬ

Рабочая демонстрация Javascript, по крайней мере, на моем рабочем столе. Попробуйте на своем ICS: JSFiddle

(сохраните файл, я думаю, вы не можете правильно запустить jsfiddle на телефоне)

Ответ 2

Попробуйте выполнить следующее в блоке script. Он должен работать.

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. Но вот здесь пример для переключения.

Ответ 3

Возможно, вы могли бы объявить логическое значение для отслеживания, которое вы приостановили вручную или нет, чтобы вы могли оценить его в фокусе или другом правильном событии.

Ответ 4

Вы пытались удалить звуковой объект из DOM и восстановить его при воспроизведении?

Ответ 5

Я бы привязал событие onFocus к логическому переключателю, чтобы определить предыдущее состояние аудиоплеера, если вы сосредоточитесь с предыдущим "приостановленным" состоянием, а затем остановите плеер или запустите его.