android手机截屏、录屏
1.截屏
1.1 手动截屏,通过其他第三方软件发送截图,或者从手机取出截图
1.2 使用脚本截图,将截图保存到手机,再拉取到电脑
脚本有2个参数:
- 第一个参数为图片名,默认年月日-时分秒
- 第二个参数为图片保存路径,限定当前位置和固定目录,避免文件乱放
#!/bin/sh
#运行 sh screenshot name
picName=$1
filePath=$2
#定义name
if [ ! ${picName} ];then
picName=`date +"%F_%H%M%S"`
fi
#定义path
if [[ ${filePath} == '.' ]];then
filePath=`pwd`
else
filePath='/Users/chenshanju/Desktop/caps'
if [ ! -d ${filePath} ];then
mkdir ${filePath}
fi
fi
#截图
for i in `adb devices|grep -w 'device'|awk '{print $1}'`;do
adb -s $i shell /system/bin/screencap -p /sdcard/${i}-${picName}.png
adb -s $i pull /sdcard/${i}-${picName}.png ${filePath}
adb -s $i shell rm -rf /sdcard/$i-${picName}.png
done
执行效果:

如果使用tcp-ip指定设备,发送给开发时提示文件错误,因此将脚本修改为使用ro.product.model代替device
#!/bin/sh
#运行 sh screenshot name
picName=$1
filePath=$2
#定义name
if [ ! ${picName} ];then
picName=`date +"%F_%H%M%S"`
fi
#定义path
if [[ ${filePath} == '.' ]];then
filePath=`pwd`
else
filePath='/Users/chenshanju/Desktop/caps'
if [ ! -d ${filePath} ];then
mkdir ${filePath}
fi
fi
#截图
for i in `adb devices|grep -w 'device'|awk '{print $1}'`;do
#修改name,将其设置为model,不再使用devices
#写个for循环,观测下截图传入model和pull时使用model的耗时
deviceName=`adb -s $i shell getprop|grep ro.product.model|awk -F ':' '{print $2}'|awk -F '[' '{print $2}'|awk -F ']' '{print $1}'`
deviceName=${deviceName// /}
adb -s $i shell /system/bin/screencap -p /sdcard/${deviceName}-${picName}.png
adb -s $i pull /sdcard/${deviceName}-${picName}.png ${filePath}
adb -s $i shell rm -rf /sdcard/${deviceName}-${picName}.png
done
写个for循环,查看这2中情况下的耗时,没有差别。
#!/bin/sh
start=`date +%s`
for i in `seq 1 10`;do
sh /Users/chenshanju/sh_script/screenshot.sh 1 .
done
end=`date +%s`
mi=$(( ${end} - ${start} ))
echo ${mi}

1.3 直接保存到手机
adb shell screencap -p | sed 's/\r$//' > screen.png
Mac执行提示
sed: RE error: illegal byte sequence
参考别人的博客 但截屏不全。
adb shell /system/bin/screencap -p |LC_CTYPE=C sed 's/\r$//' > screen.png
1.4 Windows电脑专用
对bat语法不熟,只能借助同事的电脑调试,还得等她有时间才可以。这是我写得最费劲的脚本,凑合能用
:适用于Windows脚本安卓手机截屏
adb shell /system/bin/screencap -p /sdcard/test.png
set date0=%date:~0,10%
set time0=%time:~0,8%
set dttm=%date0:/=%%time0::=%
adb pull /sdcard/test.png caps/%dttm%.png
2 录屏
注意:录屏脚本针对单台设备,如果需要多台同时执行,请百度shell的多线程。
脚本传入4个参数
- 第一个参数:时长,最大180秒
- 第二个参数:路径,支持当前路径和固定路径
- 第三个参数:保存的文件名称,默认年月日-时分秒
- 第四个参数:设备,多台手机需要指定,单台可忽略
#!/bin/sh
videotime=$1
path=$2
filename=$3
device=$4
#定义path
if [[ ${path} == '.' ]];then
path=`pwd`
else
path='/Users/chenshanju/Desktop/caps'
if [ ! -d ${path} ];then
mkdir ${path}
fi
fi
#定义文件名
if [ ! -z $3 ];then
filename=$3
else
filename=`date +"%F_%H%M%S"`
fi
#指定设备
if [ -z ${device} ];then5
if [ ! -z ${videotime} ];then
adb shell screenrecord --time-limit ${videotime} /sdcard/${filename}.mp4
else
adb shell screenrecord /sdcard/${filename}.mp4
fi
adb pull /sdcard/${filename}.mp4 ${filePath}
adb shell rm /sdcard/${filename}.mp4
else
if [ ! -z ${videotime} ];then
adb -s ${device} shell screenrecord --time-limit ${videotime} /sdcard/${filename}.mp4
else
adb -s ${device} shell screenrecord /sdcard/${filename}.mp4
fi
adb -s ${device} pull /sdcard/${filename}.mp4 ${filePath}
adb -s ${device} shell rm /sdcard/${filename}.mp4
fi
执行效果:

3.输入
#!/bin/sh
a=$1
if [ ! $a ];then
a='123456'
fi
for i in `adb devices|grep -w device|awk '{print $1}'`;do
adb -s $i shell input text ${a}
done
4.获取机型信息
#!/bin/sh
#获取手机品牌、机型、分辨率、安卓版本
#定义path
echo `date`
path=$1
if [[ ${path} == '.' ]];then
path=`pwd`
else
path='/Users/chenshanju/Desktop/caps'
if [ ! -d ${path} ];then
mkdir ${path}
fi
fi
for i in `adb devices|grep -w device|awk '{print $1}'`;do
echo "手机品牌:" `adb -s ${i} shell getprop|grep "ro.product.brand"|awk -F ':' '{print $2}'` > ${path}/${i}.txt
echo "手机机型" `adb -s ${i} shell getprop|grep "ro.product.model"|awk -F ':' '{print $2}'` >> ${path}/${i}.txt
echo "手机系统" `adb -s ${i} shell getprop|grep "build.version.release"|awk -F ':' '{print $2}'` >> ${path}/${i}.txt
echo "屏幕分辨率:" `adb -s ${i} shell wm size| awk -F ':' '{print $2}'` >> ${path}/${i}.txt
echo ""
done
echo `date`

5.修改.bash_profile文件,每次可以直接输入名称执行脚本
alias adbscreenshot=/Users/csj/sh_script/screenshot.sh
alias adbrecordscreen=/Users/csj/sh_script/recordscreen.sh
alias adbmodel=/Users/csj/sh_script/model.sh
alias adbinput=/Users/csj/sh_script/input.sh
6.adb改造
#!/bin/bash
PLATFORM_TOOL="/usr/local/Libary/Android/android-sdk/PLATFORM_TOOL/adb"
echo "$@" >> /tmp/adb.log #会将执行的命令追加到/tmp/adb.log中
问题:
1.登陆页面截屏失败
原因:应用出于安全性考虑,会禁止在包含密码的页面进行截屏操作。
android手机截屏、录屏的更多相关文章
- ARDC Android 远程桌面助手 录屏 演示 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Android设备一对多录屏直播--(UDP组播连接,Tcp传输)
原文:https://blog.csdn.net/sunmmer123/article/details/82734245 近期需要学习流媒体知识,做一个Android设备相互投屏Demo,因此找到了这 ...
- Android5.0免Root截屏,录屏
http://blog.csdn.net/wds1181977/article/details/52174840 MediaProjection介绍 MediaProjection可以用来捕捉屏幕,具 ...
- DXGI快速截屏录屏技术
DXGI快速截屏录屏技术 概述 很多地方都需要用到截屏/录屏技术,比如桌面直播,桌面录制等等.在微软Windows平台,有很多截屏的接口,不过大多数性能并不理想,Windows8以后微软引入了一套 ...
- 超便携式截屏录屏软件FastStone Capture
超便携式截屏录屏软件FastStone Capture
- Android 和 iOS 实现录屏推流的方案整理
一.录屏推流实现的步骤 1. 采集数据 主要是采集屏幕获得视频数据,采集麦克风获得音频数据,如果可以实现的话,我们还可以采集一些应用内置的音频数据. 2. 数据格式转换 主要是将获取到的视频和音频转换 ...
- android 调用 screenrecord 实现录屏
首先要说明的是并未实现,本文讲一下自己的思路. adb 使用shell 命令 screenrecord 可录屏. 自己写了个app,通过Process p = Runtime.getRuntime() ...
- android——使用自带录屏工具进行屏幕录像
在做开源项目的时候,想传一个gif效果图上去.但是,要有连贯的动画效果.所以,就想到先录制视频,然后视频转gif.但是,用第三录屏软件总是不完美. 那么,怎么办呢? android4.4 提供了自带录 ...
- Android手机截屏
刚开始打算做一个简单的截屏程序时,以为很轻松就能搞定. 在Activity上放一个按钮,点击完成截屏操作,并将数据以图片形式保存在手机中. 动手之前,自然是看书和网上各种查资料.结果发现了解的知识越多 ...
随机推荐
- IDLE的使用
为什么要用IDE? 到现在为止,我们也是写过代码的人啦,但你有没有发现,每次写代码要新建文件.写完保存时还要选择存放地点,执行时还要切换到命令行调用python解释器,好麻烦呀,能否一气呵成,让我简单 ...
- Linux命令速查手册
Others make 通过外部编译器的,比如linux中的gcc集来编译源码 获取Makefile文件的命令触发编译 curl -X GET/POST -I 获取head curl有cache 查看 ...
- hdu4549 M斐波那契数列 矩阵快速幂+快速幂
M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 ) 现在给出a, b, n,你能求出F[n]的 ...
- LeetCode - Number of Distinct Islands
Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...
- 【BZOJ4552】【TJOI2016】【HEOI2016】排序
经验还是不够…… 原题: 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题 ,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对 ...
- day 06Hadoop
更换虚拟机以后操作的步奏1.到每一台机器上修改ip地址 ,然后修改hosts1.5 给每台机器配置免密码登录 2.修改hadoop 的配置文件,发送到每台机器上3.启动dfs start-dfs.sh ...
- MINA线程模型
一.三种工作线程: (一) Acceptor thread: 该线程的作用是接收客户端的连接,并将客户端的连接导入到IOProcessor线程模型中.Acceptor thread在调用了Accep ...
- Linux下安装CollabNetSubversionEdge
1.首先下载CollabNet Subversion,目前最新版本Subversion Edge 5.2.2 (Linux 64-bit),注意下载的时候需要注册下账号,才允许下载: 2.安装Coll ...
- Visual Studio: 一键卸载所有组件工具,彻底卸载干净。
第一步.手动卸载VS主体 第二步.下载工具并解压 网盘下载地址:https://pan.baidu.com/s/1eSHRYxW 也可以在Github上下载最新版本:https://github.co ...
- 单机RedHat6.5+JDK1.8+Hadoop2.7.3+Spark2.1.1+zookeeper3.4.6+kafka2.11+flume1.6环境搭建步骤
1.RHEL 6.5系统安装配置图解教程(rhel-server-6.5) 2.在Linux下安装JDK图文解析 3.RedHat6.5上安装Hadoop单机 4.RedHat6.5安装Spark单机 ...