Objective: Take a screenshot of an Android device display using
To take a screenshot of an Android device display, we will need to use the
screencap utility. This does not require root access. Screenshots are saved in PNG format.
Connect your Android device to the computer with a USB cable. Make sure that USB debugging is enabled on the device and run
adb using the following syntax.
$ adb shell screencap /sdcard/screen.png
The screenshot will be saved to
/sdcard/screen.png. Note that if there’s already an existing file, it will be overwritten. If you would like to save the output file with another extension other than
.png, then you will need to pass the
-p option to
$ adb shell screencap -p /sdcard/screen.bin
To pull the file from your Android device to your computer, use the
adb pull command.
$ adb pull /sdcard/screen.png
Once the file has been transferred to your computer, you can delete the file from your Android device.
$ adb rm /sdcard/screen.png
If you would like the screenshot file to be written directly to your computer, then we can tell
screencap to write the output to
stdout instead. But there’s a small problem. Apparently, when writing the screenshot data to
adb shell converts
0x0a (linefeed) to
0x0d0a (carriage return, linefeed) – this will corrupt the output screenshot file.
The solution is to use
sed to undo the conversion.
$ adb shell "screencap -p" | sed 's/\r$//' > screen.png
Another option is to use
$ adb shell "screencap -p | uuencode -" | uudecode > screen.png
Alternatively, you can also use
base64 instead of uuencode/uudecode.
$ adb shell "screencap -p | base64" | sed 's/\r$//' | base64 -d > screen.png