Android | Veritabanı işlemleri - 1

Written by Super User. Posted in Android Anlatımlar

Android veritabanı işlemleri başlıklı makaleler dizisi ile, herhangi bir Android uygulamamızda Android'in desteklediği SQLite yardımıyla bir veritabanı oluşturma ve bu veritabanı ile ilgili işlemlerden bahsedeceğim. Biraz ayrıntılı bir konu olması nedeniyle bir kaç başlık altında incelemeyi uygun gördüm.

Öncelikle bir kaç SQLite kodunu inceleyelim;

Veritabanımızı oluşturmak için kullanabileceğimiz kod ile başlayalım;

create table getitandroid (

_id integer primary key autoincrement,

ad text,

soyad text

);

Bu kod parçamızla 3 sütuna sahip bir tablo oluşturuyoruz. Bunlar _id, ad ve soyad. _id değerimizi primary key olarak tanımladık ve otomatik artacağını belirttik.

Tablomuza insert işlemini gerçekleştirmek için kullanabileceğimiz kod parçasını inceleyelim şimdi;

insert into getitandroid values(null, "Göksel", "Güren");

ilk değerimizi null olarak verdik çünkü, _id sütunumuzun satır değerleri için otomatik artım yapılacağını belirtmiştik. Bu kod parçası da tablomuza Göksel adı ve Güren soyadı ile bir kayıt ekleyecektir.

Bir de veritabanımızdan sorgulama yapmak için kullanabileceğimiz örnek bir SQL kodunu inceleyelim;

select * from getitandroid where(_id=1);

Android | Transactionları kullanma

Written by Super User. Posted in Android Anlatımlar

Veritabanlarıyla haşır neşir olanlarımıza Transaction kavramı tanıdık gelecektir. Bu kavramı ekşisözlük'teki güzel anlatan şu entry ile hatırlayalım. Bizde Android'de yapmak istediğimiz veritabanı işlemlerinde, ard arda yapacağımız veritabanı işlemlerinin birtanesinde hata olduğunda veritabanı bütünlüğünün ve tutarlılığının korunması için sorunsuz işlemlerin de geri alınmasını isteyebiliriz. Yani tüm işlemler sorunsuz gerçekleşebilecekse, hepsini uygula, herhangi birisinde sorun çıkacaksa hiç birisini uygulama mantığı. Bu kavramın Android veritabanı işlemlerinde uygulanmasını bir kod parçası üzerinden inceleyelim;

//Transaction'ımızı başlatıyoruz.

database.beginTransaction();
try{
ContentValues values = new ContentValues();
values.put(FATURA_TARIH, fatura_tarih);
values.put(TUTAR,d );
values.put(KART_ID, kart_id);      
values.put(FMAGAZA_ID, magaza_id);

//1. veritabanı işlemimiz
database.insertOrThrow(FATURA, null, values);
ContentValues values2 = new ContentValues();
values2.put(BARKOD_NO, barkod_no);
values2.put(ADET, adet ); 
values2.put(FFATURA_ID, max_id+1 );

//2. veritabanı işlemimiz
database.insertOrThrow(FATURA_ICERIK, null, values2);

//Veritabanı işlemlerimiz sorunsuzsa, işlemleri gerçekleştiriyoruz.
database.setTransactionSuccessful();

//Transaction'ımızı bitiriyoruz.
database.endTransaction();


}catch(Exception e){

//Veritabanı işlemlerimizde sorun çıkarsa, transaction'ı bitirip exception fırlatıyoruz.
database.endTransaction();
throw e;

}

Android | Intentlerle ZXing/Barcode Scanner kullanma

Written by Super User. Posted in Android Anlatımlar

Önceki makalelerimizden birisi olan Android | ZXing Kütüphanesini Android Uygulamasına Entegre Etme makalesinde uygulamamızda Barcode Scanner kullanabilmek için ZXing kütüphanesini uygulamamıza nasıl dahil edebileceğimizden bahsetmiştim.

Genel olarak uygulamamızda Barcode Scanner kullanabilmemizin 2 temel yöntemi mevcut. Bunlardan birtanesi yukarıda linkini verdiğim makalede bahsettiğim, kütüphaneyi direk kullanmak, bir diğeri ise bize sunulan bir kaç sınıf yardımıyla uygulamamızda Barkod Scanner uygulamasına erişip, ondan gelen veriyi işlemek. İlk yöntem biraz daha uğraşlı ve karmaşık bir iş tabi ki, bu makalemde bahsedeceğim yöntem ise, daha basit ve anlaşılır bir işlem. Tek yapmamız gereken, kullanıcıya Barcode Scanner uygulamasını kurması için bir zorlama yapmak oluyor. Barcode Scanner uygulaması bizim istediğimiz işlevi yerine getiriyor ve bize istediğimiz veriyi gönderiyor, bu sayede dönen veriyi işleyebiliyoruz.

Intentler yardımıyla Barcode Scanner'ı uygulamamızla haberleştirip, dönen veriyi işleyebilmemiz için 2 tane sınıfa ihtiyacımız var. Bu sınıflardan bir tanesiIntentIntegrator.java bir diğeri ise IntentResult.java. Bu sınıflara link 'ten erişip indirebilirsiniz.

IntentIntegrator.java sınıfını incelediğinizde göreceksiniz ki, bu sınıf barkod tarama işlemini başlatmak, Barcode Scanner programı yoksa kullanıcıyı bunu kurmaya zorlamak, sonucu döndürmek gibi işlemlerin hepsini IntentResult sınıfıyla beraber hallediyor. Bu nedenle bizim yapmamız gereken sadece bu sınıfların fonksiyonlarını doğru yerlerde kullanabilmek.

Şimdi bu sınıfların kullanımını kodlarla inceleyelim;

Android | Emulatore kamera desteği eklemek

Written by Super User. Posted in Android Anlatımlar

Kamera desteğine ihtiyacımız olacak uygulamalar geliştirmek için, normal bir şekilde oluşturduğumuz sanal aygıtımız yani emulatorumuz büyük ihtimal ihtiyaçlarımızı karşılamayacaktır. Bu nedenle sanal aygıtımızı oluştururken kamera desteğini eklememiz gerekiyor. Bunu yapabilmek için öncelikle Eclipse'de Window-> Android SDK and AVD Manager sekmesine erişiyoruz. Sonrasında açılan ekranda yeni bir sanal aygıt oluşturmak için New diyoruz. Name, Target, SDCard-Size, Skinözelliklerini belirliyoruz. Sonrasında kalan yapmamız gereken tek şey, konu başlığımız kamera desteği eklemek oluyor. Bunu da Hardware altında New'e tıklıyoruz veProperty'den Camera Support'u seçip OK diyoruz. Hardware listemize Camera support ekleniyor, bunun value'sunuda Yes yaptığımız zaman Create AVD ile kamera destekli bir emulatorumuz oluşuyor.

Android | Eclipse ile emulatore dosya atma/dosya çekme/dosya silme

Written by Super User. Posted in Android Anlatımlar

Bu makalede Eclipse'te, AVD manager ile oluşturduğumuz sanal aygıt için;

  • Dosya atma
  • Dosya çekme
  • Dosya silme

işlemlerinden bahsedeceğim. Öncelikle Eclipse'ı açıp toolbarımızda bulunan Opens the Android SDK and AVD Manager iconuna tıklayarak(bkz Resim1) Manager'ımızı açıyoruz. Sonrasında oluşturmuş olduğumuz cihazımızı seçip Start buttonuna tıklayıp emulatörümüzü çalıştırıyoruz.(bkz Resim2)

Emulatörümüz çalıştıktan sonra, Yine aynı toolbarımızdaki perspectives bölümünden DDMS perspective'ı seçiyoruz. Bunu orada görebilmemiz için öncesinde, Window->Open Perspective->Other->DDMS'i seçip ekleyebiliriz. (bkz Resim3)

Sonrasında DDMS açıp, File Explorer'a tıklıyoruz ve emulatörümüzün dosya sistemini görüyoruz