Comportamiento de audio HTML5

Tengo un elemento de audio en una página HTML5. Comienzo a reproducir el audio y luego lo detengo. Después de eso vuelvo a la pantalla de inicio presionando el botón de inicio y hacer una llamada telefónica. Cuando termina la llamada, el elemento de audio se reanuda automáticamente. Esto ocurre en Android 4.0.3

El problema es que, este no es el comportamiento esperado y deseado. Lamentablemente, cuando el navegador se ejecuta en segundo plano, los eventos javascript no se lanzan y no puedo capturar y evitar este comportamiento con Javascript.

Cualquier ayuda es apreciada. Gracias por adelantado.

No tengo un teléfono ICS para probarlo, pero esto es lo que haría:

pause obviamente, mantiene un seguimiento de la posición del tiempo de audio. 4.0 parece que reanuda automáticamente donde detuvo el archivo de audio

Así que en lugar de pausar puede stop su archivo de audio. Desafortunadamente, stop no es compatible con HTML5.

Usted tiene una solución difícil:

  • pause audio
  • Almacene la posición: trackPos = myTrack.currentTime;
  • Volumen de la tienda: trackVol = myTrack.volume;
  • Silenciarlo: myTrack.volume = 0;

Entonces cuando el usuario vuelve y golpea jugar de nuevo:

Si trackPos existe

  • Establecer la posición inicial a trackPos: myTrack.currentTime = trackPos;
  • play
  • mytrack.volume = trackVol;
  • delete window.trackPos;

Esto es complicado pero debería funcionar si está utilizando controles JavaScript.

Si utiliza controles nativos, aunque la reproducción y la pausa se gestionarían mediante la interfaz del navegador. Entonces usted debe apenas almacenar la posición y comenzar a conseguir REAL sucio:

  • Eliminar las fuentes:

    MyTrack.removeChid (suSRCs)

  • Restaurar sus SRCs y la posición en el enfoque

  • Espere a que el usuario juegue

Es un tiro rápido y sucio, no probado. Pero debería funcionar

///EDITAR///

Una demo de JavaScript que funciona, al menos en mi escritorio. Pruébelo en su ICS: JSFiddle

(Guardar el archivo, supongo que no se puede iniciar jsfiddle correctamente en un teléfono)

Pruebe lo siguiente en un bloque de secuencia de comandos. Deberia de funcionar.

 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; 

No necesitas el evento onfocus, supongo. Pero, su aquí para un ejemplo de toggling.

Tal vez usted podría declarar un booleano para mantener la pista si se detuvo manualmente o no, por lo que podría evaluar en el foco u otro evento adecuado.

¿Ha intentado eliminar el objeto de audio del DOM y restaurarlo en el juego?

Adjuntaría un evento 'onFocus' al con un conmutador booleano para determinar el estado anterior del reproductor de audio, si obtienes el foco con un estado de pausa anterior y luego detener el reproductor, o bien reproducirlo.

  • Detectar si actualmente se desplaza una página web en Android
  • ¿Hay una manera de hacer un número de teléfono clicable en un teléfono de iphone o android para hacer una llamada en HTML?
  • Eventos de clics no registrados
  • Problemas de visibilidad y visibilidad del navegador de Android
  • ¿Qué hace -webkit-text-size-adjust?
  • Inyectar CSS a un sitio con webview en android
  • ¿Habilitar el registro interno en el emulador de Android WebKit?
  • Android WebKit enfocado textarea no dibujar imagen de fondo
  • ¿Visualización de archivos de activos de Android en un WebView?
  • La propiedad webkitForce del evento táctil: Feedback de presión de los dedos. Buscando documentación
  • Navegador Android en Windows
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.