您的位置:首页 > 运维架构

j2me智能手机实现远程监控室内操作(高级界面篇)

2008-09-28 11:02 253 查看
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.ImageItem;
import javax.microedition.lcdui.Spacer;
import java.io.IOException;
import java.util.Timer;

import sun.HttpConnection.HttpStringThread;
import sun.HttpConnection.TaskInterface;
import sun.dao.Control;

/**
* @date 2008-08-22
* @author Administrator
* @function 监视操作:远程监视图片初始化界面
*/
public class VideoCatchForm extends Form implements CommandListener,
TaskInterface{
private Command Active_Start = new Command("开始",Command.ITEM,1);
private Command Active_End = new Command("停止",Command.ITEM,2);
private Command Black = new Command("返回",Command.BACK,3);
Alert alert;
TaskInterface ti;

int count=0;
ImageItem item;
Image img11;
Image img12;
String str = "";
NormalMIDlet midlet;
boolean ischeck;//验证码标识
public VideoCatchForm(NormalMIDlet Nmidlet) {
super("视频抓拍");
midlet = Nmidlet;
try{
img11 = Image.createImage("/png/11.png");
img12 = Image.createImage("/png/12.png");
}catch(IOException ioe){
ioe.printStackTrace();
}
append(new Spacer(200,10));
item = new ImageItem("",img11,ImageItem.LAYOUT_CENTER,"");
append(item);
addCommand(Active_Start);
addCommand(Active_End);
addCommand(Black);
setCommandListener(this);
ti = this;
}
public void commandAction(Command cmd, Displayable s) {
//开始监视
if(cmd == Active_Start){
if(midlet.ischeck == true){
this.ischeck = true;
str = cmd.getLabel();
item = new ImageItem("",img12,ImageItem.LAYOUT_CENTER,"");
this.set(1,item);
String strUrl = "wap2.a-ihome.com/Video.aspx?TerminalNO="+Control.getTerminalNO()+"&AreaNO="+Control.getAreaNO()+"&Active=Start";
HttpStringThread htt = new HttpStringThread(strUrl,ti);
Thread th = new Thread(htt);
th.start();
}else{
this.ischeck = false;
alert = new Alert("提示:", "您输入的序列号或验证码有误", null,
AlertType.ERROR);
midlet.display.setCurrent(alert);
}
}
//停止操作
else if(cmd == Active_End){
if(midlet.ischeck == true){
this.ischeck = true;
str = cmd.getLabel();
midlet.timer.cancel();
String strUrl = "wap2.a-ihome.com/Video.aspx?TerminalNO="+Control.getTerminalNO()+"&AreaNO="+Control.getAreaNO()+"&Active=End";
HttpStringThread htt = new HttpStringThread(strUrl,ti);
Thread th = new Thread(htt);
th.start();
}else{
ischeck = false;
alert = new Alert("提示:", "您输入的序列号或验证码有误", null,
AlertType.ERROR);
midlet.display.setCurrent(alert);
}
}
//返回
else if(cmd == Black){
midlet.display.setCurrent(midlet.mainList);
midlet.timer.cancel();
item = new ImageItem("",img11,ImageItem.LAYOUT_CENTER,"");
this.set(1,item);
}
}
//处理通信结果值
public void data(String result) {
if(result.equals("success")){
if(str.equals("开始")){
midlet.timer = new Timer();
midlet.timer.schedule(new VideoTimer(this,midlet), 0, 2000);
}
else if(str.equals("停止")){
item = new ImageItem("",img11,ImageItem.LAYOUT_CENTER,"");
this.set(1,item);
}
}
else if(result.equals("error")||result.equals("fail")||result.equals("CommunicationError")){
Alert failer = new Alert("提示:", "连接远程设备失败", null,
AlertType.ERROR);
midlet.display.setCurrent(failer);
item = new ImageItem("",img11,ImageItem.LAYOUT_CENTER,"");
this.set(1, item);
}
}
public void data(boolean result, String canvas) {
;
}
public void data(String result, String canvas) {
;
}
public void data(byte[] result) {
;
}
}

////////////////////////////////////////////////////////////////////
import java.util.TimerTask;

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.ImageItem;

import sun.HttpConnection.HttpImageThread;
import sun.HttpConnection.HttpStringThread;
import sun.HttpConnection.TaskInterface;
import sun.dao.Control;
/**
*
* @author Administrator
* @function 图像抓取显示结果处理
*/
public class VideoTimer extends TimerTask implements TaskInterface {
VideoCatchForm cc;
NormalMIDlet midlet;
int count=0;

public VideoTimer(){

}
public VideoTimer(VideoCatchForm cc,NormalMIDlet midlet){
this.cc=cc;
this.midlet = midlet;
}
//上传图片到网站
public void run() {
String resURL="wap2.a-ihome.com/VideoContent.aspx?TerminalNO="+Control.getTerminalNO()+"&AreaNO="+Control.getAreaNO();
HttpStringThread hst=new HttpStringThread(resURL,this);
Thread th=new Thread(hst);
th.start();
count++;
cc.count=count;
if(this.count>20){
midlet.timer.cancel();
ImageItem item = new ImageItem("",midlet.videocatch.img11,ImageItem.LAYOUT_CENTER,"");
cc.set(1,item);
midlet.display.setCurrent(cc);
}
}
public final Image scale (Image srcImage, int newW, int newH) {
int srcW = srcImage.getWidth();
int srcH = srcImage.getHeight();
//先做水平方向上的伸缩变换
Image tmp = Image.createImage(newW, srcH);
Graphics g = tmp.getGraphics();
for (int x = 0; x < newW; x++) {
g.setClip(x, 0, 1, srcH);
//按比例放缩
g.drawImage(srcImage,x-x*srcW/newW,0,Graphics.LEFT |Graphics.TOP);
}
//再做垂直方向上的伸缩变换
Image dst = Image.createImage(newW, newH);
g = dst.getGraphics();
for (int y = 0; y < newH; y++) {
g.setClip(0, y, newW, 1);
//按比例放缩
g.drawImage(tmp,0,y-y*srcH/newH,Graphics.LEFT | Graphics.TOP);
}
return dst;
}
public void data(String result) {
if(!result.equals("")){
String strUrl = "wap2.a-ihome.com/Image/"+ControlAurine.getAreaNO()+"-"+ControlAurine.getTerminalNO()+"-Video.jpg";
HttpImageThread htt = new HttpImageThread(strUrl,this);
Thread th = new Thread(htt);
th.start();
}
}
public void data(boolean result, String canvas) {
;
}
public void data(String result, String canvas) {
;
}
public void data(byte[] result) {
Image img=Image.createImage(result, 0, result.length);
ImageItem item = new ImageItem("",scale(img, 175, 150),ImageItem.LAYOUT_CENTER,"");
if(img==null){
;
}else{
cc.set(1,item);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: