J'essaie d'obtenir une capture d'écran de l'écran du téléphone le plus rapidement possible… .. Je fais actuellement ce qui suit:
adb Shell screencap -p /sdcard/screencap.png && adb pull /sdcard/screencap.png
Cependant, il est trop lent et prend jusqu'à 3 secondes ... Est-ce qu'il y a une meilleure façon de le faire? J'ai l'intention d'utiliser cette fonction avec un téléphone sans fil.
De plus, quels sont les différents arguments que je peux utiliser pour la capture d'écran?
Merci.
EDIT (informations supplémentaires): Je compte utiliser cette méthode pour pouvoir afficher en direct l’écran sur mon ordinateur. La méthode actuelle fonctionne mais elle est trop lente. Je ne peux pas utiliser adb Shell screenrecord
car je ne pourrai pas accéder au fichier vidéo pendant son enregistrement.
Pour que cela fonctionne @ OSX et Linux
adb exec-out screencap -p > screen.png
https://stackoverflow.com/a/37191719/75579 answer a cessé de fonctionner pour moi sous Android 7 en quelque sorte. Je dois donc le faire de manière manuelle, alors je veux le partager.
Placez cet extrait de code dans votre fichier ~/.bash_profile
ou ~/.profile
:
snap_screen() {
if [ $# -eq 0 ]
then
name="screenshot.png"
else
name="$1.png"
fi
adb Shell screencap -p /sdcard/$name
adb pull /sdcard/$name
adb Shell rm /sdcard/$name
curr_dir=pwd
echo "save to `pwd`/$name"
}
Exécuter la commande source ~/.bash_profile
ou source ~/.profile
,
Utilisation sans spécifier le nom du fichier:
$ snap_screen
11272 KB/s (256237 bytes in 0.022s)
Saved to /Users/worker8/desktop/screenshot.png
Utilisation avec un nom de fichier:
$ snap_screen mega_screen_capture
11272 KB/s (256237 bytes in 0.022s)
Saved to /Users/worker8/desktop/mega_screen_capture.png
J'espère que ça aide!
** Cela ne fonctionnera pas si plusieurs appareils sont branchés
Vous pouvez lire le fichier binaire à partir de stdout au lieu de sauvegarder le png sur la carte sd puis de le tirer:
adb Shell screencap -p | sed 's|\r$||' > screenshot.png
Cela devrait permettre de gagner un peu de temps, mais pas beaucoup.
source: Lire des données binaires stdout à partir du shell adb?
Pour commencer à enregistrer l’écran de votre appareil, exécutez la commande suivante:
adb Shell screenrecord /sdcard/example.mp4
Cette commande commencera à enregistrer l’écran de votre appareil avec les paramètres par défaut et enregistrera la vidéo obtenue dans un fichier au format /sdcard/example.mp4 de votre appareil.
Une fois l’enregistrement terminé, appuyez sur Ctrl + C dans la fenêtre Invite de commandes pour arrêter l’enregistrement sur écran. Vous pouvez ensuite trouver le fichier d'enregistrement d'écran à l'emplacement que vous avez spécifié. Notez que l’enregistrement d’écran est sauvegardé dans la mémoire de stockage interne de votre appareil et non dans votre ordinateur.
Les paramètres par défaut consistent à utiliser la résolution d’écran standard de votre appareil, à encoder la vidéo à un débit de 4 Mbps et à définir la durée maximale d’enregistrement sur 180 secondes. Pour plus d'informations sur les options de ligne de commande que vous pouvez utiliser, exécutez la commande suivante:
adb Shell screenrecord --help
Cela fonctionne sans enraciner le périphérique. J'espère que cela t'aides.
En utilisant certaines connaissances de cet article et quelques autres, j'ai trouvé que la méthode qui fonctionnait le mieux pour moi était la suivante:
adb Shell 'stty raw; screencap -p'
J'ai posté un script Python très simple sur GitHub qui reflète essentiellement l'écran d'un périphérique connecté via ADB:
Désolé de vous dire que screencap
est une simple commande, n'accepte que quelques arguments, mais aucun d'eux ne peut vous faire gagner du temps. Voici la sortie d'aide -h
.
$ adb Shell screencap -h
usage: screencap [-hp] [-d display-id] [FILENAME]
-h: this message
-p: save the file as a png.
-d: specify the display id to capture, default 0.
If FILENAME ends with .png it will be saved as a png.
If FILENAME is not given, the results will be printed to stdout.
Outre la commande screencap
, il existe une autre commande screenshot
, je ne sais pas pourquoi screenshot
a été supprimée de Android 5.0
, mais elle est disponible sous Android 4.4
, vous pouvez vérifier le code source à partir de ici . Je n'ai pas fait ma comparaison, qui est plus rapide entre ces deux commandes, mais vous pouvez essayer dans votre environnement réel et prendre la décision finale.