`
smallsmile
  • 浏览: 136232 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

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.手机端:

package cn.netjava;

import java.io.DataInputStream;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;

public class FunctionViewActivity extends Activity{
	 
	//定义各个stream
	private java.io.InputStream ins;
	private java.io.OutputStream ous;
	private java.io.DataInputStream dins;
	
	//定义各个组件
	private ImageView img;
	private TextView tvw;
	
	//定义一个Bitmap 用来存ImageView的每个图
	private Bitmap bmm;
	//放接收到数据的数组
    private byte[] data;
	
	//初始化
	public void init(String ip){
		try{
			System.out.println(ip);
	    	java.net.Socket soc=new java.net.Socket(ip,9090);
	    	ins=soc.getInputStream();
	    	dins=new DataInputStream(ins);
	    	ous=soc.getOutputStream();
	    	System.out.println("创建成功!");
		}catch(Exception ef){
			ef.printStackTrace();
		}
		
	}
	//内部类,myHandler
	class MyHandler extends Handler{
		public MyHandler(){
		  
		}
		public MyHandler(Looper looper){
			super(looper);
		}
	   public void handleMessage(Message msg){
		   
		   img.setImageBitmap((Bitmap)msg.obj);
		   
	}
	}

	//onCreate
	public void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.mainfunctionactivity);
	        //得到各个组件
	        img=(ImageView)findViewById(R.id.imgView);
	        tvw=(TextView)findViewById(R.id.exitTextView);
	        
	        //textView 添加监听器
	        tvw.setOnClickListener(new OnClickListener(){ 
				public void onClick(View v) {
				    System.exit(0);
				}	
	        });
	        
	        init(this.getIntent().getStringExtra("ipaddress"));
	        
	        Looper looper = Looper.myLooper();    
	             //此处甚至可以不需要设置Looper,因为 Handler默认就使用当前线程的Looper   
	        final MyHandler  myhandler= new MyHandler(looper);   

	        new Thread() {   
	                 public void run() {   
	           		   while(true){
	           		   try{
	           		   data=new byte[dins.readInt()-5];
	           		   dins.readByte();
	           		   //注意,这里要用readfully
	           		   dins.readFully(data);
	           		   //注意,这里要回收bmm ,否则报错
	           		   if (bmm!=null){
	           			   bmm.recycle();
	           		   }
	           		   bmm=BitmapFactory.decodeByteArray(data, 0, data.length);
	           		   System.out.println("decode after:"+System.currentTimeMillis());
	           		   //每一百ms 执行 (可调)
	           		//	Thread.sleep(100);
	           			//创建一个Message对象,并把得到的天气信息赋值给Message对象   
	                    Message message = Message.obtain();   
	                    message.obj = (Bitmap)bmm; 
	                    myhandler.sendMessage(message);  
	           		} catch (Exception e) {
	           			// TODO Auto-generated catch block
	           			e.printStackTrace();
	           		}
	                     
	           	   }
	        	  }   
	         
	            }.start();  
	 }
	
}

 

 

 

  • 大小: 288.4 KB
  • 大小: 91.3 KB
  • 大小: 121.7 KB
分享到:
评论
2 楼 FlashHorse 2013-01-16  
楼主 能发下源码吗 谢谢!623750269@qq.com
1 楼 qq275924561 2012-10-13  
你好 可以看看这个项目的安卓的项目文件吗?
求交流~
QQ:275924561 h或者发我QQ邮箱也可以!275924561@qq.com

相关推荐

    Android手机远程监控源码.zip

    在Android平台上实现手机远程监控,通常涉及到多个技术领域,包括网络通信、图像处理、设备权限管理等。这个项目"Android手机远程监控源码"可能是提供了一整套解决方案,让我们一起探讨其中可能涉及的关键知识点。 ...

    基于JAVA网络远程监控系统软件的实现(源码)

    基于JAVA网络远程监控系统软件的实现(源码)基于JAVA网络远程监控系统软件的实现(源码)基于JAVA网络远程监控系统软件的实现(源码)基于JAVA网络远程监控系统软件的实现(源码)基于JAVA网络远程监控系统软件的...

    Android视频监控源码

    在Android平台上实现视频监控功能,通常涉及到多个技术领域,包括网络通信、音视频编解码、设备控制以及用户界面设计等。以下是对"Android视频监控源码"的详细解析: 1. **网络通信**:在Android视频监控系统中,...

    Android Studio实现天气预报APP系统源码(也可做Android本科毕业设计).zip

    Android Studio实现天气预报APP系统源码(也可做Android本科毕业设计Android Studio实现天气预报APP系统源码(也可做Android本科毕业设计Android Studio实现天气预报APP系统源码(也可做Android本科毕业设计Android ...

    Android应用源码45套安卓源码合集.zip

    Android应用源码Android平台下通过HTTP协议实现断点续传下载.rar Android应用源码Hibernate4Android.rar Android应用源码http、udp、tcp网络交互组件.rar Android应用源码ListView实现的目录树结构.rar Android应用...

    android手机防盗软件源码

    Android手机防盗软件是一种重要的安全应用,它通过一系列的技术手段保护用户的设备不被非法使用,并在设备丢失或被盗时提供追踪和数据保护的功能。本源码是针对Android平台设计的防盗追踪软件,对于初学者来说,这是...

    Android手机管家源码

    本项目是一款基于Android平台的手机管理软件——“Android手机管家”的源码,它集成了四个主要功能:文件管理、应用管理、电话拦截以及文件加解密。这些功能覆盖了日常手机使用中的常见需求,使得用户能够更便捷地...

    Android本科毕业设计Android的实现视频资讯类app源码.zip

    Android本科毕业设计Android的实现视频资讯类app源码。Android本科毕业设计Android的实现视频资讯类app源码。Android本科毕业设计Android的实现视频资讯类app源码。Android本科毕业设计Android的实现视频资讯类app...

    基于java实现的Android 手机控制台灯开关+源码(毕业设计&课程设计&项目开发)

    基于java实现的Android 手机控制台灯开关+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于java实现的Android 手机控制台灯开关+源码,适合毕业设计、...

    Android手机管家源码.rar

    Android手机管家的源码结构通常遵循MVC(Model-View-Controller)或MVVM(Model-View-ViewModel)设计模式,以分离业务逻辑和界面展示。在源码中,你会看到诸如Activity、Fragment、Service等Android核心组件的使用...

    Android视频监控源码9_CamMonitor

    【Android视频监控源码9_CamMonitor】是一个专门为Android平台设计的视频监控应用程序的源代码。这个项目旨在帮助开发者理解如何在Android设备上实现实时的视频流监控功能,适用于智能家居、安全监控等领域。通过...

    Android Studio实现一个新闻APP系统源码+本科毕业设计必备项目.zip

    Android Studio实现一个新闻APP系统源码+本科毕业设计必备项目.zipAndroid Studio实现一个新闻APP系统源码+本科毕业设计必备项目.zipAndroid Studio实现一个新闻APP系统源码+本科毕业设计必备项目.zipAndroid Studio...

    C++开发Android实时投屏软件系统源码.zip

    Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限。同时支持GNU/Linux,Windows和MacOS三大主流桌面平台 它专注于: 精致 (仅显示设备屏幕) 性能 (30~...

    Android源码——远程视频监控程序源码.zip

    在Android平台上,开发一个远程视频监控程序涉及到许多关键的技术点,包括网络...通过研究这个源码,开发者可以学习到如何在Android平台上实现类似功能,并从中获取到关于网络编程、多媒体处理、性能优化等方面的经验。

    基于Android平台的手机安全卫士的设计与实现 附源码和文档

    基于Android平台的手机安全卫士的设计与实现 附源码和文档。 做毕业设计,课程设计或者正在学习相关技术知识的朋友可以下载资源学习。想继续学习相关知识的可以关注我。 系统主要功能: 手机防盗 程序锁 通讯卫士 ...

    视频监控软件源码

    3. 手机遥控:支持远程手机遥控意味着软件具备跨平台能力,可能使用了如Android或iOS的SDK,或者利用Web技术实现移动设备上的访问。这需要了解移动应用开发或者响应式设计。 4. SQL SERVER 2008:这是微软的商业级...

    android视频监控源码(带服务器)

    在Android平台上实现视频监控功能,通常涉及到多个技术领域,包括Android系统编程、网络通信、图像处理等。这个项目中,"android视频监控源码(带服务器)"提供了Android客户端与PC服务器之间的实时视频传输解决方案。...

    安卓Android源码——手机远程监控.rar

    【标题】"安卓Android源码——手机远程监控"揭示了一个基于Android平台的手机远程监控系统的实现。这个系统可能涉及到以下几个核心知识点: 1. **Android操作系统基础**:Android是基于Linux内核的开源移动操作系统...

    Android应用源码手机实时视频监控项目.zip

    该压缩包文件“Android应用源码手机实时视频监控项目.zip”包含了实现手机实时视频监控功能的Android应用源码,以及相关的PC端源码和文档。这个项目对于学习Android开发,尤其是涉及多媒体处理和网络通信的开发者来...

    课程设计大作业基于java的Android Studio实现井字棋小游戏源码.zip

    课程设计大作业基于java的Android Studio实现井字棋小游戏源码课程设计大作业基于java的Android Studio实现井字棋小游戏源码课程设计大作业基于java的Android Studio实现井字棋小游戏源码课程设计大作业基于java的...

Global site tag (gtag.js) - Google Analytics