无法在Android L中以编程方式进行屏幕截图

4
我正在使用Nexus 5,版本是5.1.1。
我想在任何时候以编程方式截取手机屏幕。如果解决方案特定于Nexus 5,那也没问题。
在阅读了许多答案之后,我尝试了以下使用“screencap”的解决方案。
问题是它创建了图像文件,但是它是空白的。
private void takeSS() {
    try {

        if (isExternalStorageWritable()) {

            Process su = Runtime.getRuntime().exec("/system/bin/screencap -p /storage/emulated/0/img.png\n");
            DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

            outputStream.flush();
            su.waitFor();

            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(su.getInputStream()));

            String line;
            while ((line = bufferedReader.readLine()) != null) {
                String output = line + System.getProperty("line.separator");
                System.out.println(line);
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}

如果我从命令提示符运行相同的命令,它会成功执行。请建议可能存在的问题。

附注:我的手机已经取得了root权限。

谢谢

1个回答

0
你尝试过以su身份执行命令吗? "/system/bin/su -c \"/system/bin/screencap -p /storage/emulated/0/img.png\""

它报错了 java.io.IOException: Error running exec(). Command: [/system/bin/su, -c, "/system/bin/screencap, -p, /storage/emulated/0/img.png"] Working Directory: null Environment: null - adam black

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