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
One method is to use
via
Not bad, but seems like there's some room for improvement.
Information provided by
that screen shot can be sent to stdout, but running
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
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:
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:
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.
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 pullcommand, 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
screencapcommand
via
adb shelllike 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 -hindicates
that screen shot can be sent to stdout, but running
adb shell screencap -p > screen.pngresults 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.
相关文章推荐
- How to Install Kali Linux on Android - Tutorial With Screenshot
- how to capture screenshot by using adb
- android adb screen shot
- Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
- Android读入文本是GBK编码就必须转码 InputStreamReader.;多线程异常;Android ADB server didn't ACK * failed to start daem
- Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
- android中The connection to adb is down解决方案
- How to turn off Wifi via ADB
- 运行Android程序出错:The connection to adb is down, and a severe error has occured
- Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.错误
- 解决:Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
- How to save a picture (take screenshot) from a camera
- [Android]The connection to adb is down, and a severe error has occured.
- Android: How to Capture Screen in Gingerbread(2.3中实现截屏)(续)
- Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
- Android: The connection to adb is down, and a severe error has occured.
- android常见错误之“Failed to get the adb version: Cannot run program”
- Exception_android_Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
- [置顶] Android无法启动AVD解决方法出现"The connection to adb is down...You must restart adb and Eclipse."
- android中The connection to adb is down的问题和解决