通过分析SystemUI,发现实际调用SurfaceControl.java隐藏类实现拷屏, 但需要系统权限
public Bitmap captureScreen() { Display mDisplay; DisplayMetrics mDisplayMetrics; WindowManager mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); mDisplay = mWindowManager.getDefaultDisplay(); mDisplayMetrics = new DisplayMetrics(); mDisplay.getRealMetrics(mDisplayMetrics); float[] dims = {mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels}; return SurfaceControl.screenshot((int) dims[0], (int) dims[1]); }
下载相关系统库jar