Android手机监控软件设计实现

一、需求分析:

随着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.服务器端(电脑)

Java代码

  1. package cn.netjava7;
  2. public class CharRoom {
  3. /**
  4. * 写一个服务器打开的程序
  5. * @param port:端口
  6. */
  7. public void startServer (int port){
  8. try{
  9. //建立一个Serverc 对象
  10. java.net.ServerSocket sc=new java.net.ServerSocket(port);
  11. System.out.println("服务器创建成功");
  12. //开始不断地接收数据
  13. while (true){
  14. //建立一个联结对象
  15. java.net.Socket client=sc.accept();
  16. UserThread ust=new UserThread(client);
  17. ust.init();
  18. ust.start();
  19. }
  20. }catch(Exception ef){
  21. ef.printStackTrace();
  22. }
  23. }
  24. /**
  25. * 主函数
  26. */
  27. public static void main(String args[]){
  28. CharRoom cr=new CharRoom();
  29. cr.startServer(9090);
  30. }
  31. }

Java代码

  1. package cn.netjava7;
  2. import java.awt.Dimension;
  3. import java.awt.Graphics;
  4. import java.awt.Image;
  5. import java.awt.Rectangle;
  6. import java.awt.Robot;
  7. import java.awt.Toolkit;
  8. import java.awt.image.BufferedImage;
  9. import java.io.ByteArrayOutputStream;
  10. import java.io.DataOutputStream;
  11. import java.io.IOException;
  12. import javax.imageio.ImageIO;
  13. import javax.swing.ImageIcon;
  14. import javax.swing.JFrame;
  15. public class UserThread extends Thread{
  16. //定义构造器,传入对client
  17. private java.net.Socket client;
  18. private java.io.InputStream ins;
  19. private java.io.OutputStream ous;
  20. public UserThread(java.net.Socket client){
  21. this.client=client;
  22. }
  23. //初始化
  24. public void init(){
  25. try {
  26. ins=client.getInputStream();
  27. ous=client.getOutputStream();
  28. } catch (IOException e) {
  29. // TODO Auto-generated catch block
  30. e.printStackTrace();
  31. }
  32. }
  33. //写run方法
  34. public void run(){
  35. try {
  36. sendImg();
  37. } catch (Exception e) {
  38. // TODO Auto-generated catch block
  39. e.printStackTrace();
  40. }
  41. }
  42. public void sendImg() throws Exception{
  43. DataOutputStream dous=new DataOutputStream(ous);
  44. Robot ro=new Robot();
  45. Dimension scrSize=Toolkit.getDefaultToolkit().getScreenSize();
  46. Rectangle r=new Rectangle(scrSize.width,scrSize.height);
  47. System.out.println("大小是:"+scrSize.height+" "+scrSize.width);
  48. while(true){
  49. BufferedImage bui=ro.createScreenCapture(r);
  50. ByteArrayOutputStream imageStream=new ByteArrayOutputStream();
  51. boolean resultWrite = ImageIO.write(bui, "jpg", imageStream);
  52. byte [] tagInfo=imageStream.toByteArray();
  53. System.out.println(tagInfo.length);
  54. System.out.println(tagInfo[0]+" "+tagInfo[1]);
  55. Image img=Toolkit.getDefaultToolkit().createImage(tagInfo, 0,tagInfo.length);
  56. dous.writeInt(tagInfo.length+5);
  57. dous.writeByte((byte)4);
  58. dous.write(tagInfo);
  59. Thread.sleep(1000);
  60. }
  61. }
  62. }

2.手机端:

Java代码

  1. package cn.netjava;
  2. import java.io.DataInputStream;
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.graphics.Bitmap;
  6. import android.graphics.BitmapFactory;
  7. import android.net.wifi.WifiManager;
  8. import android.os.Bundle;
  9. import android.os.Handler;
  10. import android.os.Looper;
  11. import android.os.Message;
  12. import android.view.View;
  13. import android.view.View.OnClickListener;
  14. import android.widget.ImageView;
  15. import android.widget.TextView;
  16. public class FunctionViewActivity extends Activity{
  17. //定义各个stream
  18. private java.io.InputStream ins;
  19. private java.io.OutputStream ous;
  20. private java.io.DataInputStream dins;
  21. //定义各个组件
  22. private ImageView img;
  23. private TextView tvw;
  24. //定义一个Bitmap 用来存ImageView的每个图
  25. private Bitmap bmm;
  26. //放接收到数据的数组
  27. private byte[] data;
  28. //初始化
  29. public void init(String ip){
  30. try{
  31. System.out.println(ip);
  32. java.net.Socket soc=new java.net.Socket(ip,9090);
  33. ins=soc.getInputStream();
  34. dins=new DataInputStream(ins);
  35. ous=soc.getOutputStream();
  36. System.out.println("创建成功!");
  37. }catch(Exception ef){
  38. ef.printStackTrace();
  39. }
  40. }
  41. //内部类,myHandler
  42. class MyHandler extends Handler{
  43. public MyHandler(){
  44. }
  45. public MyHandler(Looper looper){
  46. super(looper);
  47. }
  48. public void handleMessage(Message msg){
  49. img.setImageBitmap((Bitmap)msg.obj);
  50. }
  51. }
  52. //onCreate
  53. public void onCreate(Bundle savedInstanceState) {
  54. super.onCreate(savedInstanceState);
  55. setContentView(R.layout.mainfunctionactivity);
  56. //得到各个组件
  57. img=(ImageView)findViewById(R.id.imgView);
  58. tvw=(TextView)findViewById(R.id.exitTextView);
  59. //textView 添加监听器
  60. tvw.setOnClickListener(new OnClickListener(){
  61. public void onClick(View v) {
  62. System.exit(0);
  63. }
  64. });
  65. init(this.getIntent().getStringExtra("ipaddress"));
  66. Looper looper = Looper.myLooper();
  67. //此处甚至可以不需要设置Looper,因为 Handler默认就使用当前线程的Looper
  68. final MyHandler  myhandler= new MyHandler(looper);
  69. new Thread() {
  70. public void run() {
  71. while(true){
  72. try{
  73. data=new byte[dins.readInt()-5];
  74. dins.readByte();
  75. //注意,这里要用readfully
  76. dins.readFully(data);
  77. //注意,这里要回收bmm ,否则报错
  78. if (bmm!=null){
  79. bmm.recycle();
  80. }
  81. bmm=BitmapFactory.decodeByteArray(data, 0, data.length);
  82. System.out.println("decode after:"+System.currentTimeMillis());
  83. //每一百ms 执行 (可调)
  84. //  Thread.sleep(100);
  85. //创建一个Message对象,并把得到的天气信息赋值给Message对象
  86. Message message = Message.obtain();
  87. message.obj = (Bitmap)bmm;
  88. myhandler.sendMessage(message);
  89. } catch (Exception e) {
  90. // TODO Auto-generated catch block
  91. e.printStackTrace();
  92. }
  93. }
  94. }
  95. }.start();
  96. }
  97. }

Android手机监控软件设计实现

时间: 2024-10-07 19:01:01

Android手机监控软件设计实现的相关文章

android手机赚钱软件排行2014-05-08更新

1,招财猫:官方下载 每天5分钟至少2块钱 使用方法:每天20次左滑,每次50元宝,一共1000元宝=1RMB,其他左滑每次4元宝,一天最多1000次:每天摇一摇50-1000元宝,统计下来,500比较多:每天任务满888元宝,可以分享一次,500元宝:其他少量下载任务: 2.疯狂锁屏:官方下载 每天5毛 使用方法:在"赚钱"里面下载7个壁纸,每个壁纸自动使用24小时,每个壁纸5金币=5毛钱.特点:无需操作 3.锁屏赚:官方下载 每天1块5毛 使用方法:左滑15次,每次1毛,每10分钟

android手机赚钱软件排行

1,招财猫:官方下载 每天5分钟至少2块钱 使用方法:每天20次左滑,每次50元宝,一共1000元宝=1RMB,其他左滑每次4元宝,一天最多1000次:每天摇一摇50-1000元宝,统计下来,500比较多:每天任务满888元宝,可以分享一次,500元宝:其他少量下载任务: 2.疯狂锁屏:官方下载 每天5毛 使用方法:在"赚钱"里面下载7个壁纸,每个壁纸自动使用24小时,每个壁纸5金币=5毛钱.特点:无需操作 3.锁屏赚:官方下载 每天1块5毛 使用方法:左滑15次,每次1毛,每10分钟

一台Android手机控制另一台Android手机的软件

============问题描述============ http://download.csdn.net/detail/llxxhm/7323023 提出宝贵意见. ============解决方案1============ 已經下載,先在虛擬機中試用,看看如何使用 ============解决方案2============ 好使么!试试 ============解决方案3============ 引用 6 楼 llxxhm 的回复: Quote: 引用 4 楼 u012308004 的回复:

Android手机应用UI设计的10个建议

随着各种牌子的手机越来越多的发行,手机应用这一行业也变得炙手可热.除了大的开发团队,小团队,以及个人开发者,纷纷加入到这一热门行业. 每个开发循环迟早到会走到应用几近完成这个点.接下来要做什么呢?你可曾重视"用户体验"这四个字?以下有10个技巧能够使你开发的手机应用在发布前提升质量,最大化发掘该应用的潜力,从而最小化用户差评和低下载量这种不良结果. 1.首次开启体验 优秀的网站和手机应用有诸多相似之处.这两者都能够迅速吸引用户或访问者.如果没有做到这点,用户很可能会转而寻找其他替代品.

蓝牙转串口的硬件和Android手机的APK设计

一.概述 深圳宏进蓝牙模块是专为智能无线数据传输而打造,采用英国CSR公司BlueCore4-Ext芯片,遵循V2.1+EDR蓝牙规范.本模块支持RS232串口以及RS485总线接口,并支持SPP蓝牙串口协议,具有成本低.体积小.功耗低.收发灵敏性高等优点,使用灵活. 二.特点: 蓝牙V2.1+EDR 蓝牙Class 2 内置PCB 射频天线 内置8Mbit Flash 支持SPI 编程接口 支持UART,USB,SPI,PCM 等接口 支持主从一体 支持软硬件控制主从模块 3.3V 电源 支持

Android手机应用UI设计的

随着各种牌子的手机越来越多的发行,手机应用这一行业也变得炙手可热.除了大的开发团队,小团队,以及个人开发者,纷纷加入到这一热门行业. 每个开发循环迟早到会走到应用几近完成这个点.接下来要做什么呢?你可曾重视"用户体验"这四个字?以下有10个技巧能够使你开发的手机应用在发布前提升质量,最大化发掘该应用的潜力,从而最小化用户差评和低下载量这种不良结果. http://c.tieba.baidu.com/p/3381914696 http://c.tieba.baidu.com/p/3381

办公室内网监控软件 泄密案件逐年上升

近期,南京法院审理了一起有关员工泄露企业机密的案件,南京某科技公司的段某将公司中的机密信息和公司重要资料全部拷贝,之后以 技术入股的形式到了其他竞争对手的公司.直接盈利超过千万元.而根据南京市检察院公诉一处副处长颜畅介绍,从2013年开始,各类企 业员工泄露企业机密的案件就有增长的趋势,这给很多公司带来了巨大的挑战,很多公司都因为公司中的高级管理人员泄露公司的机密最 终付出了惨痛的代价.公司管理阶层人员泄密,泄露信息量大,对公司造成的损失和危害也是不可设想的,因此更要从根本上防止这部分 人员泄密

移动手机组态软件UI设计思路探讨

监控组态软件是集计算机技术.控制技术.网络技术为一体的高新技术产品,具有控制功能强.操作方便和可靠性高等特点,可以方便地用于对工业现场进行数据采集和监视控制.监控技术经历了单机监控系统.集中式监控系统和网络范围的远程监控三个发展阶段.远程监控是指本地计算机通过网络系统对远端现场智能设备进行监测和控制.从架构模式上区分,监控组态软件大致可分为C/S(客户端/服务器)模式和B/S(浏览器/服务器)模式两大类.目前,国内的监控组态软件以传统的C/S模式为主,而借助日益普及的Internet网络或者LA

GPS部标平台的架构设计(六)-Android手机客户端和手机查车设计

对于GPS软件平台,虽然有功能非常丰富的PC端或BS客户端,但是客户也是需要移动客户端来作为自己的辅助工具,也是需要的.做为GPS平台的设计者和开发者,在开发移动客户端的时候,也需要从常规的服务器开发和客户端开发的思维中,转变过来,当然客户的需求也需要转变,因为毕竟不能随心所欲的将PC端的所有功能需求照搬到手机客户端,手机的开发环境.网络环境.使用环境都决定了设计理念与PC端的设计是完全不一样的. 通常我们成为GPS部标平台的手机客户端为手机查车,实际上现在的功能不仅仅是查车,由于客户需求的推进