J2ME Notlarım

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

J2ME Notlarım

Mesaj gönderen Lost Soul »

Şu aralar bir proje için j2ME ile çalışmaya başladım. Yerli ve yabancı olarak kısıtlı kaynaklar var (yerli kaynaklar neredeyse yok gibi)
Ben de sitede katkı olması açısından J2ME ile ilgili çeşitli notcukları zaman zaman burada paylaşmaya karar verdim.

Konu içi başlıkları
  1. TStringList Örneği (fileconnection, dinamik dizi, IputStream, OutPutstrean)
  2. WordCount,ExtractWord
  3. İnternete Bağlanma (Soket Bağlantı)
  4. İnternetten dosya indirme


başlangıç olarak sistem saatini kendi formatımıza çevirmek veya yorumlamak için örnek kod yayınlıyorum

Normalde java.text kütüphanesinde dateformat deyimi bu işi hallediyor ancak
j2me kütüphanesinin tüm versiyonlarında olmayabiliyor
bu açığı kapatmak için aşağıdaki örnek kodu kendinize göre geliştirebilirsiniz.

Kod: Tümünü seç

import java.util.Calendar;
import java.util.Date;

Kod: Tümünü seç

	private String getDateString(long milis) {
	    Calendar calendar = Calendar.getInstance();
	    calendar.setTime(new Date(milis));

	    int year = calendar.get(Calendar.YEAR);
	    int month = calendar.get(Calendar.MONTH)+1;
	    int day = calendar.get(Calendar.DAY_OF_MONTH);
	    int hour = calendar.get(Calendar.HOUR_OF_DAY);
	    int minute = calendar.get(Calendar.MINUTE);
	    int second = calendar.get(Calendar.SECOND);
	    int msecond = calendar.get(Calendar.MILLISECOND);

	    return new String(day+"."+month+"."+year+" "+hour+":"+minute+":"+second+":"+msecond);
	}
Kullanımı

Kod: Tümünü seç

System.out.println( getDateString(System.currentTimeMillis()));
zamanım oldukça çeşitli örnekleri paylaşacağım inşallah.
En son Lost Soul tarafından 26 Kas 2010 03:56 tarihinde düzenlendi, toplamda 3 kere düzenlendi.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Re: J2ME Notlarım

Mesaj gönderen husonet »

s.a.

Hocam import ettiğin paketleride yazarsan daha güzel olur...

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: J2ME Notlarım

Mesaj gönderen Lost Soul »

husonet yazdı:s.a.

Hocam import ettiğin paketleride yazarsan daha güzel olur...

Kolay Gelsin...
a.s. haklısınız ekledim.


Bu da javada yazdığım Tstringlist nesnesi. JAvada yeni olduğum için belki bana normal gelip de aslında komik kodlar olabilir :)

Bu örnekte
InputStream,OutputStream kullanımı, FileConnection ile dosya işlemlerinden sadece dosya açma syazma silme
doğrudan ddinamik dizi olmamamasına rağmen alternatif yollardan dinamik dizi çalışması bulunmaktadır

Sonuç itibariyle delphideki gibi olmasa da bir TStringlist nesnesi ortaya çıkıyor.

Kod: Tümünü seç

package src;

import java.io.InputStream;
import java.io.OutputStream;

import javax.microedition.io.Connector;

import com.siemens.icm.io.file.FileConnection;



public class TStringList 
{
	private String[] fLines;
	public TStringList()
	{
		fLines = new String[0];
	}
	public void Clear()
	{
		String[] fTemp = new String[0];
		fLines = fTemp;		                            
	}
	public void Add(String Value)
	{
		int oldsize = fLines.length;
		String[] fTemp = new String[oldsize +1];
		System.arraycopy(fLines, 0, fTemp, 0, fLines.length);
		fLines = fTemp;
		fLines[fLines.length-1]=Value;
	}
	public int Count()
	{
		return fLines.length;
	}
	public String Lines(int Index)
	{
		if ((Index>=0) & (Index<this.Count()))
		{
			return fLines[Index];
		}
		else
		{
			return "".toString();
		}
				
	}
	public boolean LoadFromFile(String FileName)
	{
		try {	
			
			InputStream fOku;
			FileConnection aFile = (FileConnection) Connector.open(FileName);
			if (aFile.exists()) {
				
				fOku = aFile.openInputStream();
				byte ch[] = new byte[1024];

				int okunanb = fOku.read(ch, 0, 1024);
				int kelimeno = 1;
				Clear();
				String str = "";
				for (int i = 0; i <= okunanb; i++) 
				{
					if (ch[i] == '\r') {
						kelimeno++;
						Add(str);
						str = "";
					} else if (ch[i] == '\n') 
					{

					} else {
						str = str + (char) ch[i];
					}
				}
				if (str.length() > 0)
					Add(str);
				fOku.close();
				aFile.close();
				return true;
				
			} else 
			{
				aFile.close();
				return false;
			}
			
		} catch (Exception Exc) {
			
			return false;
		}
		
		
	}
		
	public boolean SaveToFile(String FileName)
	{
		try {	
			
			OutputStream fYaz;
			
			FileConnection aFile = (FileConnection) Connector.open(FileName);
			
			// Mevcut dosyayı sil
			
			if (aFile.exists()) aFile.delete();
			
			aFile.create();
				
			fYaz = aFile.openOutputStream();
			
			for (int i = 0; i<Count();i++)
			{
			
				fYaz.write(Lines(i).getBytes());
			
				fYaz.write('\r');
			
				fYaz.write('\n');
			
			}
			
			fYaz.close();
			
			aFile.close();
			
			return true;
		}
		catch  (Exception E)
		{
			//System.out.println(E.getClass()+":"+E.getMessage());
			return false;
		}


	}
		

}

Örnek kullanım

Kod: Tümünü seç

		TStringList aList =new TStringList();
		
		if (aList.LoadFromFile("file:///A:/Config.txt")) 		 
		{
			//for (int i = 0; i<aList.Count();i++) System.out.println(aList.Lines(i));
			if (aList.Count() >= 3) {
				this.destHost = aList.Lines(0);
				this.destPort = aList.Lines(1);
				this.connProfile = aList.Lines(2);
			}
...
...
...
yukarıdaki kullanımda (aList.LoadFromFile("file:///A:/Config.txt")) şeklinde kullanım cihazdan cihaza farklılık gösterebilir.
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: J2ME Notlarım

Mesaj gönderen Lost Soul »

WordCount, ExtractWord

Kod: Tümünü seç

	public int Pos(char chr, char[] chrarr)
	{
		int Result =-1;
		for (int i=0;i<chrarr.length;i++)
		{
			if (chr==chrarr[i])
			{
				Result =i;
				break;
			}
		}
		return Result; 
	}
	public int WordCount(String Text, char[] Delimiters)
	{
		int Result =0;
		char[] Delims;
		boolean inWord = false;
		if (Delimiters.length==0)
		{
			Delims = new char[] {' ','\r'};
		}
		else
		{
			Delims = Delimiters;
		}
		for (int i = 0;i<Text.length();i++)
		{
			if ( Pos( Text.charAt(i),Delims)>=0)
			{
				if (inWord) Result++;
				inWord=false;
			}
			else
			{
				inWord =true;				
			}
		}
		if (inWord) Result++;
		return 0;
		
	}
	public String ExtractWord(int N, String S, char[] Delimiters)
	{
		String Result ="";
		
	    int Count = 0;
	    int I = 0;
	    int J = 0;
	    int SLen = S.length()-1;
	    
	    while (I <= SLen) 
	    {
	    	while ((I <= SLen) & (Pos(S.charAt(I),Delimiters)>=0)) I++;
	    	
	    	if (I<=SLen) Count++;
	    	
	    	J=I;
	    	while ((J<=SLen) & (Pos(S.charAt(I),Delimiters)<0))	J++;
	    	
	    	if (Count==N)
	    	{
	    		if (J<SLen) J++; // Substring bitiş karakterini almadığı için 
	    		Result = S.substring(I, J);//substringde ilk index 0 dır
	    	
	    		break;
	    	}
	    	I=J;
	    	
	    }
		return Result;
	}
Örnek Kullanım

Kod: Tümünü seç

System.out.println(ExtractWord(2,"Deneme?cümleciği-buyrun?efem",{'?','-'}));
Sonuç

Kod: Tümünü seç

cümleciği
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

İnternete Bağlanma

Mesaj gönderen Lost Soul »

İnternete Bağlanma

Kod: Tümünü seç

import java.io.InputStream;
import java.io.OutputStream;
import javax.microedition.io.SocketConnection;

Kod: Tümünü seç

	private SocketConnection 	NetC;/*İnternet Bağlantısı*/ 
	private InputStream 		NetI;/*İnternet Bağlantısı: Gelen bilgi*/ 
	private OutputStream 		NetO;/*İnternet Bağlantısı: Giden Bilgi*/ 

Kod: Tümünü seç

	private String destHost =  "95.15.113.155";

	private String destPort = "13131";

	private String connProfile = "bearer_type=gprs;access_point=internet;";

Kod: Tümünü seç

	private boolean NeteBaglan() 
	{
		try {
				String openParm ="socket://" + destHost + ":"    + destPort + ";" + connProfile;
				NetC = (SocketConnection) Connector.open(openParm);
				NetI = NetC.openInputStream();
				NetO = NetC.openOutputStream();
                                return true; 

		} catch (Exception exc) {
			return false;
		}
	}
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

İnternetten dosya indirme

Mesaj gönderen Lost Soul »

İnternetten dosya indirme

Kod: Tümünü seç

package src;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

import com.siemens.icm.io.file.FileConnection;


    public int DownloadFile(String Url, String DFile)
    {
        int totalByte =0;
        HttpConnection hc;
        InputStream is;
        FileConnection fconn;
        OutputStream os ;
        final int bSize = 100;
        
        byte buff[]= new byte[bSize];
        int readBytes = 0;
        /* open HTTP Connection, open input stream for reading
         * "http://www.google.nl;bearer_type=gprs;access_point=internet" */
        try
        {
            hc = (HttpConnection)Connector.open(Url+";bearer_type=gprs;access_point=internet");
            
        }
        catch (IOException E)
        {
            return -1;
        }
        
        try
        {
            is = hc.openInputStream();
            
        }
        catch (IOException E)
        {
            return -2;
        }    
        /* open connector for writing data to SPI memory 
         * "file:///A:/Config.txt"*/
        try
        {
            fconn = (FileConnection)Connector.open("file:///"+DFile);
        }
        catch (IOException E)
        {
            return -3;
        }
        
        try
        {
            if (fconn.exists()) fconn.delete();
            fconn.create();
        }
        catch (IOException E)
        {
            return -4;
        }        
        try
        {
            os = fconn.openDataOutputStream();
        }
        catch (IOException E)
        {
            return -5;
        }
        
        try
        {
            /* get block wise data from file server, copy to SPI file */
            do {
                
                readBytes = is.read(buff, 0, bSize); // buff : databuffer, 0: the
                                                    // start offset in array buff,
                                                    // bSize maximum length
                
                if (readBytes >0)
                os.write(buff, 0, readBytes);
                
                if (readBytes>0)
                totalByte = totalByte + readBytes;
                
            } while (readBytes != -1);
            is.close();
            os.close();
            /* trigger software update */
        }
        catch (IOException E)
        {
            return totalByte;
        }        
        
        return totalByte;
        
        /* returns
         * -1 : HTTP Bağlantısı açılamadı;
         * -2 : Http Stream açılamadı
         * -3 : File Connection açılamadı
         * -4 : Mevcut dosya silnemedi
         * -5 : OutputStream açılamadı
         * + değer : indirilen byte sayısı
         */
        
    }
    
 

Kullanımı

Kod: Tümünü seç

     int i = DownloadFile("http://www.birsite.net/dosya.ext", "A:/Dosya.ext"); 
Cevapla