5

我想知道截取当前屏幕的屏幕截图(按下按钮后)并将其保存在图库中的代码是什么,因为我没有带 sd 卡的设备。所以我会保存在默认图库中。谢谢你

4

4 回答 4

11
  Bitmap bitmap;
  View v1 = findViewById(R.id.rlid);// get ur root view id
  v1.setDrawingCacheEnabled(true); 
  bitmap = Bitmap.createBitmap(v1.getDrawingCache());
  v1.setDrawingCacheEnabled(false);

这应该可以解决问题。

为了节省

  ByteArrayOutputStream bytes = new ByteArrayOutputStream();
  bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
  File f = new File(Environment.getExternalStorageDirectory()
                    + File.separator + "test.jpg")
  f.createNewFile();
  FileOutputStream fo = new FileOutputStream(f);
  fo.write(bytes.toByteArray()); 
  fo.close();
于 2013-03-07T16:26:10.033 回答
5
    View v1 = L1.getRootView();
    v1.setDrawingCacheEnabled(true);
    Bitmap bm = v1.getDrawingCache();
    BitmapDrawable bitmapDrawable = new BitmapDrawable(bm);
    image = (ImageView) findViewById(R.id.screenshots);
    image.setBackgroundDrawable(bitmapDrawable);

有关完整的源代码,请访问以下博客

http://amitandroid.blogspot.in/2013/02/android-taking-screen-shots-through-code.html

对于存储位图,请参阅以下链接

Android将创建的位图保存到SD卡上的目录

于 2013-03-07T16:31:28.290 回答
1

这将保存到画廊。该代码还设置了一个图像路径.. 这对 Intent.SEND_ACTION 和电子邮件 Intents 很有用。

String imagePath = null;
Bitmap imageBitmap = screenShot(mAnyView);
if (imageBitmap != null) {
    imagePath = MediaStore.Images.Media.insertImage(getContentResolver(), imageBitmap, "title", null);
}


public Bitmap screenShot(View view) {
    if (view != null) {
        Bitmap bitmap = Bitmap.createBitmap(view.getWidth(),
                view.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        view.draw(canvas);
        return bitmap;
    }
    return null;
}
于 2017-06-19T22:53:56.673 回答
0

正如所323go评论的那样,除非您的设备确实已植根,否则这是不可能的。

但是,如果是这样,那么对于monkeyrunner或者如果您使用的是模拟器,这可能是一项不错的工作。

于 2013-03-07T16:25:38.250 回答