一、需求分析:
随着IT信息技术的飞速发展,手机的普及,伴随着智能手机的出现及快速的更新换代,手机已不仅仅是一个通信工具,更是一个多功能的应用平台。
手机监控软件则是基于电脑监控软件的原理,植入手机平台的一款软件,由于手机具有良好的网络支持及出色的便携性,植入手机平台十分有现实意义。
二、概要设计:
服务器端:
1. 启动服务器,接收socket
2. 截取屏幕图像,压缩并编码发送
客户端:
1. 登陆服务器及验证
2. 接收服务器信息并解码显示
各个功能通过各自的类来完成。
三、详细设计:
1、手机客户端用ImageView来显示监控画面。
2、手机端使用线程完成接收信息、译码等费时操作。
3、完成Activity之间的数据传递。
4、使用流布局、相对布局等布局方式
5、使用布局与程序功能代码分离的设计方法
6、使用横向、全屏
四、程序结构
1、程序结构说明:
本程序采用模块化设计方法,各个功能的实现都有具体的方法,在主函数调用相应的方法即可实现程序的要求。程序的整体性很强。
2、重要数据说明:
程序通信中,使用字节流协议进行通信。
四个字节
|
一个字节
|
后N个字节
|
一个INT,代表信息长度
|
代表类型
|
信息
|
其中,类型:0代表图片类型数据 (针对客户端)
0代表移动命令 (针对服务器)
1代表鼠标点击命令 2代表鼠标释放命令
3代表键盘点击命令 4代表键盘释放命令
3、函数清单:
见代码
五、调试分析:
程序截图:
使用预览
欢迎界面
使用界面
六、源代码:
1.服务器端(电脑)
- package cn.netjava7;
-
- public class CharRoom {
- /**
- * 写一个服务器打开的程序
- * @param port:端口
- */
- public void startServer (int port){
-
-
- try{
- //建立一个Serverc 对象
- java.net.ServerSocket sc=new java.net.ServerSocket(port);
- System.out.println("服务器创建成功");
- //开始不断地接收数据
- while (true){
- //建立一个联结对象
- java.net.Socket client=sc.accept();
- UserThread ust=new UserThread(client);
- ust.init();
- ust.start();
- }
-
- }catch(Exception ef){
- ef.printStackTrace();
- }
-
-
- }
-
-
-
- /**
- * 主函数
- */
- public static void main(String args[]){
- CharRoom cr=new CharRoom();
- cr.startServer(9090);
- }
-
-
- }
- package cn.netjava7;
-
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.Rectangle;
- import java.awt.Robot;
- import java.awt.Toolkit;
- import java.awt.image.BufferedImage;
- import java.io.ByteArrayOutputStream;
- import java.io.DataOutputStream;
- import java.io.IOException;
-
- import javax.imageio.ImageIO;
- import javax.swing.ImageIcon;
- import javax.swing.JFrame;
-
- public class UserThread extends Thread{
- //定义构造器,传入对client
- private java.net.Socket client;
- private java.io.InputStream ins;
- private java.io.OutputStream ous;
- public UserThread(java.net.Socket client){
- this.client=client;
- }
- //初始化
- public void init(){
- try {
- ins=client.getInputStream();
- ous=client.getOutputStream();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- }
- //写run方法
- public void run(){
- try {
- sendImg();
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- public void sendImg() throws Exception{
- DataOutputStream dous=new DataOutputStream(ous);
- Robot ro=new Robot();
- Dimension scrSize=Toolkit.getDefaultToolkit().getScreenSize();
- Rectangle r=new Rectangle(scrSize.width,scrSize.height);
- System.out.println("大小是:"+scrSize.height+" "+scrSize.width);
- while(true){
- BufferedImage bui=ro.createScreenCapture(r);
-
- ByteArrayOutputStream imageStream=new ByteArrayOutputStream();
- boolean resultWrite = ImageIO.write(bui, "jpg", imageStream);
- byte [] tagInfo=imageStream.toByteArray();
- System.out.println(tagInfo.length);
- System.out.println(tagInfo[0]+" "+tagInfo[1]);
- Image img=Toolkit.getDefaultToolkit().createImage(tagInfo, 0,tagInfo.length);
- dous.writeInt(tagInfo.length+5);
- dous.writeByte((byte)4);
- dous.write(tagInfo);
- Thread.sleep(1000);
- }
-
-
-
-
-
-
-
-
- }
-
- }
2.手机端:
Android手机监控软件设计实现,布布扣,bubuko.com
Android手机监控软件设计实现
原文:http://www.cnblogs.com/xiaochao1234/p/3865502.html