【问题标题】:Take Screenshot of whole screen截取全屏截图
【发布时间】:2011-11-30 11:50:30
【问题描述】:

我已经看到很多用于截屏的代码 sn-ps,但无法获得截取整个屏幕而不仅仅是视图的东西。它应该复制我们使用 ddms 获取屏幕截图的方式。

有人可以帮忙吗?

【问题讨论】:

  • 在大多数手机上,您需要超级用户 (Root) 权限
  • 你想通过编程还是通过 DDMS 截屏
  • 是的,我想以编程方式截取屏幕截图,最好是在非 root 设备上。

标签: android screenshot


【解决方案1】:

有一个 Android 屏幕截图库,可以使用 here。维基页面说库可用于截取整个屏幕的屏幕截图,而无需根级别访问,即使来自未签名的应用程序也是如此。我从来没有尝试过。您可以将其作为起点。

【讨论】:

  • 好吧,你仍然需要通过 ADB 启动它
  • 这意味着设备需要root对吗?有什么方法可以在非 root 设备上运行?
【解决方案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");

【讨论】:

    【解决方案3】:

    试试这个对我有用...

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

    【讨论】:

      猜你喜欢
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2014-09-26
      • 2013-11-16
      相关资源
      最近更新 更多