全屏截图

3

我看到了很多有关截图的代码片段,但没有找到能够获取整个屏幕截图而不仅是一个视图的方法。它应该模拟使用ddms获取屏幕截图的方式。

有人可以帮忙吗?


4
大多数手机需要超级用户(Root)权限才能进行此操作。 - Force
你想通过编程或者DDMS来截屏吗? - Praveenkumar
是的,我想以编程方式截屏,最好是在非root设备上。 - user1059747
3个回答

3

有一个名为“Android Screenshot Library”的库可用,可以在此处获取。其中的wiki页面称,该库可用于无需root级别访问权限甚至从未签名的应用程序中拍摄整个屏幕截图。虽然我从未尝试过,但您可以将其用作起点。


1
你仍然需要通过ADB启动它。 - Force
这意味着设备需要获取 root 权限,对于没有获取 root 权限的设备有什么方法可以让它正常工作吗? - user1059747

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");

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);
            }
        });
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接