Android-屏幕设备截屏

转载请注明:http://www.cnblogs.com/frank-zouxu/p/4158159.html

今天,公司一个项目在进行中,遇到了屏幕取词的难题,对问题分步处理,首先得解决如何截取设备的屏幕,鉴于Android设备是基于Linux内核的,因此试着找到Android截图命令ScreenCap,在Android4.0的源码中找到:

其中ScreenCap是基于C++编写的,Screenshot是基于C编写的。这里使用ScreenCap.先进入手机的shell模式,进入命令行:adb shell screencap -h,获得打印信息

usage: screencap [-hp] [-d display-id] [FILENAME]
  -h: this message
  -p: save the file as a png.
  -d: specify the display id to capture, default 0.
If FILENAME ends with .png it will be saved as a png.
If FILENAME is not given, the results will be printed to stdout.

  

然后我们使用Java代码完成屏幕截取:
            Process sh = Runtime.getRuntime().exec("su", null,null);
                    OutputStream  os = sh.getOutputStream();
                    os.write(("/system/bin/screencap -p " + "/sdcard/img.png").getBytes("ASCII"));              //在运行时使用shell命令完成截屏操作
                    os.flush();
                    os.close();
                    sh.waitFor();

至此截屏文件(img.png)就被保存到了sd卡的根目录下了.时间仓促,整个过程叙述的不尽详细,只为记录今日所得。

 

  

 
时间: 2024-10-09 02:47:13

Android-屏幕设备截屏的相关文章

Android自己定义截屏功能,相似QQ截屏

由于公司业务需求 须要对一个屏幕进行截屏.但自带的截屏功能是远远不够项目的功能需求 ,我们是做一个画板软件 .须要的像QQ那样截屏之后 ,能够看到我们自己定义的工具.有画笔,button等等 .android自带的功能非常easy,仅仅须要Intent隐式调用就全然足够了.但他是系统的应用 ,界面固定.无法定制改动.实现方法跟办法有非常多种,以下记录下我实现的方法 .我是这样一个思路 ,重写一个View组件 ,在OnDraw里面仅仅负责不绘图形(包含半透明的四个矩形,亮框矩形,亮框上的四个小圆点

Qt on Android:应用截屏

在桌面平台上,QScreen::grabWindow 可以为你的应用截屏,Android 平台上这个不管用了,不过有替代方法. 分两种情况来说吧, Qt Widgets 与 Qt Quick. 插播广告,欢迎关注我的微信订阅号"程序视界",扫描下方二维码即可: 程序视界每周更新一到二篇程序员相关的文章,从心出发,漫谈程序员眼中的世界和世界眼中的程序员. Qt Widgets 最关键的就是一个函数: QWidget::render ,这个方法可以把一个 QWidget(包含它的孩子们)的

Android快照与截屏

android WebView的快照和截屏网上介绍的已经很多,在这里简单的记录下: 1.快照,一般我们在使用WebView时,网页放大,有一部分不会再屏幕上显示,如果我们想截取整个WebView的显示部分,我们就可以用的这个,代码如下: /** * 快照 * * @param context * @return */ private Bitmap captureScreen(Activity context) { //View snapShot = context.getWindow().get

android代码实现截屏功能

android开发中通过View的getDrawingCache方法可以达到截屏的目的,只是缺少状态栏! 原始界面 截屏得到的图片 代码实现 1. 添加权限(AndroidManifest.xml文件里) <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 2. 添加1个Button(activity_main.xml文件) <RelativeLayout xmlns

如何使用命令对Android系统进行截屏

Android截图 1.简介 本文是实现对于Android系统在电鱼SAIL-IMX6Q开发板中的截屏命令的使用. 2.准备 SAIL-IMX6Q开发板利用232串口连接电脑,并连接上电源. 再通过连接OTG线,连接电脑,进行安卓系统的烧录. 在电脑端打开超级终端并完成基础设置(波特率:115200,数据位:8,奇偶校验:无,停止位:1,数据流控制:硬件),之后打开开发板电源. 3.解除休眠 烧录安卓系统到开发板i.MX6Q中 开发板连接PC,再在PC中打开超级终端配置成功后开启开发板电源 开机

【Android代码片段之八】监听Android屏幕是否锁屏

实现方法:1)通过BroadcastReceiver接收广播Intent.ACTION_SCREEN_ON和Intent.ACTION_SCREEN_OFF可以判断屏幕状态是否锁屏,但是只有屏幕状态发生改变时才会发出广播: 2)如果要在屏幕状态发生改变之前就想获取屏幕状态,可以通过反射机制调用PowerManager的isScreenOn方法 . 具体实现,见代码: 实现Screen状态监听的类ScreenObserver,实现如下: [java] view plaincopy package 

在Eclipse中开发Android程序时截屏的方法

在Eclipse中调试Android程序时,有时需要将程序截图保存到电脑中.步骤如下: Window --- Show View --- Other : 在弹出的窗口中,选择 Devices : 在打开的Device选项卡中,选择要截图的设备或模拟器,然后点击旁边的截图按钮: 在弹出的窗口中,点击 Save 按钮,将程序截图保存到指定的目录中即可.

android防止系统截屏

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); setContentView(R.layout.activity_main); if (savedInstanceState == null) { getFragmentManager().begi

为什么 Android 截屏需要 root 权限

Android 截屏问题 看到很多朋友都有一个需求:那就是截取 Android 的整个屏幕,而且大家都遇到一个相同的问题,没有权限.这篇文章主要从代码的角度分析,问什么需要权限,需要什么样的权限?对截屏方法也有一些分析,欢迎大家讨论. Android 截屏 -- 传统方法 一般最开始的 Android 截屏程序,都是来源于 Linux 的截屏方法,android 使用的 Linux 内核,那么 Linux 下的截屏方法也就最先被 android 采用.Linux  使用了 framebuffer