相关疑难解决方法(0)

如何以编程方式截取屏幕截图?

如何通过任何程序而不是代码来截取手机屏幕的选定区域?

android screenshot

483
推荐指数
19
解决办法
31万
查看次数

如何捕获当前屏幕上的所有内容,包括Dialogs

我已经看过可能在Android上以编程方式捕获屏幕(屏幕截图,screendump)的所有SO文章,他们通常都会得到相同的答案.

它的问题在于它捕获了您指定的View,但它不捕获可能"在"根视图"之上"的任何Dialog.这是我使用的代码,无法捕获任何"在顶部":

Bitmap bitmap;
View v1 = findViewById(android.R.id.content);
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
File path = Environment.getExternalStorageDirectory();
File file = new File(path, "myDump.jpg");

FileOutputStream outputStream;

try 
{
    outputStream = new FileOutputStream(file);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 10, outputStream);
    outputStream.flush();
    outputStream.close();
} 

catch (Exception e) 
{
  e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

问题是: 如何捕获整个屏幕,包括顶部的对话框?我只对捕获我正在编写的应用程序感兴趣,而不是主屏幕或类似的东西,只是在我的根视图之上的任何内容.

我确实读过一些关于root的内容,但我真的希望在我写的应用程序的完整screendump是不可能的.

android screenshot

6
推荐指数
1
解决办法
1513
查看次数

以编程方式截取整个屏幕的截图

我正在截取如下截图:

 public static Bitmap takeScreenshot(Activity activity) {  
      View view = activity.getWindow().getDecorView();  
      view.setDrawingCacheEnabled(true);  
      view.buildDrawingCache();  
      Bitmap bitmap = view.getDrawingCache();  
      Rect rect = new Rect();  
      activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);  
      int statusBarHeight = rect.top;  
      int width = activity.getWindowManager().getDefaultDisplay().getWidth();  
      int height = activity.getWindowManager().getDefaultDisplay().getHeight();  
      Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, statusBarHeight, width,  
          height - statusBarHeight);  
      view.destroyDrawingCache();  
      return bitmap2;  
    }  
Run Code Online (Sandbox Code Playgroud)

但是我的布局中有一个Edittext.我点击它并弹出键盘,但屏幕截图不包含使用这种方式的键盘.如何以编程方式截取屏幕截图?

keyboard android screenshot

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

android ×3

screenshot ×3

keyboard ×1