Introducción

Pantalla en espejo de un teléfono Android

scrcpy es una herramienta hecha por los mismos creadores de Genymobile y disponible para Linux, Windows y MacOS que permite visualizar desde el PC la pantalla del teléfono móvil que se encuentre conectado, de manera similar a como se experimentó [anteriormente con FFMpeg]({% post_url blog/2020-06-20-espejo-de-la-pantalla-de-Android-en-linux-ubuntu-utilizando-ffmpeg %}). Adicionalmente este software incluye la posibilidad de interactúar con el teléfono desde el PC y la posibilidad de copiar & pegar.

Según los autores, los objetivos de diseño de la aplicación son los siguientes.

  • Liviano.
  • Desempeño (30~60fps).
  • Calidad (1920×1080 o superior).
  • Baja latencia (35~70ms).
  • Corto tiempo de inicio (~1 segundo para mostrar la primer imagen).
  • No intrusivo (no queda nada instalado en el teléfono).

Prerequisitos

Es necesario contar con la siguiente configuración del teléfono.

  1. El teléfono debe tener por lo menos Android 5.0 (API 21) como sistema operativo.
  2. Activar Depuración por USB (USB debugging) bajo las Developer Options. Hacer esto antes de conectar el teléfono al PC.
  3. Aceptar en el teléfono la conexión desde el PC.

Si esto se ha realizado exitosamente, el teléfono empieza a ser visto desde el PC.

$ adb devices

List of devices attached
ce091929fcde1a1804	device

Si aparece el mensaje unauthorized significará que aún no ha sido aprobado el acceso al teléfono a través de la conexión.

Instalación

Para Ubuntu/Mint la instalación puede realizarse a través de dos diferentes tipos de medios. APT:

$ sudo apt install scrcpy

Y Snap:

$ sudo snap install scrcpy

La versión disponible en el repositorio de Snap parece estar mas actualizada.

Forma de uso

Para utilizar la aplicación sólo es necesario ejecutarla.

$ scrcpy

Esta aplicación recibe varias opciones interesantes para ajustar su funcionamiento. A continuación se describen algunas de las opciones mas útiles.

Grabar la pantalla

OpciónDescripción
--record file.mp4Graba en video lo mostrado en la pantalla del móvil. El formato es determinado por la opción --record-format o la extensión del archivo destino
--record-format formatDetermina el formato de la grabación, puede ser mp4 o mkv.
--no-displayDesactiva la pantalla del teléfono (en conjunto con --record)

Configurar recursos

OpciónDescripción
--max-size 1024Determina el tamaño de la imagen manteniendo automáticamente la proporción de la imagen. (0 sin límite)
--bit-rate 2MTasa de bits transmitidos. Por defecto 8M.
--max-fps 15Máximo permitido de frames por segundo.
--render-driver nameSolicita a SDL el uso de un driver específico. Las opciones disponibles son direct3d, opengl, opengles2, opengles, metal y software.

Configurar orientación

OpciónDescripción
--rotation valueDetermina el estado inicial de rotación. Los valores disponibles son 0 (rotación natural), 1 (90°), 2 (180°) y 3 (-90°)
--lock-video-orientation valueBloquea la pantalla con una rotación específica. Los valores disponibles son 0, 1, 2 y 3, cada valor aumenta 90° en contra de las manecillas del reloj. Por defecto es -1 (sin rotación).

Configurar visualización

OpciónDescripción
--window-title ‘My device’Determina el titulo
--window-x 100Establece el valor inicial para la posición horizontal de la ventana. Por defecto es “auto”.
--window-y 100Establece el valor inicial para la posición vertical de la ventana. Por defecto es “auto”.
--window-width 800Establece el ancho inicial de la ventana. Por defecto es 0.
--window-height 600Establece el alto inicial de la ventana. Por defecto es 0.
--always-on-topEvita que la ventana sea enviada hacia atrás por otra
--fullscreenInicia en modo pantalla completa
--stay-awakeMantiene siempre encendida la pantalla
--turn-screen-offApaga la pantalla al inicio de la conexión

Configurar interacción

OpciónDescripción
--no-controlDesactiva la interacción con la pantalla desde el PC
--show-touchesMuestra la ubicación de los taps

Transferir archivos

Para transferir archivos (adb push) desde el PC hacia el teléfono sólo es necesario arrastrar y soltar el archivo sobre la ventana de la aplicación.

Si el archivo es un *.apk, éste se instalará en el teléfono, de lo contrario, el archivo se copiará en /sdcard/.

Es posible ajustar la ruta donde se almacenarán los archivos copiados (por defecto /sdcard/) a cualquiera bajo este directorio mediante el siguiente comando.

$ scrcpy --push-target /sdcard/foo/bar/

Atajos de teclado

AtajoLinuxMacOS
Switch fullscreen modeCtrl+fCmd+f
Rotate display leftCtrl+ (left)Cmd+ (left)
Rotate display rightCtrl+ (right)Cmd+ (right)
Resize window to 1:1 (pixel-perfect)Ctrl+gCmd+g
Resize window to remove black bordersCtrl+x | Double-click¹Cmd+x | Double-click¹
Click on HOMECtrl+h | Middle-clickCtrl+h | Middle-click
Click on BACKCtrl+b | Right-click²Cmd+b | Right-click²
Click on APP_SWITCHCtrl+sCmd+s
Click on MENUCtrl+mCtrl+m
Click on VOLUME_UPCtrl+ (up)Cmd+ (up)
Click on VOLUME_DOWNCtrl+ (down)Cmd+ (down)
Click on POWERCtrl+pCmd+p
Power onRight-click²Right-click²
Turn device screen off (keep mirroring)Ctrl+oCmd+o
Turn device screen onCtrl+Shift+oCmd+Shift+o
Rotate device screenCtrl+rCmd+r
Expand notification panelCtrl+nCmd+n
Collapse notification panelCtrl+Shift+nCmd+Shift+n
Copy device clipboard to computerCtrl+cCmd+c
Paste computer clipboard to deviceCtrl+vCmd+v
Copy computer clipboard to device and pasteCtrl+Shift+vCmd+Shift+v
Enable/disable FPS counter (on stdout)Ctrl+iCmd+i

¹ Double-click on black borders to remove them.
² Right-click turns the screen on if it was off, presses BACK otherwise.

Recursos

  1. scrcpy de Genymobile
    https://github.com/Genymobile/scrcpy