我需要从后台运行的服务截图。屏幕截图可以是前台的应用程序,即使它不是我的应用程序,这就是为什么我不能使用DrawingCache。我到处找了找这个
process = Runtime.getRuntime().exec("su -c cat /dev/graphics/fb0");InputStream is = process.getInputStream();
但我不知道怎么处理这条小溪。如何将其转换为位图?我不需要把它保存到文件中,我只需要把它保存在一个变量中。这是给有根电话的。
任何帮助都非常感谢。

最佳答案

好吧,看来这件事是我一个人干的。到目前为止,这是我发现的,对于那些有类似问题的人。注意,这是不同的版本,我运行2.3姜饼。
我在/system/bin-screencapscreenshot中找到了两个文件。
screencap以我不知道如何解码的格式返回位图,而screenshot在SD卡的根目录下生成一个名为tmpshot.bmp的常规BMP文件(也不接受任何类型的命令参数)。他们似乎也不接受-h、-help、-help等)。
bmp目前看来是一个可行的解决方案,但我希望避免从sdcard中写入和读取,因为这是一个相当大的瓶颈。我会继续寻找,但对于那些现在需要解决的人,给你。
编辑:在进一步的试验中,我发现另一个rom中的screencap二进制文件(具体来说是miui)实际上提供了更多的选项,其中(miui)screencap -t png /sdcard/screen.png生成了一个有效的png屏幕截图。

09-27 11:17