2011-12-26 26 views
6

Estoy trabajando en una aplicación en Android que compartirá la pantalla con otro dispositivo Android. Esta aplicación se ejecutará en segundo plano como servicio.Captura de pantalla de la pantalla actual

Quiero capturar la pantalla (pantalla actual), guardarla como JPEG y enviarla continuamente a través de UDP a otro dispositivo Android.

Pero mi problema es cómo capturar la pantalla actual mediante la captura de framebuffer.

Por favor ayuda.

Respuesta

3

se puede tomar la captura de pantalla de un diseño al permitir

setDrawingCacheEnabled(true); 

de la vista.

Marque esta link

+0

Gracias. Pero esto solo daría la captura de pantalla de mi vista de aplicación. Quiero capturar lo que aparezca en la pantalla cuando mi aplicación se ejecute en segundo plano – user1095154

+0

desea la captura de pantalla del servicio en segundo plano ... que no sé ... espero que alguien lo ayude –

7

El uso de este dispositivo Android (y en otros sistemas Linux) se accede abriendo el/gráficos/dispositivo fb0/dev. Esto requiere acceso raíz e, incluso, con acceso raíz, no funcionará correctamente en todos los dispositivos. La mayoría de los dispositivos usan un par de framebuffers y alternan entre ellos. El problema más grande es que incluso con un teléfono rooteado, el ID de usuario de la máquina Dalvik no tiene el privilegio de acceder al dispositivo de búfer de cuadros (fb0). Esto significa que nunca podrá abrir y leer desde el dispositivo fb0 directamente desde el código Java. Tendrá que ejecutar una aplicación nativa de Linux como root y podrá acceder a fb0 (después de que el usuario dé permiso). Logré hacer que esto funcione y es bastante desafiante y también desaprobado por Google. Todavía puedo convertir esto en una aplicación comercial, pero las limitaciones e incompatibilidades ponen la probabilidad bastante baja.

+0

Hola BitBank, gracias por su respuesta. – user1095154

+1

Utilicé el enlace http://www.pocketmagic.net/?p=1473 para acceder a los búferes de cuadros. Pero cuando uso el mismo código usando un servicio para capturas de pantalla continuas, entonces aparece un problema de memoria. Pero cuando capturo una sola pantalla usando una actividad, entonces no hay ningún error de memoria. ¿Puede ayudar – user1095154

+0

Está mapeando y desinstalando la memoria de framebuffer o está manteniendo un puntero y usándola varias veces? Pude capturar continuamente la pantalla manteniendo fb0 abierto mientras lo estaba usando. – BitBank