15 KiB
Only the original README is guaranteed to be up-to-date.
scrcpy (v1.12.1)
Esta aplicação fornece visualização e controle de dispositivos Android conectados via USB (ou via TCP/IP). Não requer nenhum acesso root. Funciona em GNU/Linux, Windows e macOS.
Foco em:
- leveza (Nativo, mostra apenas a tela do dispositivo)
- performance (30~60fps)
- qualidade (1920×1080 ou acima)
- baixa latência (35~70ms)
- baixo tempo de inicialização (~1 segundo para mostrar a primeira imagem)
- não intrusivo (nada é deixado instalado no dispositivo)
Requisitos
O Dispositivo Android requer pelo menos a API 21 (Android 5.0).
Tenha certeza de ter ativado a depuração USB no(s) seu(s) dispositivo(s).
Em alguns dispositivos, você também precisará ativar uma opção adicional para controlá-lo usando o teclado e mouse.
Obtendo o app
Linux
No Debian (em testes e sid por enquanto):
apt install scrcpy
O pacote Snap está disponível: scrcpy
.
Para Arch Linux, um pacote AUR está disponível: scrcpy
.
Para Gentoo, uma Ebuild está disponível: scrcpy/
.
Você também pode compilar a aplicação manualmente (não se preocupe, não é tão difícil).
Windows
Para Windows, para simplicidade, um arquivo pré-compilado com todas as dependências
(incluindo adb
) está disponível:
scrcpy-win64-v1.12.1.zip
(SHA-256: 57d34b6d16cfd9fe169bc37c4df58ebd256d05c1ea3febc63d9cb0a027ab47c9)
Também disponível em Chocolatey:
choco install scrcpy
choco install adb # se você ainda não o tem
E no Scoop:
scoop install scrcpy
scoop install adb # se você ainda não o tem
Você também pode compilar a aplicação manualmente.
macOS
A aplicação está disponível em Homebrew. Apenas a instale:
brew install scrcpy
Você precisa do adb
, acessível através do seu PATH
. Se você ainda não o tem:
brew cask install android-platform-tools
Você também pode compilar a aplicação manualmente.
Executar
Plugue um dispositivo Android e execute:
scrcpy
Também aceita argumentos de linha de comando, listados por:
scrcpy --help
Funcionalidades
Configuração de captura
Redução de tamanho
Algumas vezes, é útil espelhar um dispositivo Android em uma resolução menor para aumentar performance.
Para limitar ambos(largura e altura) para algum valor (ex: 1024):
scrcpy --max-size 1024
scrcpy -m 1024 # versão reduzida
A outra dimensão é calculada para que a proporção do dispositivo seja preservada. Dessa forma, um dispositivo em 1920x1080 será espelhado em 1024x576.
Mudanças no bit-rate
O Padrão de bit-rate é 8 mbps. Para mudar o bitrate do vídeo (ex: para 2 Mbps):
scrcpy --bit-rate 2M
scrcpy -b 2M # versão reduzida
Limitar frame rates
Em dispositivos com Android >= 10, a captura de frame rate pode ser limitada:
scrcpy --max-fps 15
Cortar
A tela do dispositivo pode ser cortada para espelhar apenas uma parte da tela.
Isso é útil por exemplo, ao espelhar apenas um olho do Oculus Go:
scrcpy --crop 1224:1440:0:0 # 1224x1440 no deslocamento (0,0)
Se --max-size
também for especificado, redimensionar é aplicado após os cortes.
Gravando
É possível gravar a tela enquanto ocorre o espelhamento:
scrcpy --record file.mp4
scrcpy -r file.mkv
Para desativar o espelhamento durante a gravação:
scrcpy --no-display --record file.mp4
scrcpy -Nr file.mkv
# interrompe a gravação com Ctrl+C
# Ctrl+C não encerrar propriamente no Windows, então desconecte o dispositivo
"Frames pulados" são gravados, mesmo que não sejam mostrado em tempo real (por motivos de performance). Frames tem seu horário carimbado no dispositivo, então [Variação de atraso nos pacotes] não impacta na gravação do arquivo.
Conexão
Wireless/Sem fio
Scrcpy usa adb
para se comunicar com o dispositivo, e adb
pode conectar-se à um dispositivo via TCP/IP:
- Conecte o dispositivo a mesma rede Wi-Fi do seu computador.
- Pegue o endereço de IP do seu dispositivo (Em Configurações → Sobre o Telefone → Status).
- Ative o adb via TCP/IP no seu dispositivo:
adb tcpip 5555
. - Desplugue seu dispositivo.
- Conecte-se ao seu dispositivo:
adb connect DEVICE_IP:5555
(substitua oDEVICE_IP
). - Execute
scrcpy
como de costume.
Pode ser útil diminuir o bit-rate e a resolução:
scrcpy --bit-rate 2M --max-size 800
scrcpy -b2M -m800 # versão reduzida
N-dispositivos
Se alguns dispositivos estão listados em adb devices
, você precisa especificar o serial:
scrcpy --serial 0123456789abcdef
scrcpy -s 0123456789abcdef # versão reduzida
Se o dispositivo está conectado via TCP/IP:
scrcpy --serial 192.168.0.1:5555
scrcpy -s 192.168.0.1:5555 # versão reduzida
Você pode iniciar algumas instâncias do scrcpy para alguns dispositivos.
Conexão via SSH
Para conectar-se à um dispositivo remoto, é possível se conectar um cliente local adb
à um servidor adb
remoto (contanto que eles usem a mesma versão do protocolo adb):
adb kill-server # encerra o servidor local na 5037
ssh -CN -L5037:localhost:5037 -R27183:localhost:27183 your_remote_computer
# mantém isso aberto
De outro terminal:
scrcpy
Igual para conexões sem fio, pode ser útil reduzir a qualidade:
scrcpy -b2M -m800 --max-fps 15
Configurações de Janela
Título
Por padrão, o título da janela é o modelo do dispositivo. Isto pode ser mudado:
scrcpy --window-title 'Meu dispositivo'
Posição e tamanho
A posição e tamanho iniciais da janela podem ser especificados:
scrcpy --window-x 100 --window-y 100 --window-width 800 --window-height 600
Sem bordas
Para desativar decorações da janela:
scrcpy --window-borderless
Sempre visível
Para manter a janela do scrcpy sempre visível:
scrcpy --always-on-top
Tela cheia
A aplicação pode ser iniciada diretamente em tela cheia:
scrcpy --fullscreen
scrcpy -f # versão reduzida
Tela cheia pode ser alternada dinamicamente com Ctrl
+f
.
Outras opções de espelhamento
Apenas leitura
Para desativar controles (tudo que possa interagir com o dispositivo: teclas de entrada, eventos de mouse, arrastar e soltar arquivos):
scrcpy --no-control
scrcpy -n
Desligar a tela
É possível desligar a tela do dispositivo durante o início do espelhamento com uma opção de linha de comando:
scrcpy --turn-screen-off
scrcpy -S
Ou apertando Ctrl
+o
durante qualquer momento.
Para ligar novamente, pressione POWER
(ou Ctrl
+p
).
Frames expirados de renderização
Por padrão, para minimizar a latência, scrcpy sempre renderiza o último frame decodificado disponível e descarta o anterior.
Para forçar a renderização de todos os frames ( com o custo de aumento de latência), use:
scrcpy --render-expired-frames
Mostrar toques
Para apresentações, pode ser útil mostrar toques físicos(dispositivo físico).
Android fornece esta funcionalidade nas Opções do Desenvolvedor.
Scrcpy fornece esta opção de ativar esta funcionalidade no início e desativar no encerramento:
scrcpy --show-touches
scrcpy -t
Note que isto mostra apenas toques físicos (com o dedo no dispositivo).
Controle de entrada
Rotacionar a tela do dispositivo
Pressione Ctrl
+r
para mudar entre os modos Retrato e Paisagem.
Note que só será rotacionado se a aplicação em primeiro plano tiver suporte para o modo requisitado.
Copiar-Colar
É possível sincronizar áreas de transferência entre computador e o dispositivo, para ambas direções:
Ctrl
+c
copia a área de transferência do dispositivo para a área de trasferência do computador;Ctrl
+Shift
+v
copia a área de transferência do computador para a área de transferência do dispositivo;Ctrl
+v
cola a área de transferência do computador como uma sequência de eventos de texto (mas quebra caracteres não-ASCII).
Preferências de injeção de texto
Existe dois tipos de eventos gerados ao digitar um texto:
- eventos de teclas, sinalizando que a tecla foi pressionada ou solta;
- eventos de texto, sinalizando que o texto foi inserido.
Por padrão, letras são injetadas usando eventos de teclas, assim teclados comportam-se como esperado em jogos (normalmente para tecladas WASD)
Mas isto pode causar problemas. Se você encontrar tal problema, pode evitá-lo usando:
scrcpy --prefer-text
(mas isto vai quebrar o comportamento do teclado em jogos)
Transferência de arquivo
Instalar APK
Para instalar um APK, arraste e solte o arquivo APK(com extensão .apk
) na janela scrcpy.
Não existe feedback visual, um log é imprimido no console.
Enviar arquivo para o dispositivo
Para enviar um arquivo para o diretório /sdcard/
no dispositivo, arraste e solte um arquivo não APK para a janela do
scrcpy.
Não existe feedback visual, um log é imprimido no console.
O diretório alvo pode ser mudado ao iniciar:
scrcpy --push-target /sdcard/foo/bar/
Encaminhamento de áudio
Áudio não é encaminhando pelo scrcpy. Use USBaudio (Apenas linux).
Também veja issue #14.
Atalhos
Ação | Atalho | Atalho (macOS) |
---|---|---|
Alternar para modo de tela cheia | Ctrl +f |
Cmd +f |
Redimensionar janela para pixel-perfect(Escala 1:1) | Ctrl +g |
Cmd +g |
Redimensionar janela para tirar as bordas pretas | Ctrl +x | Clique-duplo¹ |
Cmd +x | Clique-duplo¹ |
Clicar em HOME |
Ctrl +h | Clique-central |
Ctrl +h | Clique-central |
Clicar em BACK |
Ctrl +b | Clique-direito² |
Cmd +b | Clique-direito² |
Clicar em APP_SWITCH |
Ctrl +s |
Cmd +s |
Clicar em MENU |
Ctrl +m |
Ctrl +m |
Clicar em VOLUME_UP |
Ctrl +↑ (cima) |
Cmd +↑ (cima) |
Clicar em VOLUME_DOWN |
Ctrl +↓ (baixo) |
Cmd +↓ (baixo) |
Clicar em POWER |
Ctrl +p |
Cmd +p |
Ligar | Clique-direito² | Clique-direito² |
Desligar a tela do dispositivo | Ctrl +o |
Cmd +o |
Rotacionar tela do dispositivo | Ctrl +r |
Cmd +r |
Expandir painel de notificação | Ctrl +n |
Cmd +n |
Esconder painel de notificação | Ctrl +Shift +n |
Cmd +Shift +n |
Copiar área de transferência do dispositivo para o computador | Ctrl +c |
Cmd +c |
Colar área de transferência do computador para o dispositivo | Ctrl +v |
Cmd +v |
Copiar área de transferência do computador para dispositivo | Ctrl +Shift +v |
Cmd +Shift +v |
Ativar/desativar contador de FPS(Frames por segundo) | Ctrl +i |
Cmd +i |
¹Clique-duplo em bordas pretas para removê-las.
²Botão direito liga a tela se ela estiver desligada, clique BACK para o contrário.
Caminhos personalizados
Para usar um binário específico adb, configure seu caminho na variável de ambiente ADB
:
ADB=/caminho/para/adb scrcpy
Para sobrepor o caminho do arquivo scrcpy-server
, configure seu caminho em
SCRCPY_SERVER_PATH
.
Por quê scrcpy?
Um colega me desafiou a encontrar um nome impronunciável como gnirehtet.
strcpy
copia uma string; scrcpy
copia uma screen.
Como compilar?
Veja BUILD.
Problemas comuns
Veja FAQ.
Desenvolvedores
Leia a developers page.
Licença
Copyright (C) 2018 Genymobile
Copyright (C) 2018-2020 Romain Vimont
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.