针对已root的设备,下面的代码可以截取任意屏幕,上代码:
/**
* 手机截图
* @return 返回截图的路径
*/
public static String getScreenshot(){
Process process = null;
String filePath = "mnt/sdcard/" + System.currentTimeMillis() + ".png";
try {
process = Runtime.getRuntime().exec("su");
PrintStream outputStream = null;
outputStream = new PrintStream(new BufferedOutputStream(process.getOutputStream(), 8192));
outputStream.println("screencap -p " + filePath);
outputStream.flush();
outputStream.close();
process.waitFor();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(process != null){
process.destroy();
}
}
return filePath;
}
代码原理就是使用screencap命令,如果你还不会使用screencap命令,请在命令行中测试一下该命令的用法,操作如下:
打开cmd,输入adb shell,进入设备的shell环境中,如下图所示:
在shell环境中,我们就可以使用screencap命令了,主要用法是 screencap -p [文件保存路径],这里我们输入如下:
然后我们去手机的sd卡中,可以看到有一个test.jpg文件:
将这个文件导出后可以看到,这个文件就是我们截取手机屏幕的图片,如下:
可以看到screencap命令成功截取了手机屏幕,需要注意的是,执行上面的代码的前提是手机已root,如果不知道怎么在代码中请求root权限,可以看这篇博文: