设备是否需要植根才能从代码中截取屏幕截图?

时间:2014-09-11 13:54:53

标签: android screenshot root

我已经看到了很多不同的回复,所以有人能给出肯定的答复吗? 运行最新操作系统的设备是否需要植根以从代码中截取屏幕截图? 我正在尝试这样做,我只得到一张黑色图片(与我的屏幕尺寸相同)。 非常感谢

2 个答案:

答案 0 :(得分:2)

如果您想截取自己的其他应用的截图。

是设备需要植根

我也对它进行了一些搜索,但从未找到解决方案。

即使在生根之后,也没有适用于所有模型的明确解决方案。

答案 1 :(得分:0)

要获取您需要拥有root权限的其他应用的屏幕截图。要获取屏幕截图,请使用帧缓冲区。

要截取您的应用程序的屏幕截图,您可以使用此处的代码截取活动的屏幕截图:https://stackoverflow.com/a/23927196/3029105

这将获得活动的位图。

代码:

public class MainAvtivity extends Activity
{
    ImageView imgView;
    Button btnScreenshot;
    View rootView;
    Bitmap bmap;

    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);
        setContentView(R.layout.main)

        imgView = (ImageView)findViewById(R.id.imageView);
        btnScreenshot = (Button)findViewById(R.id.btnScreenshot);
        rootView = findViewById(android.R.id.content).getRootView();

        btnScreenshot.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v){
                imgView.setImageBitmap(null);
                bmap = takeScreenshot();
                setImgView(bmap);
            }
    }
    public Bitmap takeScreenshot()
    {
        rootView.setDrawingCacheEnabled(true);
        rootView.buildDrawingCache(true);
        Bitmap b = Bitmap.createBitmap(rootView.getDrawingCache());
        rootView.setDrawingCacheEnabled(false);
        return b;
    }
    public void setImgView(Bitmap bitmap)
    {
        imgView.setImageBitmap(bitmap);
    }
}