nokia 6600 用http下载图片并在手机上面显示的问题,解决再给500分
这个类在nokia3650上面用没问题,但是在6600上就出错,http去打开的流,说可获得的字节是0
捕获的异常是symbian os err 晕了。那位大哥做过6600的网络下载来交流一下
下面是Canvas的类,url我没写出来,这是没错
import java.io.*;
import java.util.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import com.nokia.mid.ui.*;
public class MainCanvas extends FullCanvas implements Runnable{
boolean gameState;
Thread gameThread;
Image fire;
int totalDataLength;
int getLength;
public MainCanvas(){
gameState=true;
fire=getPic();
gameThread=new Thread(this);
gameThread.start();
}
public void clear(Graphics g){
g.setColor(0,0,0);
g.fillRect(0,0,w,h);
}
public void paint(Graphics g){
clear(g);
g.drawImage(fire,0,0,0);
}
Image getPic() {
Image image=null;
HttpConnection con=null;
InputStream ins=null;
try{
con=(HttpConnection) Connector.open("url", Connector.READ,true);
con.setRequestMethod(HttpConnection.GET);
ins=con.openInputStream();
totalDataLength=(int)(con.getLength());
int data=0;
byte[] imageData=new byte[totalDataLength];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while (((data = ins.read()) != -1) ){
baos.write(data);
}
imageData=baos.toByteArray();
getLength=imageData.length;
baos.close();
image=Image.createImage(imageData,0,imageData.length);
if(ins!=null){
ins.close();
}
if (con!=null){
con.close();
}
}catch(IOException e){
System.out.println(e.getMessage());
}
finally{
try{
if(ins!=null){
ins.close();
}
if (con!=null){
con.close();
}
}catch(Exception ex){
}
}
return image;
}
public void run(){
while(gameState){
try{
Thread.sleep(10);
}catch(Exception e){
System.out.println(""+e);
}
repaint();
System.gc();
}
}
public void showNotify(){
gameState=true;
}
public void hideNotify(){
gameState=false;
}
}