İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Zafer Teker
tekzaf@yahoo.com

Server'daki bir image'ı download edip gösteren midlet

Bu örnekte http://www.bilmemne.com/images/test.png adresindeki bir image dosyası bir midlet ile download ediliyor ve gösteriliyor. Downloder düğmesine tıklandığında http://www.bilmemne.com/images/test.png adresine HTTPConnection kurulmakta ve alınan image bir canvas'ta gösterilmekte.

Örnekte üç class var. ImageDownloader class'ı midlettir. Midlet çalıştığında ilk önce

DownloaderForm form=new DownloaderForm(this);
Display.getDisplay(this).setCurrent(form);

şeklinde DownloaderForm form'unu gösterir.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 import javax.microedition.midlet.*;
  2 import javax.microedition.lcdui.*;
  3 public class ImageDownloader extends MIDlet{
  4     public void startApp(){
  5         DownloaderForm form=new DownloaderForm(this);
  6         Display.getDisplay(this).setCurrent(form);
  7     }   
  8     public void pauseApp(){}    
  9     public void destroyApp(boolean unconditional){}
 10     public void showImage(byte[] data){
 11         ImageCanvas canvas=new ImageCanvas(data);
 12         Display.getDisplay(this).setCurrent(canvas);
 13     }
 14 }

Bu formda sadece "Download" komutu var. Bu komut seçildiğinde HTTPConnection kurulmakta ve image bilgisi byte[] dizisi olarak alınmakta ve ImageDownloader midletinin showImage methodu çağrılarak image'ın gösterilmesi sağlanmaktadır.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 import javax.microedition.lcdui.*;
  2 import javax.microedition.io.*;
  3 import java.io.*;
  4 public class DownloaderForm extends Form implements CommandListener{
  5     private Command downloadCommand=new Command("Download",Command.SCREEN,1);
  6     private String imageURL="http://www.bilmemne.com:8080/images/test.png";
  7     private ImageDownloader downloder;
  8     public DownloaderForm(ImageDownloader downloder){
  9         super(null);
 10         this.downloder=downloder;
 11         addCommand(downloadCommand);
 12         setCommandListener(this);
 13     }   
 14     public void commandAction(Command command,Displayable displayable){
 15         if(command==downloadCommand){
 16             System.out.println("downloding...");
 17             try{
 18                 byte[] data=getImageData();
 19                 downloder.showImage(data);
 20             }catch(Exception e){
 21                 e.printStackTrace();
 22             }
 23         }
 24     }
 25     private byte[] getImageData() throws Exception{
 26         HttpConnection connecton=(HttpConnection)Connector.open(imageURL);
 27         InputStream is=connecton.openInputStream();
 28         DataInputStream din=new DataInputStream(is);
 29         int length=(int)connecton.getLength();
 30         byte[] data = new byte[length];        
 31         din.readFully( data );
 32         is.close();
 33         din.close();
 34         return data;
 35     }
 36 }

ImageDownloader class'ının showImage methodu byte[] dizisi olarak aldığı bilgiyi ImageCanvas class'ının kurucusuna verir. Bu class verilen bir image byte dizisini image'a çevirerek ekranda gösterir.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 import javax.microedition.lcdui.*;
  2 public class ImageCanvas extends Canvas{
  3     private Image image;
  4     public ImageCanvas(byte[] data){
  5         image=Image.createImage(data,0,data.length);
  6     }
  7     public void paint(Graphics g){
  8         g.drawImage(image,10,10,Graphics.TOP|Graphics.LEFT);
  9     }
 10 }

Bu örnek çok basit bir örnektir. Gereksiz hiç bir şey yapılmamıştır. Download düğmesine tıklandığında http://www.bilmemne.com/images/test.png image'ını alıp ekrana göstermekten başka hiç bir şey yapmaz. Tabiki bu örnek geliştirilebilir. Örneğin birden fazla image alınabilir. Bunun için bir jsp veya servlet kullanılabilir. Örnek bir proje olarak bir aile albümü yapılabilir. Sitede duran resimlerin isimleri gelir. Görmek istediğiniz resmi seçince gidip server'dan resim getirlir. Hatta gelen resmi kaydetme özelliği olabilir.

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır