import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.ContentConnection;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
// 第六章 开发无线网络应用程序
//Generic Connection Framework --通用连接框架
//GCF的特性:
// 基于接口设计,便于扩展,提供了创建连接的工厂方法 ,使用标准的url
// 各接口的作用:HttpConnection HttpsConnection 接口,使得MIDlet 具备了通过Http 或者Https 协议与server 通信的能力;
// 可选:SocketConnection / ServerSocketConnection、UDPDatagramConnection , 使得MIDlet 能够在TCP/IP 层通过Socket进行通信或者
// 使用数据报进行通信
// 现实世界使用的是:分组数据交换和电路交换 , 因此在联网框架中定义了 :DatagramConnection 和 StreamCononection;
// 在基于流的传输中我们要对输入流和输出流是具有操作能力的;StreamConnection 扩展了InputConnection 和OutputConnection; 打开:Con.opeanInputStream();
// SreamConnectionNotifier接口定义了连接监听器应该具备的能力;
public class SixSection_GCF extends MIDlet {
//准备需要使用到的数据类型
private ContentConnection connection = null;
private ByteArrayOutputStream baos = null; // 字节数据输出流
private Image image = null; //初始化图片
private byte[] imageData = null;
private DataInputStream dis = null; // 新建数据输出流
private Form form = new Form("下载图片");
private Display display ;
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stubs
}
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
display = Display.getDisplay(this);
getImage("http://localhost:8080/imageSite/mv.jpg");
form.append(image);
display.setCurrent(form);
}
//下载图片
public void getImage(String url){
try{
//建立Http连接
connection = (ContentConnection) Connector.open(url);
//新建输入输入流
dis = connection.openDataInputStream();
//获得Http连接的长度
int length =(int) connection.getLength();
if(length!=-1){
imageData = new byte[length];
//使用流读取 --输入,读 /输出,写
dis.readFully(imageData); // 读取到数据
}else{
baos = new ByteArrayOutputStream();
int ch = 0;
while((dis.read())!=-1){
baos.write(ch);
imageData = baos.toByteArray();
}
}
image = Image.createImage(imageData, 0, imageData.length);
}catch(Exception exs){
exs.printStackTrace();
}finally{
//资源回收
try{
if(connection!=null){connection.close();}
if(dis!=null){
dis.close();
}
if(baos!=null){
baos.close();
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
}
分享到:
相关推荐
j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api
J2ME----CSDN名士---陈跃峰老师讲课代码 J2ME----CSDN名士---陈跃峰老师讲课代码
J2ME---游戏共享(8个经典游戏例子)
midp-2_0-src-windows-i686.rarmidp-2_0-src-windows-i686.rarmidp-2_0-src-windows-i686.rarmidp-2_0-src-windows-i686.rarmidp-2_0-src-windows-i686.rar
第一章J2ME简介--j2me开发.ppt
简单的J2ME游戏--小蜜蜂 0{r8W x ] ^ o c3 这个小游戏 是大家用来学习J2ME游戏编程 的入门 教程,写的层次比较清晰还不错。
合金弹头框架代码,基于j2me,java,没有详细的代码,职工参考
J2ME入门-(6)CLDCAPI.doc J2ME入门 CLDC API doc
J2ME设计论文--手机游戏黑白棋 应用J2ME技术 让你放心使用
j2me 实现拍照,捕捉视频,Camera
j2me教程-1.体系介绍和环境配置.rar
第1章 走进J2ME移动开发世界 第2章 面向移动信息设备的 第3章 移动信息设备简表 第4章 搭建移动应用开发环境 第5章 MIDlet编程基础 第6章 MIDP 高级界面编程 第7章 低级用户界面编程
只要是用户判断影响和敌人,以及英雄和地图之间的关系
安卓手机上的j2me模拟器 可导入本地jar文件 可模拟Java手机(比如塞班)用的软件 可以体验以前的手机操作
在大学时,典型的j2me编程例子。 股票基金显示系统:在列表中选择封闭基金选项,然后单击提交键,则滚动条显示封闭基金的名称,当前价格;选中开放基金则。。。 压缩件里的两个文档的程序都是正确的。。
使用j2me 黑白棋 五子棋 开发 欢迎大家下载 ,嘿嘿
[J2ME编程].(Manning).J2ME.-.Java.in.small.things.(2002)
J2ME的MIDP在javax.microedition.io程序包中提供了一整套类,统称为通用连接构架(Generic Connection Framework ,GCF)。GCF使得与其它设备的可编程传输(programmatically transferring)数据变得非常容易。
手机开发用到的几个.dll文件
对于一个J2me高手来说,该API是非常必须的,能够解决手机游戏开发不少的问题。