Eyl
04İlk Android uygulamam
Etiketlenen : android, android market, döviz, eclipse, java, uygulama
Android konusunda sadece kullanıcı değil de biraz da geliştiren tarafında yer almanın vakti geldi geçiyor. Uzun zamandır planladığım ama vakit bulamadığım ilk Android uygulama deneyimimle ilgili bloguma birşeyler yazmazsam olmaz. :) Ben elimdeki kaynaklar ve kolay bir uygulama olması için Döviz Kurları adıyla (her ne kadar Android Market’in sayısı bir elin parmaklarını geçmeyen Türkçe uygulamaları içinde bir kaç alternatif döviz uygulaması olsa da) bir uygulama geliştirmeye karar verdim. Bana ait olan http://www.doviz.gen.tr sitesine JSON olarak veri üreten bir dosya yaparak işe başladım. Amacım o JSON dosyasını çağırıp elde edeceğim verileri uygulamamda uygun kısımlara yazdırmaktı. Android ile ilgili herhangi bir kod yazmadığım gibi hiçbir java deneyimi olmayan benim bir kaç saatte yaptıklarımı http://www.doviz.gen.tr/doviz_android_1.0.4.rar adresinden indirebilirsiniz.
Uygulamayı Eclipse üzerinde hazırlıyorum. Vakit buldukça burada Eclipse, Android SDK, uygulamayı Android Market için hazır etmeyi açıklayan makalelerim olacak. Java konusunda bilgi sahibi arkadaşların Android platformuyla ilgili çaba göstermesi dileğiyle.
1.0.5 sürüm çalışmalarım:
package com.ersinkoc.doviz;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.json.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class DovizKurlari extends Activity {
WebView webview;
/*
*
* Version kontrolü için json istek adresinin sonuna ?version=1.0.3 ekledim
*
*/
public static final String DOVIZURL = "http://www.doviz.gen.tr/doviz_json.asp?version=1.0.5";
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
// layout getirme
setContentView(R.layout.main);
// girer girmez veri güncellemesi
veriGuncelle();
// Güncelle butonuna tıklandığını dinletiyorum
final Button guncelTut = (Button) findViewById(R.id.guncelle);
guncelTut.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
veriGuncelle();
}
});
// Çıkış butonuna tıklandığını dinletiyorum
final Button cikisYap = (Button) findViewById(R.id.cikis);
cikisYap.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
DovizKurlari.this.finish();
}
});
// Site butonuna tıklandığını dinletiyorum
final Button siteGosterme = (Button) findViewById(R.id.siteGoster);
siteGosterme.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
siteGoster();
}
});
}
// menü oluştur
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
// menüde basılan seçeneklere göre işlemler
public boolean onOptionsItemSelected (MenuItem item){
switch (item.getItemId()){
case R.id.geriDon:
setContentView(R.layout.main);
veriGuncelle();
return true;
case R.id.menuCikis:
DovizKurlari.this.finish();
return true;
}
return false;
}
// mobile site olayı (site yok henüz)
public void siteGoster(){
webview = new WebView(this);
setContentView(webview);
WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
webview.loadUrl("http://www.doviz.gen.tr/?mobile=1");
}
public void veriGuncelle(){
// layout üzerinde işlem yapacağım bileşenleri tanımlama
EditText dolarText = (EditText) findViewById(R.id.dolarKuru);
EditText euroText = (EditText) findViewById(R.id.euroKuru);
EditText dolar2Text = (EditText) findViewById(R.id.dolarKuru2);
EditText euro2Text = (EditText) findViewById(R.id.euroKuru2);
TextView guncellemeZamani = (TextView) findViewById(R.id.sonGuncelleme);
TextView sonKayitText = (TextView) findViewById(R.id.sonKayit);
// güncelleme anında her bölüme ... koydurmaca
dolarText.setText("...");
euroText.setText("...");
dolar2Text.setText("...");
euro2Text.setText("...");
sonKayitText.setText("...");
// Bir web isteği oluşturma
HttpClient webIstemci = new DefaultHttpClient();
HttpGet webGetir = new HttpGet(DOVIZURL);
HttpResponse gelenCevap;
try {
gelenCevap = webIstemci.execute(webGetir);
HttpEntity birim = gelenCevap.getEntity();
if (birim != null) {
InputStream gelenVeri = birim.getContent();
String sonuc = convertStreamToString(gelenVeri);
JSONObject jsonVeri=new JSONObject(sonuc);
/*
* Eski sürüme örnek veri:
* {"dolar":"1.4970","euro":"1.9290","dolar2":"1.4980","euro2":"1.9300","ddolar":"1.5000","deuro":"1.9290","ddolar2":"1.5010","deuro2":"1.9300","sonkayit":"Kur G\u00FCncelli\u011Fi : 4 Eyl\u00FCl 2010 Cumartesi , 11:30","guncelleme":"04.09.2010 12:20:58 itibariyle g\u00FCncellendi! Kulland\u0131\u011F\u0131n\u0131z yaz\u0131l\u0131m\u0131n daha g\u00FCncel s\u00FCr\u00FCm\u00FC bulunmu\u015Ftur. Yeni s\u00FCr\u00FCm numaras\u0131 1.0.3"}
*
* Düzgün sürümle alınan veri:
* {"dolar":"1.4970","euro":"1.9290","dolar2":"1.4980","euro2":"1.9300","ddolar":"1.5000","deuro":"1.9290","ddolar2":"1.5010","deuro2":"1.9300","sonkayit":"Kur G\u00FCncelli\u011Fi : 4 Eyl\u00FCl 2010 Cumartesi , 11:30","guncelleme":"04.09.2010 12:21:21 itibariyle g\u00FCncellendi!"}
*
*/
// json verimizden isim isim veri toplamaca
String dolar = jsonVeri.getString("dolar");
String euro = jsonVeri.getString("euro");
String dolar2 = jsonVeri.getString("dolar2");
String euro2 = jsonVeri.getString("euro2");
String sonGuncellemeVakti = jsonVeri.getString("guncelleme");
String sonKayitTarihi = jsonVeri.getString("sonkayit");
// ekranda gerekli yerlere veriyi koymaca
dolarText.setText(dolar.toString());
euroText.setText(euro.toString());
dolar2Text.setText(dolar2.toString());
euro2Text.setText(euro2.toString());
sonKayitText.setText(sonKayitTarihi.toString());
guncellemeZamani.setText(sonGuncellemeVakti.toString());
gelenVeri.close();
}
}catch(Exception e){
// internet bağlantısı veya gelen veride hata olursa diye ekrana uyarı koydum
guncellemeZamani.setText("Güncelleme başarısız!\nInternet bağlantınızı kontrol edip, tekrar deneyiniz!");
Logger.getLogger(DovizKurlari.class.getName()).log(Level.SEVERE, null, e);
}
}
public String convertStreamToString(InputStream is) {
// gelen veriyi string yapıya çevirmece
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
} catch (IOException e) {
} finally {
try {
is.close();
} catch (IOException e) {
}
}
return sb.toString();
}
}
Uygulamayı şu an Android Market üzerinde “Döviz Kurları” yazarak bulabilir veya http://www.doviz.gen.tr/DovizKurlari.apk adresinden indirebilirsiniz.








