您的位置:首页 > 移动开发 > Android开发

Grab Android screenshot to computer via ADB

2014-01-23 10:14 447 查看
There are many ways to take a screen shot on Android device. One simple way to capture the screen on Galaxy Nexus is to simultaneously
press and hold Powerand Volume
Down buttons. The image will be saved in a "Screenshot" directory and accessible via Gallery.

Quite often, however, I need to copy the captured image over to my computer. Usually, I do this with
adb
pull
command, but if I'm going to use CLI to retrieve the file, why don't I take the screen shot with it as well?

One method is to use
screencap
command
via
adb shell
like so:

adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png
adb shell rm /sdcard/screen.png


Not bad, but seems like there's some room for improvement.

Information provided by
screencap -h
indicates
that screen shot can be sent to stdout, but running
adb
shell screencap -p > screen.png
results in seemingly corrupt file.

Luckily, I wasn't the first person looking into this
issue. Apparently, adb shell is
performing an EOL (end-of-line) character conversion, from LF (line
feed, '\n', 0x0A)
toCR+LF (carriage return followed by line feed, '\r\n', 0x0D0A).

If that sounds familiar, that's because I've
dealt with this before. Unfortunately, this time we're working with binary data, so using
tr
-d '\r'
command to remove all 0x0D will
likely corrupt it by also removing bytes that aren't part of the 0x0D0A sequence.
We want to only remove carriage return characters when they are followed by a line feed.

The solution is to use sed search
and replace as follows:

adb shell screencap -p | sed 's/\r$//' > screen.png


Unfortunately, I found that sed fix
while works on Ubuntu doesn't work on OS X. This solution using perl handles
binary search and replace better:

adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png


Now we have a one-liner that grabs a screen shot from the Android device and stores directly on the computer executing the command. Beautiful.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐