2011-11-30 224 views
2

我已经看过很多代码片断来拍摄屏幕截图,但无法获得需要整个屏幕而不仅仅是视图的屏幕截图。它应该复制我们使用ddms获取屏幕截图的方式。以整个屏幕的屏幕截图

有人可以帮忙吗?

+4

在大多数手机上,您将需要超级用户(root)权限此 – Force

+0

你想通过编程方式或通过DDMS – Praveenkumar

+0

采取截图是我希望以编程方式抓取截图,最好在非根设备上截图。 – user1059747

回答

3

有一个Android屏幕截图库,它可用于here。在wiki页面中,库可以用来截取整个屏幕的屏幕截图,而不需要根级别的访问,即使是未签名的应用程序。我从来没有尝试过。你可以用它作为出发点。

+1

那么你还需要通过亚行 – Force

+0

启动它意味着该设备需要被植根到正确的位置?任何方式让这个工作在非根设备上? – user1059747

0

试试这个,它的工作对我来说...

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     view = (ImageView) findViewById(R.id.ImageView01); 
     Button myBtn = (Button) findViewById(R.id.Button01); 
     myBtn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       View v1 = view.getRootView(); 

       v1.setDrawingCacheEnabled(true); 

       Bitmap bm = v1.getDrawingCache(); 
       BitmapDrawable bitmapDrawable = new BitmapDrawable(bm); 

       ImageView view2 = (ImageView) findViewById(R.id.ImageView01); 

       view2.setBackgroundDrawable(bitmapDrawable); 
      } 
     }); 
} 
2
 sh = Runtime.getRuntime().exec("su", null, null); 
     System.out.println("capturing"); 
     OutputStream outputstream = sh.getOutputStream(); 
     outputstream.write("/system/bin/screencap -p /sdcard/tos_processing.png".getBytes("ASCII")); 
     outputstream.flush(); 
     outputstream.close(); 
     sh.waitFor(); 
     System.out.println("captured"); 
     bitmap = BitmapFactory.decodeFile("/sdcard/tos_processing.png");