1.思路 通过cmd 命令 :adb shell screencap -p /sdcard/screen.png 来实现

2.添加系统签名及权限
 

    android:sharedUserId="android.uid.system"            

3.创建 命令工具类:CmdUtil

import android.support.annotation.NonNull;import android.text.TextUtils;import android.util.Log;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;public class CmdUtil {    private static final String TAG = "CmdUtil";    private static final String COMMAND_SH = "sh";    private static final String COMMAND_EXIT = "exit\n";    private static final String COMMAND_LINE_END = "\n";    /**     * 运行命令     *     * @param command 命令     * @return 结果     */    public static Result execute(String command) {        Log.i(TAG, "execute() command = " + command);        Result result = new Result();        if (TextUtils.isEmpty(command)) {            Log.w(TAG, "WARNING: command should not be null or empty");            return result;        }        Process process = null;        DataOutputStream dos = null;        try {            process = Runtime.getRuntime().exec(COMMAND_SH);            dos = new DataOutputStream(process.getOutputStream());            dos.write(command.trim().getBytes());            dos.writeBytes(COMMAND_LINE_END);            dos.flush();            dos.writeBytes(COMMAND_EXIT);            dos.flush();            result.code = process.waitFor();            result.success = readBuffer(new BufferedReader(new InputStreamReader(process.getInputStream())));            result.error = readBuffer(new BufferedReader(new InputStreamReader(process.getErrorStream())));            Log.i(TAG, "result = " + result);        } catch (IOException ioe) {            ioe.printStackTrace();            Log.e(TAG, ioe.getMessage());        } catch (InterruptedException ie) {            ie.printStackTrace();            Log.e(TAG, ie.getMessage());        } finally {            try {                if (null != dos) {                    dos.close();                }            } catch (IOException ioe) {                ioe.printStackTrace();                Log.e(TAG, ioe.getMessage());            }            if (null != process) {                process.destroy();            }        }        return result;    }    @NonNull    private static String readBuffer(BufferedReader bufferedReader) throws IOException {        StringBuilder sb = new StringBuilder();        String s;        while ((s = bufferedReader.readLine()) != null) {            sb.append(s);        }        return sb.toString();    }    /**     * Command执行结果     */    public static final class Result {        public static final int SUCCESS = 0;        public static final int ERROR = -1;        public int code = ERROR;        String error;        String success;        @Override        public String toString() {            return "Result{" +                "code=" + code +                ", error='" + error + '\'' +                ", success='" + success + '\'' +                '}';        }    }}

 4.简单实现

 CmdUtil.execute(" screencap -p /data/screen1.png");

5.导出查看即可(或者指定其他路径)

adb pull /data/screen1.png ./

另附上两个很好的截屏demo:
参考Google官方给的demo以及其他开发者写的Demo

https://github.com/googlesamples/android-ScreenCapture
https://github.com/VincentWYJ/CaptureScreen

更多相关文章

  1. android 调用系统打电话和发短,懒得记
  2. windows 使用QUME跑Android系统
  3. 如何搭建android环境---windows系统环境里。
  4. Android(安卓)DropboxManager介绍
  5. Android电源管理之一:基础概览
  6. Android通过使用系统广播监听网络状态的改变
  7. Ubuntu 10.10下Eclipse+ADT(Android)开发环境搭建
  8. Android(安卓)里面的android_secret_code
  9. Android加载网络图片并保存到系统相册

随机推荐

  1. Android之如何获取视频或者图片的缩略图
  2. Android的一些基本常识
  3. android 获取WebView的网页高度
  4. Android之Camera预览
  5. [Android实例] android json
  6. android string.xml占位符
  7. Android版本更新代码
  8. android webview 截图快照
  9. Android(安卓)程序调用系统发信息程序
  10. android与pc的socket通信JAVA