¿Captura de pantalla externa en Android?

Las aplicaciones de Android, a través de la clase Presentation y las instalaciones relacionadas, pueden mostrar contenido independiente en una pantalla externa (HDMI, MHL, Miracast, etc.) que en la pantalla táctil de un teléfono o una tableta (lo que llamaré aquí la " .

Para la pantalla primaria, podemos usar screencap o DDMS para hacer una captura de pantalla.

¿Hay una manera de hacer una captura de pantalla de la pantalla externa?

Idealmente, sería una solución que podría ser utilizada similar a screencap / DDMS, sin modificaciones de la aplicación. Sin embargo, las soluciones que implican copiar de algún modo el contenido de la Window representa la exhibición externa también serían interesantes.

No hay función de OS para capturar la pantalla externa.

La pantalla principal se compone de varias fuentes, al igual que la pantalla externa. La "captura de pantalla" característica es en realidad sólo otra forma de compuesto las diversas fuentes. Debido a que utiliza los mismos parámetros que la pantalla principal, obtiene la misma salida. (Observe que cualquier capa "segura", como el vídeo protegido por DRM, no aparece.) Así que para "capturar" la pantalla externa, se desea una variante de captura de pantalla que utilice la pantalla externa "pila de capas" en lugar de El principal, y no hay API para hacerlo.

(Vea SurfaceFlinger::captureScreenImplLocked() en SurfaceFlinger.cpp ).

El comando screenrecord hace algo similar: crea una pantalla virtual con la pila de capas de la pantalla principal y captura todo lo que se hace allí.

En cuanto a la captura de la salida de una Presentation va, hay un par de pruebas CTS que pueden ser de interés. VirtualDisplayTest crea una Presentation y la captura con un ImageReader , mientras que EncodeVirtualDisplayTest alimenta la presentación a través de una ruta de codificación / decodificación de vídeo completa. Las pruebas sólo dibujar una serie de colores y luego comprobar para asegurarse de que los colores se pueden leer de nuevo. Ambos requieren versiones recientes de Android (por ejemplo, ImageReader no existía hasta la API 19), y los permisos limitados de la aplicación restringirán la salida a lo que la aplicación misma está procesando.

  • SDK Manager roto después de actualización Mavericks
  • Cambios de código no reflejados en .apk
  • ¿Cuál es la diferencia entre las API de Google en SDK para Android
  • Cómo revertir Android SDK Tools a una revisión anterior?
  • Cómo actualizar android sdk a 22.6.2
  • Las herramientas de Android y las carpetas de herramientas de plataformas desaparecieron
  • PÁNICO: No se puede encontrar la ruta del sistema AVD. Por favor, defina ANDROID_SDK_ROOT
  • Actividad en blanco que no se creó con New-> Android Activity Wizard
  • ¿Cómo hacer que "Hierarchy Viewer" funcione en un dispositivo real?
  • Herramientas SDK de Android 21: Ayuda en la ficha Compilar con
  • Android SDK Manager - ¿Necesita instalar todas las plataformas android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.