Java实现Android,iOS设备实时监控
Java实现Android设备实时监控
设计思路:
第一,启动一个实时截图线程,负责实时截取Android设备屏幕,保存到本地路径。
第二,在JSP页面,定义一个img对象,实时更换img对象的src属性。
这样,每次截图线程截取新图片时会替换掉旧图而JSP页面实时读取新图。就可以达到实时监控手机界面的效果。
关键技术:
这里面的关键技术有两点:
1)ADB截图命令:在使用adb前,必须要按在电脑上安装adb,具体教程自己百度。这里描述截图命令:
adb -s cc16cc shell screencap -p /sdcard/liu.png
adb -s cc16cc pull /sdcard/liu.png /usr/local/lib/jian.png
tips:
这里解释一下这两句话。这两句命令是终端执行命令,第一句是让adb 对设备udid为cc16cc这太设备进行截图并把图片保存到sd卡,命名为 liu.png。-s 这个参数是表示后面接设备的udid。第二句是adb吧sd卡下面的liu.png这张图推送到电脑/usr/local/lib这个目录下并命名为 jian.png。这样就完成了一次截图。
2)JSP页面实时加载图片: jsp页面实时加载图片,这里说几个关键函数:
setInterval("getScreen();",50) 这个函数的作用是每隔50毫秒执行一次getScreen()这个函数。
function getScreen(){
$(#screenPic).attr("src","<%=basePath%>/resources/screenshot/jian.png?a=Math.random()")
}
tips:
这段代码的意思是每隔50毫秒去调用一次getScreen()这个函数,getScreen()函数负责替换id=screenPic这个img标签的src值。写 a=Math.random()是因为一个img对象替换src值后,由于浏览器缓存的原因,img对象的图片并没有被替换,所以要用这种方式处理。当然, 这个a不是固定的,可以随意写。
Java实现iOS设备实时监控
设计思路:
iOS实时监控的设计思路有Android的设计思路是相同的。
关键技术:
iOS的实现方式与Android相同,这里的区别在于iOS实时截图的实现。
1)idevicescreenshot截图命令:idevicescreenshot -u cc16cc /usr/local/liu.png
idevicescreenshot截图工具要依赖于ideviceinstaller,而ideviceinstaller要依赖于libimobiledevice。下面是安装教程。
a) brew install libimobiledevice
b) brew install -HEAD ideviceinstaller
tips:
iOS实时监控截图必须在Mac环境下进行,如果在依赖安装完成后截图命令出错可在终端执行"sudo chmod -R 777 /var/lib/lockdown/"。
Java实现Android,iOS设备实时监控的更多相关文章
- shell+钉钉机器人完成java程序中断后自启动和实时监控
java实时程序在运行过程中偶尔出现异常信息中断的情况,通过shell脚本即可完成自启动. 以下为监控一个实时的java程序的shell脚本. 通过每10秒检查一次java程序的进程,来判断程序是否处 ...
- c# c++ oc java || mac android ios
Unity 使用C/C++ 跨平台终极解决方案(PC,iOS,Android,以及支持C/C++的平台) http://blog.csdn.net/fg5823820/article/details/ ...
- iOS开发——实时监控网速(仅作参考,发现一点问题)
开发中用到获取网速的地方,应该就两种: 1.下载速度,这种可以直接在接受数据的地方统计计算.这个就不讲了. 2.获取手机网卡的数据,可以监控网卡的进出流量,下面就是. #import "Vi ...
- Bodymovin:Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画
转自:https://www.cnblogs.com/zamhown/p/6688369.html 大杀器Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画 ...
- 大杀器Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画
前段时间听部门老大说,Airbnb出了个移动端的动画库Lottie,可以和一个名叫Bodymovin的AE插件结合起来,把在AE上做好的动画导出为json文件,然后以Android/iOS原生动画的形 ...
- fiddler 进行Android/IOS代理配置抓包
1.准备:Android+IOS设备 下载:fiddler抓包工具,不是最新版的链接: 链接:https://pan.baidu.com/s/1BaBfu2H4xgpsh1wmkfC8aQ ...
- React++ node.js ++SQL Sever ++MySQL++ python ++ php ++ java ++ c++ c#++ java ++ android ++ ios ++Linux+
"C语言在它诞生的那个年代,是非常不错的语言,可惜没有OOP.当项目臃肿到一定程度,人类就不可控了. 为了弥补这个缺陷,C++诞生了.而为了应对各种情况,C++设计的大而全,太多复杂的特性, ...
- EasyCamera Android安卓移动视频监控单兵设备接入EasyDarwin开源流媒体云平台
前言 随着Android系统的不断更新和发展,现在越来越多的硬件产品选择用安卓系统作为运行环境,电视机,机顶盒.门禁.行车记录仪.车载系统.单兵设备等等,Android系统底层还是Linux,但对上层 ...
- Android(Linux)实时监控串口数据
之前在做WinCE车载方案时,曾做过一个小工具TraceMonitor,用于显示WinCE系统上应用程序的调试信息,特别是在实车调试时,用于监控和显示CAN盒与主机之间的串口数据.因为需要抢占市场先机 ...
随机推荐
- ERP实施顾问是干什么的?
ERP实施序列的人员,统称为ERP实施顾问. ERP实施顾问“是把公司的ERP实施作为己任,并投入大量的人力和财力以实现这一目标的群体”.他们精通ERP理论与ERP软件的使用方法,熟练运用项目实施方法 ...
- .Net Core迁移到MSBuild平台(二)
一.前言 在上一篇文章.Net Core迁移到MSBuild的多平台编译问题中,简单的讲了下新的项目配置文件中的节点配置,这篇我将用一些例子来详细讲下从project.json迁移到msbuild过程 ...
- 基于C#的UDP通信(使用UdpClient实现,包含发送端和接收端)
UDP不属于面向连接的通信,在选择使用协议的时候,选择UDP必须要谨慎.在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重.但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小, ...
- 【故障•监听】TNS-12518、TNS-00517和 Linux Error:32:Broken pipe
[故障|监听]TNS-12518.TNS-00517和 Linux Error:32:Broken pipe 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱 ...
- Apache Flume日志收集系统简介
Apache Flume是一个分布式.可靠.可用的系统,用于从大量不同的源有效地收集.聚合.移动大量日志数据进行集中式数据存储. Flume简介 Flume的核心是Agent,Agent中包含Sour ...
- RabbitMQ-从基础到实战(3)— 消息的交换
1.简介 在前面的例子中,每个消息都只对应一个消费者,即使有多个消费者在线,也只会有一个消费者接收并处理一条消息,这是消息中间件的一种常用方式.还有另外一种方式,生产者生产一条消息,广播给所有的消费者 ...
- aiohttp之添加静态资源路径
所谓静态资源,是指图片.js.css等文件.官方的说明在这里. 以一个小项目来说明,下面是项目的目录结构: . ├── static │ ├── css │ │ ├── base.css │ │ ├─ ...
- App对接支付宝移动支付功能
前段时间看了下app对接支付宝移动支付的功能,并自己总结了下支付宝移动支付的实现流程 一.申请流程 前提是已有现成的应用. 1. 申请地址 https://b ...
- PHP的简单易懂文件管理,可实现基本功能
我们利用的是嵌入PHP代码和ajax结合的方式,首相想到的是利用遍历文件的方式找出分件下的目录和文件,并且找到它们的路径,使用 dirname取上级目录, basename从完整路径中取文件名,其中最 ...
- 深入浅出数据结构C语言版(1)——什么是数据结构及算法
在很多数据结构相关的书籍,尤其是中文书籍中,常常把数据结构与算法"混合"起来讲,导致很多人初学时对于"数据结构"这个词的意思把握不准,从而降低了学习兴趣和学习信 ...