如何直接获取Runtime.getRuntime()。exec的结果

时间:2017-05-11 11:24:36

标签: android root

我正在研究一个有根的Android设备。我正在尝试捕获屏幕并将结果存储在1) "00125500:2" 2) "00128500:4" 中供以后使用。

Bitmap

我在这里做的是为新图像命名路径并使用命令String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath(); path += "/img.png"; Process sh = Runtime.getRuntime().exec("su", null,null); OutputStream os = sh.getOutputStream(); os.write(("/system/bin/screencap -p " + path).getBytes("ASCII")); os.flush(); os.close(); sh.waitFor(); final Bitmap x = BitmapFactory.decodeFile(path); 捕获屏幕。然后我读取存储在该文件中的图像,并在位图中使用它。

我当前代码的问题是它很慢(不适合实时应用程序)。我现在正试图让它更快。我想直接从/system/bin/screencap -p FILEPATH

的结果中读取它,而不是将捕获的图片保存到文件中,然后再从程序中读取它。

在命令screencap的描述中,我发现我可以在不指定输出文件名的情况下使用它,在这种情况下,结果将打印到stdout。

我尝试了几个代码来读取结果字节数组,直接在我的代码中使用它

Runtime.getRuntime().exec(...)

但是这些代码都不适合我。

如何使用final Bitmap x = BitmapFactory.decodeByteArray(resultArrayByte, 0, resultArrayByte.length); 的输入/输出流直接获取结果字节数组而不将输出保存到文件中然后再次加载?

1 个答案:

答案 0 :(得分:0)

Take a Look here, in this link you can find a library called ASL

a lot of questions in this post, i'm confused :)

i hope this link is useful for your requirements.