Comportamiento extraño de la aplicación híbrida basada en CrossWalk al reproducir audio web de m4a
Tenemos problemas con una aplicación híbrida de lector de audio, usando archivos de audio m4a bastante grandes. En resumen, tarda demasiado tiempo en iniciar la reproducción (cuando se utilizan recursos de audio en línea).
Para ilustrar el problema, hemos creado un prototipo más pequeño con la siguiente estructura:
- Android: Guardar XWalkView - Estado de la pasarela
- Crosswalk con Eclipse se bloquea
- Error de compilación después de agregar el complemento Crosswalk a un proyecto Android de Cordova
- ¿Cómo obtener contenido html de XWalkView?
- ¿Tiene el nuevo Android WebView el mismo rendimiento que CrossWalk WebView?
Cuerpo:
<audio src="..." controls="controls" preload="none"></audio> <button class="change-current-time">Play and change currentTime</button>
Guión:
var audioTags = document.querySelectorAll('audio'); [].forEach.call(audioTags, function (item) { item.addEventListener('play', onPlayStateChange); item.addEventListener('timeupdate', onPlayStateChange); item.addEventListener('error', onPlayStateChange); item.addEventListener('pause', onPauseReset); }); function onPlayStateChange(e) { var id = e.target.parentNode.id; if (count[id]) { return; } if (e.type === 'play') { count[id + 'start'] = +new Date(); } else if (e.target.parentNode.querySelector('audio').currentTime > currentTimeOffset) { var span = e.target.parentNode.querySelector('span'); count[id] = 1; if (span) { span.innerText = e.type === 'error' ? 'Audio type or codec does not supported' : new Date() - count[id + 'start']; } } }
Hay el ejemplo completo.
Cuando construimos la aplicación con Cordova 6.4.0 usando WebView, comienza la reproducción en ~ 3.5s. La actividad de red se ve así:
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=webview HTTP/1.1 206 29522945 GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=webview HTTP/1.1 206 326657 GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=webview HTTP/1.1 206 29163520
Cuando construimos la aplicación con Cordova 6.4.0 con Crosswalk-webview plugin 2.2.0, se inicia la reproducción en 18s en el mejor de los casos, pero a veces el retraso es aún más sustancial – hasta 45s. Parece que la principal razón es la diferencia en la actividad de la red:
GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 206 2 GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 200 29522945 GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 206 577690 GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 200 29522945 GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 206 577690 GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 200 29522945 GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 206 577690 GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 200 29522945 GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 206 577690 GET /tmp/1916firstchapterscollection_09_various_64kb.m4a?app=crosswalk HTTP/1.1 206 7384995
… cuando solo se sirve la primera solicitud con el user-agent 'normal', todas las subsiguientes son servidas con stagefright/1.2 (Linux;Android 5.0.1)
.
¿Por qué la diferencia, y cómo podemos evitar esto?
PS Aquí está la carpeta con todos los apks y datos relacionados.
- Cordova / android compila el error con el paso de peatones
- Crosswalk Cordova Android múltiples archivos select
- Android: cómo excluir dispositivos con webview que no admita webGL, es decir, están en la lista gpu_blacklist
- Android In App Subscription siempre devuelve el recibo inicial, nunca recibo la renovación
- Cómo agregar crosswalk webview en mi propio módulo de biblioteca de Android?
- La aplicación de creación de Ionic falló debido a Crosswalk
- ¿Hay un webviewclient de XWalkView?
- ¿Cómo crear un XWalkView dentro de un servicio?
Si encontró algún error relacionado con el complemento de cruce de peatones, puede enviarlo si aún no lo ha enviado https://crosswalk-project.org/jira/plugins/servlet/mobile#login/ El sitio del proyecto de Crosswalk, generalmente toma una acción imidiate y lo resuelve. Si lo resolvió, actualice la respuesta aquí.
ACTUALIZAR
Encontré tu problema (tal vez el tuyo): https://crosswalk-project.org/jira/plugins/servlet/mobile#issue/XWALK-7484
Los desarrolladores que tienen la misma pregunta rastrear el problema en este enlace .. ATB