Cómo grabar la pantalla de actividad de la webview con Android MediaCodec?
Tengo la tarea de registrar la actividad del usuario en una webview, en otras palabras, necesito crear un archivo de video mp4 mientras el usuario navega en una vista web. Bastante desafiante 🙂 I fuente que en Android 4.3 introdujo MediaCodec: se amplió para incluir una forma de proporcionar la entrada a través de una superficie (a través del método createInputSurface). Esto permite que la entrada provenga de la previsualización de la cámara o del renderizado de OpenGL ES. Incluso encuentro un ejemplo donde puedes grabar un juego escrito en opengl: http://bigflake.com/mediacodec/
Mi pregunta es: ¿cómo puedo grabar una actividad de webview? Supongo que si pudiera dibujar el contenido de la webview a la textura opengl, que todo estaría bien. Pero no sé cómo hacer esto.
- Twitter Bootstrap no funciona en Android WebView
- Gestión de permisos de descarga de archivos WebView y permisos de tiempo de ejecución
- Espacios en blanco usando la vista web de android dentro de scrollview con una red móvil de jQuery
- No puede abrir la URL de twitter en la vista web de android
- Android cómo mostrar PopupMenu en webview como GMail
¿Puede alguien ayudarme con esto?
- Cómo forzar el teclado con números en el sitio web para móviles en Android
- Inicio de sesión de Twitter utilizando WebView
- Abrir un archivo PDF local en WebView con Google Docs
- Cómo imitar el navegador predeterminado para descargar archivos .apk desde webview?
- OnLongClickListener no funciona en WebView
- ¿WebViewClient y WebChromeClient se excluyen mutuamente?
- Enviar solicitud de envío junto con HttpHeaders en Android
- Tuve que cargar dos datos dos veces para que WebView se actualizara en Android
¿Por qué no intentar WebView.onDraw
primero, en lugar de usar OpenGL? Este último enfoque puede ser más complicado, y no es compatible con todos los dispositivos.
Una vez que usted será capaz de obtener las capturas de pantalla, entonces usted puede crear el vídeo ( para crear el vídeo de la secuencia de imágenes en android ), una tarea separada donde mediacodec debería ayudar.
"Supongo que si pudiera dibujar el contenido de la webview a la textura opengl".
Es posible.
SurfaceTexture es básicamente su punto de entrada en la capa de OpenGL. Se inicializa con un ID de textura de OpenGL y realiza todo su renderizado en esa textura.
Los pasos para hacer que su vista sea opengl:
1.Inicializar una textura de OpenGL
2.Within un contexto OpenGL construir una SurfaceTexture con el ID de textura. Utilice SurfaceTexture.setDefaultBufferSize (int width, int height) para asegurarse de tener suficiente espacio en la textura para que la vista se procese.
3.Create una superficie construida con SurfaceTexture anterior.
4. En el onDraw de la vista, use el lienzo devuelto por Surface.lockCanvas para hacer el dibujo de la vista. Obviamente puede hacer esto con cualquier vista, y no sólo con WebView. Además Canvas tiene un montón de métodos de dibujo, lo que le permite hacer cosas funky, funky.
El código fuente se puede encontrar aquí: https://github.com/ArtemBogush/AndroidViewToGLRendering Y usted puede encontrar algunas explicaciones aquí: http://www.felixjones.co.uk/neo%20website/Android_View/
- Inconsistencia en el registro de depuración de Flurry
- Cursor finalizado sin cerrar antes () en ListFragment