2011-11-30 320 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");