在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → 基于android的远程视频监控系统 附完整源码

基于android的远程视频监控系统 附完整源码

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:0.16M
  • 下载次数:199
  • 浏览次数:10569
  • 发布时间:2013-04-21
  • 实例类别:Android平台开发
  • 发 布 人:crazycode
  • 文件格式:.rar
  • 所需积分:2
 相关标签: Android 视频

实例介绍

【实例简介】原理:客户端将采集到的每一帧图像数据发送至服务器,服务器接收
【实例截图】


【核心代码】

/*
*   @version 1.2 2012-06-29
*   @author wanghai
*/

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;

import javax.imageio.*;
import javax.swing.*;
import java.net.Socket;
import java.net.ServerSocket;

/**
*在服务器开启情况下,启动客户端,创建套接字接收图像
*/

public class ImageServer {	
    public static ServerSocket ss = null;
    
    public static void main(String args[]) throws IOException{    
    	ss = new ServerSocket(6000);
        
        final ImageFrame frame = new ImageFrame(ss);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
       
        while(true){
        	frame.panel.getimage();
            frame.repaint();
        }        
    }
       
}

/** 
    A frame with an image panel
*/
@SuppressWarnings("serial")
class ImageFrame extends JFrame{
	public ImagePanel panel;
	public JButton jb;
   
    public ImageFrame(ServerSocket ss){
   	    // get screen dimensions   	   
   	    Toolkit kit = Toolkit.getDefaultToolkit();
        Dimension screenSize = kit.getScreenSize();
        int screenHeight = screenSize.height;
        int screenWidth = screenSize.width;

        // center frame in screen
        setTitle("ImageTest");
        setLocation((screenWidth - DEFAULT_WIDTH) / 2, (screenHeight - DEFAULT_HEIGHT) / 2);
        setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

        // add panel to frame
        this.getContentPane().setLayout(null);
        panel = new ImagePanel(ss);
        panel.setSize(640,480);
        panel.setLocation(0, 0);
        add(panel);
        jb = new JButton("拍照");
        jb.setBounds(0,480,640,50);
        add(jb);
        saveimage saveaction = new saveimage(ss);
        jb.addActionListener(saveaction);
    }

    public static final int DEFAULT_WIDTH = 640;
    public static final int DEFAULT_HEIGHT = 560;  
}

/**
   A panel that displays a tiled image
*/
@SuppressWarnings("serial")
class ImagePanel extends JPanel {     
    private ServerSocket ss;
    private Image image;
    private InputStream ins;
	 
    public ImagePanel(ServerSocket ss) {  
	    this.ss = ss;
    }
    
    public void getimage() throws IOException{
    	Socket s = this.ss.accept();
        System.out.println("连接成功!");
        this.ins = s.getInputStream();
		this.image = ImageIO.read(ins);
		this.ins.close();
    }
   
    public void paintComponent(Graphics g){  
        super.paintComponent(g);    
        if (image == null) return;
        g.drawImage(image, 0, 0, null);
    }

}

class saveimage implements ActionListener {
	RandomAccessFile inFile = null;
	byte byteBuffer[] = new byte[1024];
	InputStream ins;
	private ServerSocket ss;
	
	public saveimage(ServerSocket ss){
		this.ss = ss;
	}
	
	public void actionPerformed(ActionEvent event){
        try {
			Socket s = ss.accept();
			ins = s.getInputStream();
			
			// 文件选择器以当前的目录打开
	        JFileChooser jfc = new JFileChooser(".");
	        jfc.showSaveDialog(new javax.swing.JFrame());
	        // 获取当前的选择文件引用
	        File savedFile = jfc.getSelectedFile();
	        
	        // 已经选择了文件
	        if (savedFile != null) {
	            // 读取文件的数据,可以每次以快的方式读取数据
	            try {
					inFile = new RandomAccessFile(savedFile, "rw");
				} catch (FileNotFoundException e) {
					e.printStackTrace();
				}
	        }

            int amount;
            while ((amount = ins.read(byteBuffer)) != -1) {
                inFile.write(byteBuffer, 0, amount);
            }
            inFile.close();
            ins.close();
            s.close();
            javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(),
                    "已接保存成功", "提示!", javax.swing.JOptionPane.PLAIN_MESSAGE);
		} catch (IOException e) {

			e.printStackTrace();
		}
	}
}

标签: Android 视频

实例下载地址

基于android的远程视频监控系统 附完整源码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 劲速雷 发表于: 2015-06-24 11:32 23
不错 正是我需要的

支持(0) 盖楼(回复)

第 2 楼 milk.22 发表于: 2015-11-05 16:49 19
感谢分享

支持(0) 盖楼(回复)

第 3 楼 凤凰时雨 发表于: 2015-11-19 21:47 53
感谢哈!

支持(0) 盖楼(回复)

第 4 楼 bisheguo123 发表于: 2016-04-10 20:04 40
服务器端怎么打开,怎么才能够在服务器端显示视频?

支持(0) 盖楼(回复)

第 5 楼 ITHome 发表于: 2016-12-08 21:27 34
niu

支持(0) 盖楼(回复)

第 6 楼 阿天 发表于: 2016-12-13 22:32 25
niu

ITHome 2016-12-08 21:27 34

请问你在服务端显示视频了吗?怎么显示的?

支持(0) 盖楼(回复)

第 7 楼 自学逆天 发表于: 2017-03-09 17:45 45
我来说两句...我来看看

支持(0) 盖楼(回复)

第 8 楼 自学逆天 发表于: 2017-03-09 17:45 48
我来说两句...我来看看

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有8条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警