Android中利用命令行进行截屏并导出到电脑上

           声明:本博客为原创博客,未经允许,不得转载!原文链接为http://blog.csdn.net/bettarwang/article/details/27819525

      大多数人最常用的截屏方法可能就是利用手机的快捷按键了,但是那样如果要导入到电脑中效率会比较低。实际上有更好的截屏方式,最简单的当然就是利用Eclipse中的DDMS进行截屏了,点击“Screen Capture"按钮后等待10多秒,然后就可直接利用Save按钮保存到电脑中。

       显然,由于要进行图片显示的原因,在DDMS中会有一定的延迟,效率还不够高。其实效率最高的方式就是利用命令行来截屏了。用于截屏的shell命令及相关参数的含义为:

        screencap [-hp] [-d display-id] [FILENAME]

         -h:this message(本条信息)

        -p:save the file as a png.(将文件保存为png格式)

        -d:specify the display id to capture,default 0.(为本次截屏指定显示编号,默认为0)

     If FILENAME ends with .png it will be saved as a png.(如果文件名以.png结尾,它会被保存为png图片)

     If FILENAME is not given,the results will be printed to stdout.(如果没有指定文件名(其实是完整的文件路径),那么结果会打印到标准输出中。实际上就是会将图片信息打印到屏幕上,当然是一片乱码。所以最好指定文件名。)

         一般来说,-h,-d这两个参数对我们作用不大,-p用到的地方多一些,但是我不建议用-p,原因如下:

      比如我们用这么一个命令截图:screencap -p /mnt/sdcard/Pic01,截取的这个图形文件名就是Pic01而不是Pic01.png,这样导出时的命令就变成了adb pull /mnt/sdcard/Pic01 d:/,其中d:/是我们要导出到电脑上的路径,这样我们还要给它添加上后缀。

      虽然也可以用screencap -p /mnt/sdcard/Pic01.png的命令,但是显然没有screencap /mnt/sdcard/Pic01.png及

screencap /mnt/sdcard/Pic01.jpg这样的命令方便。

     另外有几个值得注意的地方是:第一,如果想将截图放在sdcard中,不一定就是我这样的路径(/mnt/sdcard/),因为这跟底软的实现有关,最好就是到DDMS确认一下;第二,从电脑push APK到手机中是要先remount的,但是从手机中pull文件到电脑上是不需要先remount的;第三,screenshot命令是不能截屏的,我尝试过,导出到电脑上发现是很杂乱很奇怪的图形,有兴趣的童鞋可以验证一下。

     上面所有的命令都是我亲自验证的,还有问题的小伙伴就到下面留言吧!


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用以下代码在 Android 应用程序进行屏幕截图并设置为壁纸: ``` // 获取当前屏幕的视图 View rootView = getWindow().getDecorView().findViewById(android.R.id.content); // 创建一个 Bitmap 对象来保存截图 Bitmap screenshotBitmap = Bitmap.createBitmap(rootView.getWidth(), rootView.getHeight(), Bitmap.Config.ARGB_8888); // 创建一个 Canvas 对象,并将其设置为 Bitmap 对象的绘制目标 Canvas canvas = new Canvas(screenshotBitmap); // 将视图绘制到 Canvas 上 rootView.draw(canvas); // 将截图保存到存储设备上 String filePath = Environment.getExternalStorageDirectory().toString() + "/screenshot.png"; try { FileOutputStream out = new FileOutputStream(filePath); screenshotBitmap.compress(Bitmap.CompressFormat.PNG, 100, out); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } // 设置壁纸 WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext()); try { wallpaperManager.setBitmap(screenshotBitmap); } catch (IOException e) { e.printStackTrace(); } ``` 请注意,为了使用这段代码,您需要在 AndroidManifest.xml 文件添加以下权限: ``` <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.SET_WALLPAPER" /> ``` 此外,由于 Android 6.0 及以上版本需要动态请求权限,您还需要在应用程序添加相应的代码以请求 WRITE_EXTERNAL_STORAGE 权限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值