是否可以从adb shell命令读取二进制stdout?例如,如何使用screencap的所有示例包括两个步骤:
adb shell screencap -p /sdcard/foo.png
adb pull /sdcard/foo.png
Run Code Online (Sandbox Code Playgroud)
但是,该服务支持写入stdout.例如,您可以执行以下操作:
adb shell "screencap -p > /sdcard/foo2.png"
adb pull /sdcard/foo2.png
Run Code Online (Sandbox Code Playgroud)
这同样有效.但是,如何阅读亚行的产出呢?我想做的是以下内容:
adb shell screencap -p > foo3.png
Run Code Online (Sandbox Code Playgroud)
并避免中间写入SD卡.这会生成看起来像PNG文件的strings foo3.png东西(正在运行生成带有IHDR,IEND等的东西)并且大小大致相同,但就图像阅读器而言,文件已损坏.
我也尝试在java中使用ddmlib来做到这一点,结果是一样的.我很乐意使用任何必要的图书馆.我的目标是减少获取捕获的总时间.在我的设备上,使用双命令解决方案,获取图像大约需要3秒钟.使用ddmlib和捕获stdout需要不到900毫秒,但它不起作用!
是否有可能做到这一点?
编辑:这是两个文件的hexdump.第一个,screen.png来自stdout并且已损坏.第二个,xscreen来自双命令解决方案并且有效.图像应在视觉上相同.
$ hexdump -C screen.png | head
00000000 89 50 4e 47 0d 0d 0a 1a 0d 0a 00 00 00 0d 49 48 |.PNG..........IH|
00000010 44 52 00 00 02 d0 00 00 05 00 08 06 00 00 00 6e |DR.............n|
00000020 ce …Run Code Online (Sandbox Code Playgroud) 我正试图尽快获得手机屏幕的截图.目前,我正在做:
adb shell screencap -p /sdcard/screencap.png && adb pull /sdcard/screencap.png
Run Code Online (Sandbox Code Playgroud)
但它太慢,需要3秒钟.有没有更好的方法来做到这一点?我打算在没有根据的手机上使用此功能.
还有什么我可以用于screencap的不同论点?
谢谢.
编辑(额外信息):我打算使用这种方法能够将屏幕的实时馈送到我的电脑上.目前的方法有效但速度太慢.我无法使用,adb shell screenrecord因为在录制时我无法访问视频文件.
我想使用命令行截取已 root 的三星设备的屏幕截图。我时间有限,不能超过2秒。所以我的问题是如何使用命令行截取屏幕截图。