小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 16816|回复: 15

我这是第一次整wifi小车 群主帮帮忙,这是java的小车视频控制程序,怎么变成android的

[复制链接]
发表于 2012-5-6 10:54:35 | 显示全部楼层 |阅读模式
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.*;
/**
*
* @author LS
*/
public class Main extends JFrame {
private final int HDRLEN = 50;
private final int SZOFS = 29;
private JLabel m_label = null;
Socket connection;
InputStream in;
private JPanel jPanel1;
private JPanel jPanel2;
JButton w = new JButton("前进");
JButton s = new JButton("后退");
JButton a = new JButton("左转");
JButton d = new JButton("右转");
private Socket socket;
private PrintWriter ps;
private String sip = "10.0.0.10";
private int port = 12580;
private int vport = 7070;
public Main() {
  getContentPane().setLayout(null);
  setSize(800, 600);
  setLocation(200, 100);
  jPanel1 = new javax.swing.JPanel();
  jPanel2 = new javax.swing.JPanel();
  jPanel1.setLayout(null);
  jPanel2.setLayout(new GridLayout(3, 3));
  jPanel1.setSize(400, 400);
  jPanel1.setBackground(new Color(0, 255, 0));
  jPanel1.setLocation(10, 10);
  m_label = new JLabel("123");
  m_label.setSize(400, 400);
  add(m_label);
  jPanel2.setSize(200, 200);
  jPanel2.setLocation(500, 100);
  jPanel2.add(w, BorderLayout.NORTH);
  jPanel2.add(s, BorderLayout.SOUTH);
  jPanel2.add(a, BorderLayout.WEST);
  jPanel2.add(d, BorderLayout.EAST);
  getContentPane().add(jPanel2);
  addWindowListener(new WindowAdapter() {
   @Override
   public void windowClosing(WindowEvent e) {
    System.exit(0);
   }
  });
  w.addActionListener(new Listener());
  s.addActionListener(new Listener());
  a.addActionListener(new Listener());
  d.addActionListener(new Listener());
  try {
   socket = new Socket(sip, port);
   ps = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
     socket.getOutputStream())), true);
  } catch (IOException e) {
  }
  setVisible(true);
  setResizable(false);
  setTitle("Control");
}
class Listener implements ActionListener {
  @Override
  public void actionPerformed(ActionEvent e) {
   if (e.getActionCommand().equals("前进")) {
    ps.print("w");
    ps.flush();
   }
   if (e.getActionCommand().equals("后退")) {
    ps.print("ww");
    ps.flush();
   }
   if (e.getActionCommand().equals("左转")) {
    ps.print("www");
    ps.flush();
   }
   if (e.getActionCommand().equals("右转")) {
    ps.print("w");
    ps.flush();
   }
  }
}
public static void main(String[] args) {
  Main m = new Main();
  m.run();
}
public void run() {
  OutputStream out = null;
  try {
   connection = new Socket(sip, vport);
   in = connection.getInputStream();
   out = connection.getOutputStream();
   System.out.println(in);
  } catch (IOException e) {
   System.out.println("socket conn filed");
  }
  byte[] buffer = new byte[512 * 1024];
  byte[] b = { 'O', 'K', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  while (true) {
   int n = 0;
   int siz = 0;
   try {
    out.write(b);
    n = in.read(buffer, 0, HDRLEN);
   } catch (Exception e) {
   }
   if (n < HDRLEN) {
    System.out.println("n < HDRLEN");
    continue;
   } else {
    System.out.println("n >HDRLEN");
    int ssz = SZOFS;
    siz += unsignedByteToInt(buffer[ssz + 3]) << 24;
    siz += unsignedByteToInt(buffer[ssz + 2]) << 16;
    siz += unsignedByteToInt(buffer[ssz + 1]) << 8;
    siz += unsignedByteToInt(buffer[ssz]);
    n = HDRLEN;
    if (buffer[0] != 'S' || buffer[1] != 'P' || buffer[2] != 'C'
      || buffer[3] != 'A') {
     continue;
    } else if (siz <= 0 || siz > (512 * 1024)) {
     siz = 0;
     try {
      in.read(buffer, n, buffer.length);
     } catch (Exception e) {
     }
     continue;
    } else {
     do {
      int r = 0;
      try {
       r = in.read(buffer, n, buffer.length - n);
      } catch (Exception e) {
       e.printStackTrace();
      }
      n += r;
     } while (n < (siz + HDRLEN));
    }
   }
   byte[] buffer2 = new byte[n];
   for (int i = 0; i < n; i++)
    buffer2[i] = buffer[i + HDRLEN];
   try {
    BufferedImage image = ImageIO.read(new ByteArrayInputStream(
      buffer2));
    ImageIcon ii = new ImageIcon(image);
    // ImageIcon ii = new
    // ImageIcon(Toolkit.getDefaultToolkit().createImage(buffer2));
    m_label.setIcon(ii);
   } catch (IOException e) {
   }
  }// while
}
public static int unsignedByteToInt(byte b) {
  return (int) b & 0xff;
}
}

回复

使用道具 举报

发表于 2012-5-6 11:08:30 | 显示全部楼层
本帖最后由 liuviking 于 2012-5-6 11:12 编辑

Android手机获取WIFI小车摄像头视频源码包
Android_MJPEG.rar (46.9 KB, 下载次数: 514)
回复 支持 反对

使用道具 举报

发表于 2012-5-16 14:18:14 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2012-6-25 16:13:44 | 显示全部楼层
学习了,多谢
回复 支持 反对

使用道具 举报

发表于 2012-7-6 05:23:54 | 显示全部楼层
谢谢,学习了!!
回复 支持 反对

使用道具 举报

发表于 2012-7-6 05:25:22 | 显示全部楼层
谢谢,学习了!!
回复 支持 反对

使用道具 举报

发表于 2012-7-7 10:00:56 | 显示全部楼层
下来看看 学习下
回复 支持 反对

使用道具 举报

发表于 2012-8-30 07:38:49 | 显示全部楼层
下了看看 学习一下。
回复 支持 反对

使用道具 举报

发表于 2012-10-9 16:31:12 | 显示全部楼层
谢谢共享
你们都太有才了
回复 支持 反对

使用道具 举报

发表于 2013-5-8 21:01:33 | 显示全部楼层
看来什么都得学习,紧张呀!多谢版主。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-11-23 00:02 , Processed in 1.135057 second(s), 23 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

快速回复 返回顶部 返回列表