Android Things:如何截屏

6
如何通过ADB在Android Things上截图? 我已经尝试过以下方法:
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png
adb shell rm /sdcard/screen.png

并且

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

你尝试过在Android Studio内部吗? - riggaroo
谢谢您的想法,但不幸的是它会抛出一个错误:"从设备获取截图时发生意外错误:EOF"。 - Quintin Balsdon
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Blundell
我有同样的问题,无论我是否连接外部显示器都没有关系。检索到的.png文件大小为0kB,显然不包含屏幕图像。 - Jan Slominski
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Jan Slominski
3个回答

2
我无法在Android Things Developer Preview中使 screepcap 工作。该命令的结果是一个大小为0的文件。
话虽如此,我建议以下两个选项:要么使用帧缓冲区,要么记录视频(screenrecord似乎有效),然后通过适当的工具将其转换为图像。我将考虑第一种选项,因此步骤如下:
  • Pull the framebuffer to the host machine. Note that you need to start adbd as root in order to pass a permission check:

    adb root
    adb pull /dev/graphics/fb0 screenshot
    
  • Convert the raw binary to image by the tool you prefer. I'm using . The command below might not work for you due to different screen resolution or pixel format. If so, make proper changes.

    ffmpeg -f rawvideo -pix_fmt rgb565 -s 800x480 -i screenshot screenshot.png
    

使用 adb shell dumpsys window | grep mUnres 命令可以查找屏幕分辨率。 - Onik
@Andriy Omelchenko,最初出了什么问题?屏幕分辨率不对吗?pix_fmt的哪个值适用于您? - Onik
1
是的,错误的屏幕分辨率和 -pix_fmt rgb565 对我也起作用了,而且没有任何改变。你很棒!谢谢! - Andrii Omelchenko

1

似乎由于Android Things中旧的OpenGL版本,由Tatsuhiko Arai 在这里描述,无法通过ADB获取屏幕截图,但您可以录制视频(例如从Android Studio或通过ADB命令),然后从中获取帧,例如通过ffmpeg

ffmpeg -i device-2017-01-23-193539.mp4 -r 1 screen-%04d.png

其中device-2017-01-23-193539.mp4是通过Android Studio录制的文件名称。


我注意到他们没有将OpenGL放入Android设备中,这真是令人失望。 - Quintin Balsdon
我注意到他们没有将OpenGL放入Android Things中。实际上,他们已经加入了,即OpenGL ES-CM 1.0,可以通过adb shell dumpsys | grep GLES查看。 - Onik
1
我也怀疑这是因为_"旧的OpenGL版本限制"_。我的Android 4.2手机上有OpenGL ES-CM 1.1,并且screencap按预期工作。 - Onik
@Oink,很奇怪树莓派不支持最新的OpenGL - 谢谢你告诉我如何找到它! - Quintin Balsdon

0

我已经尝试过这段代码,只是稍微做了一点修改(但不重要),它运行良好。现在图片已经在我的platform-tools目录中。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接