Android Anlatımlar

Android Programlama

Bu bölümde Android çatısında programlama yaparken ihtiyacınız olabilecek bazı önemli konular hakkında anlatımlar bulabileceksiniz.

İncele

Android Problemler

Android Problemleri

Bu bölümde Android çatısında programlama yaparken karşılaşabileceğiniz sorunlardan bazılarına cevaplar bulabileceksiniz.

İNCELE

Android Yardımcı Kodlar

Android Programlama Yardımcı Kodlar

Bu bölümde Android çatısında programlama yaparken ihtiyacınız olabilecek küçük kod parçalarını bulabileceksiniz.

İNCELE

Android | Veritabanı işlemleri - 1

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 | Cihazın ekran yönünü belirleme

Bazı durumlarda Android barındıran cihazımızın ekran yönünü belirlememiz gerekebilir. En basitinden, bir oyun olduğunu düşünün, oyunda ekranın yatık olduğu yöne göre karakterimiz o yöne doğru hareket etmeye başlasın. İşte bu gibi durumlarda ekran yönünü nasıl belirleyebileceğimizi kod üzerinden göstereceğim.

Kullanacağımız method getRotation methodu. Bu methodumuz 2.2 sürümü için geçerli. Daha eski sürümlerde getOrientation methodunu kullanmalıyız. Bu method'un işlevine gelince, documentation'dan bakalım.

getRotation methodu;

Returns the rotation of the screen from its "natural" orientation. The returned value may be Surface.ROTATION_0 (no rotation), Surface.ROTATION_90, Surface.ROTATION_180, or Surface.ROTATION_270. For example, if a device has a naturally tall screen, and the user has turned it on its side to go into a landscape orientation, the value returned here may be either Surface.ROTATION_90 or Surface.ROTATION_270 depending on the direction it was turned. The angle is the rotation of the drawn graphics on the screen, which is the opposite direction of the physical rotation of the device. For example, if the device is rotated 90 degrees counter-clockwise, to compensate rendering will be rotated by 90 degrees clockwise and thus the returned value here will be Surface.ROTATION_90.

Kod parçamıza gelelim;

Android | Transactionları kullanma

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

Ö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

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.

Sosyal Profiller

Chart