截屏相关问题

来源:互联网 发布:网络广告公司经营范围 编辑:程序博客网 时间:2024/05/22 17:10

截取自己应用的画面,比较简单

public static Bitmap takeScreenShot(Activity activity) {View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmap b1 = view.getDrawingCache();Rect frame = new Rect();WindowManager wm =(WindowManager)activity.getSystemService(Context.WINDOW_SERVICE);  activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);int statusBarHeight = frame.top;int width = activity.getWindowManager().getDefaultDisplay().getWidth();int height = activity.getWindowManager().getDefaultDisplay().getHeight();Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height- statusBarHeight);view.destroyDrawingCache();return b;}


如果需要截取其他应用,则必须申请root权限才行。


 private void takeShot(){       Process sh;   try {   sh = Runtime.getRuntime().exec("su", null,null);           OutputStream  os = sh.getOutputStream();           os.write(("/system/bin/screencap -p " + "/sdcard/img.png").getBytes("ASCII"));           os.flush();           os.close();     sh.waitFor();   } catch (IOException e) {   // TODO Auto-generated catch block   e.printStackTrace();   }catch (InterruptedException e) {   // TODO Auto-generated catch block   e.printStackTrace();   }    }


0 0