10 Şubat 2012 Cuma

Samsung Galaxy S WiFi 5.0 kamerası ile çekilmiş fotoğraflar

Bir Samsung Galaxy S WiFi 5.0 incelemesi hazırlıyorum. Galaxy S WiFi 5.0, telefon özelliği olmayan 5 inç ekranlı küçük bir Android tablet/medya oynatıcı. Kamerası da 3 MP. Evet, düşük bir rakam ama, oldukça net fotoğraflar çekiyor. İncelemeden önce cihaz ile çekilmiş birkaç fotoğrafı sizlerle paylaşmak istedim.

Samsung Galaxy S WiFi 5.0

Fotoğrafların üzerine tıklayarak büyük hallerini görebilirsiniz.








Android Programlama X - Shared Preference ile Ayar Kaydetmek

Herkese merhaba.

Bu yazımda sizlere Shared Preference'ın ne olduğundan ve bunu kullanarak uygulamanızdaki bazı verileri nasıl saklayabileceğinizden bahsetmeye çalışacağım.

Shared Preference ile uygulamanızdan veriler kaydedebilir, bunları daha sonra okuyabilirsiniz. Bu veriler cihazın hafızasında xml türünde saklanacaktır. O nedenle uygulamayı kapatsanız da kaydettiğiniz veriler saklanacaktır. Veriler sistemde /data/data/<uygulamanızınpaketadı>/shared_preferences/ gibi bir dizinde tutuluyor.

Bundan faydalanarak uygulamanızın ayarlarını saklayabilirsiniz. Bu yazıda buna küçük bir örnek yapıp Shared Preference'ın çalışma mantığını anlamaya çalışacağız.

İşe SharedPreferenceOgreniyorum isminde bir proje oluşturarak başlayalım.

Ana layout dosyasının içini boşalttım ve başlıyorum.
Aşağıda gördüğünüz gibi bir tane CheckBox, bir tane SeekBar, bir tane EditText ve iki tane Button nesnesi ekleyelim.
Şimdi xml görünümüne geçip düğmelerin ikisine de android:layout_weight="1" özelliğini ekleyelim.
Tasarım kısmına geçtiğimizde düğmelerin eşit ağırlıklarla genişletildiğini göreceksiniz.

android:layout_weight özelliği sayesinde düğmelerin ikisi de 1'er birim alan kapalayacak şekilde içinde bulundukları layout'a dağıtıldılar. Dikkat ederseniz düğmeleri orientation özelliği horizontal yani yatay olan bir linear layout kaplıyor.
Şimdi kullanacağımız nesnelerin id, text ve gerekli diğer özelliklerini ayarlayalım.

Ben "CheckBox nesnesi varsayılan olarak işaretli olsun." diye bir karar alarak, android:checked="true" diye bir özellik ekledim mesela.
Daha sonra düğmelere de tıklama metodlarını ekleyelim.
Şimdi işin java kısmına geçelim.

Gördüğünüz gibi gerekli nesneleri tanımlıyoruz.
Düğmeler için gerekli tıklama metodlarını oluşturuyoruz.
Şimdi Shared Preference kullanırken ihtiyacımız olacak etiketler için bir sınıf oluşturalım. Buna neden ihtiyacımız var? Projeniz büyüdükçe kullanacağınız etiketlerin, tanımlayacağınız sabitlerin sayısı artacaktır. Bunlar aynı sınıf ve/veya paket içinde kullanılmak zorunda da olmayabilirler. O nedenle bu tür etiketleri ve sabitleri tanımlayacak yeni bir sınıf oluşturmakta fayda var.
Bu sınıfın ekleneceği paketin adını da com.androidce.sharedpreferenceogreniyorum.sabitler şeklinde yazdım ben. Böylece eğer ayrı bir paketten erişme ihtiyacı duyarsam bile bu paket ismini ekleyip istediğim etiket ve sabitlere erişebileceğim.
İçine String türünden etiket olarak kullanacağımız sabit değerler tanımlıyoruz.
Şimdi ana dosyamıza geri dönelim.

Gördüğünüz gibi sabitlere erişebilmek için sabitlerin olduğu paketi import komutuyla ekledik.

Ayrıca bir tane SharedPreference nesnesi tanımladık.
Bu tanımladığımız SharedPreference nesnesine onCreate metodu içinde ilk değerini veriyoruz.

Daha sonra bizim bu eklediğimiz nesnelerin durumlarını kaydetmemize yarayacak ayarla isminde bir metod tanımlıyoruz. Sırasıyla boolean, int ve String türünde parametreler alıyor çünkü CheckBox'ın işaretli olup olmadığı bir boolean, SeekBar'ın o anki konumu bir int ve EditText'in içinde yazan yazı bir String olarak saklanıyor. Biz bu 3 nesneye ait bilgileri parametre olarak bu metoda vereceğiz, o da bunları SharedPreference sayesinde kaydedecek.

Peki bunu nasıl yapıyor? İlk önce SharedPreference.Editor türünde bir nesne oluşturuyoruz ve daha önce oluşturduğumuz SharedPreference nesnesinin edit metoduyla bu yeni oluşturduğumuz nesneye ilk değerini veriyoruz.

Daha sonra (Intent ile etkinlikler arası veri aktarma mantığının aynısı), put metodlarıyla bir etiket ve değer kullanarak ayarlarımızı ekliyor/yazıyoruz.

İşimiz bittiğindeyse commit metoduyla ayarlarımızı kaydediyoruz.

ayarla metodumuz hazır olduğuna göre düğmelerin tıklama metodlarının içini doldurabiliriz artık.

Kaydet düğmesine tıklandığında sırasıyla CheckBox, SeekBar ve EditText nesnelerinin o anki özellikleri alınıp, bizim yazdığımız ayarla metodu çağrılıyor.

Sıfırla düğmesine tıklandığında ise önce bu nesnelerin özelliklerini, daha sonra da SharedPreference ile kaydedilen ayarları sıfırlıyoruz.
Ayarları kaydettik ama uygulamanın bu ayarları okuması da gerekecek. O yüzden ayarOku isimli bir metod daha yazıyoruz ve içini aşağıdaki gibi dolduruyoruz.

Gördüğünüz gibi kaydederken kullandığımız etiketleri kullanarak ayarları önce okuyor, sonra da etkinlikteki nesnelerin özelliklerini bu okuduğumuz ayarlara göre değiştiriyoruz.

Burada get metodlarının ikinci parametreleri varsayılan değerlerdir (yani SECIMKUTUSU etiketi için varsayılan olarak true değeri, yukarıda öyle karar vermiştik).

Ayrıca uygulama ilk açıldığında ayarları okuyup en son kaldığımız yerden devam etsin diye bu etkinliğin onCreate metodunun içine ayarOku metodunu çağıran bir satır da ekliyoruz.
Şimdi düğmelere tıklandığında bilgi almak için Toast ekleyelim iki düğmeye de.
Aşağıda strings.xml dosyasının son halini görüyorsunuz.
Şimdi uygulamamızı çalıştırıp sonuçları görebiliriz.
Gördüğünüz gibi Kaydet düğmesine tıkladığımızda uygulama ayarları kaydedip bize Toast ile bilgi veriyor.
Şimdi ayarlar gerçekten kaydedilmiş mi görmek için uygulamadan çıkıp, uygulama listesinden uygulamamızı bulalım ve tekrar çalıştıralım.
Uygulamanın en son bıraktığınız ayarlarla geri gelmiş olması gerekli.

Son olarak Sıfırla düğmesini de deneyelim.
Gördüğünüz gibi ayarlar sıfırlandı ve bilgi verildi.

Evet, bugünkü yazım bu kadar arkadaşlar. SharedPreference'ın ne olduğunu ve nasıl kullanıldığını görmüş olduk. Ayrıca layout_weight özelliğinden biraz bahsettik. SharedPreferece Bu tür ayar kaydetme işlemlerinde gerçekten işinize yarabilecek bir özellik.

Bu yazıda yazdığımız uygulamayı buradan indirebilirsiniz.

İnşallah anlaşılır olmuştur.

Kolay gelsin, iyi çalışmalar. :)

Android Programlama IX - Resme Tıklama ve Internet Sayfası Açma

Bugünkü uygulamamızda Intent yardımıyla yeni aktivitede Internet sayfası
açmayı öğreneceğiz.Ayrıca atarlı  butonlar tıklanılmaktan rahatsız olduğunu bildirdiği için bir de resme tıklamayla olay yaratmayı deneyeceğiz.

Hadi bakalım, InternetSayfasiAcma adlı projemizi oluşturalım.

Resim dosyamızı drawable klasörlerinin her birine sürükleyip atalım.Burada hd(high definition)-yüksek çözünürlük,md(medium definition)-orta kalite çözünürlük,ld(low definition)-düşük çözünürlük olarak geçmektedir.Android cihazların çözünürlükleri birbirinden farklı olduğu için biz üç drawable dosyasının içine de resmimizi atalım.Daha sonra main.xml'i açıp, graphical-layout'un Palette menüsünde  Images&View içinden ImageView'ı sürükleyip boş tasarımımıza bırakalım ve gelen pencerede resim dosyamızın ismini seçelim.






Şimdi main.xml'e geçelim ve ImageView içine android: onClick="resimTikla" kodunu aşağıdaki gibi ekleyelim.Böylece resme tıklanıldığında "resimTikla" adlı metodun çalıştırılacağını garanti ediyoruz.Bu metodu da InternetSayfasıAcmaActivity.java sınıfında tanımlayacağız.









InternetSayfasıAcmaActivity.java sınıfımızı açalım ve eklediğimiz resmi kodumuzda tanımlayalım.Daha sonra da resimTikla metodumuzu oluşturalım ama içini şimdilik boş bırakalım:




Metodumuzun içini boş bıraktık çünkü Intent yardımıyla yeni bir aktiviteye yönlendirmek için öncelikle yeni bir aktivite sınıfı ve tasarımı oluşturmalıyız.Paketimizin altındaki InternetSayfasıAcmaActivity.java 'yı sürükleyip tekrar paketin içine atın ve gelen pencerede yeni aktivitemizin adını InternetSayfasi olarak yazın.





Aynı şekilde main.xml dosyasını sürükleyip, layout dosyasının içine atıp gelen pencerede yeni tasarımımızın adını internet.xml olarak değiştirin. Eğer xml uzantısını unutursanız,program xml olarak algılanmaz ve istemediğimiz bir dosya oluşur.Bunu silmek içinde projenin dosyasını bulup res>>>layout>>istenmeyen dosya'yı bularak siliniz.


Oluşturduğumuz internet.xml, main.xml'in bir kopyası olduğundan içindeki imageView'ı kaldırıp,Composite'ten bir tane WebView sürükleyip tasarıma bırakalım.


Graphical-layout'tan çıkıp internet.xml'e gelirsek,kodumuz şu şekilde olmalı:


Şimdi InternetSayfasi adlı yeni aktivite sınıfımıza gelip,InternetSayfasiAcmaActivity sınıfından gelen kodları temizleyip, setContentView(R.layout.internet) yaparak bu aktivitemizin tasarımını seçelim.


Şimdi de internet.xml'de oluşturduğumuz Webview'ı kodumuzda tanımlayalım ve açılmasını istediğimiz internet sayfasının adresini webView1 ile çağırdığımız loadUrl() metoduna parametre olarak yazalım.



Şimdi, InternetSayfasiAcmaActivity sınıfımıza geri dönüp boş bıraktığımız resimTikla(View v) metodunu yeni aktivitemizi açmaya yarayan Intent yardımıyla doldurabiliriz:



Evet aktivitelerimiz ve tasarımlarımız hazır.Geriye yeni aktivitemizi Manifest'e tanıtma ve Manifest abimizden internet izni alma kaldı.Yeni aktivitemizi aşağıdaki kodu manifeste ekleyerek tanıtalım:



Şimdi Permissions'a gelerek Add'e tıklayalım ve Uses Permission'ı seçelim:





Name kısmına android.permission.INTERNET yazalım.Yazdıktan sonra insanın tıklayası geliyor bir yerlere ama yazdıysak iznimizi aldık artık. AndroidManifest.xml'e gelip,görebilirsiniz:



Evet her şeyimiz tamam artık uygulamamızı çalıştırabiliriz.

Uygulamadan Görüntüler


Tıktan Önce:






Tıktan Sonra:


Gördüğünüz üzere loadUrl'de blogun adresini yazdığımız için,blogumuz internet sayfası olarak açıldı.



Uygulamanın kodunu buradan indirebilirsiniz.

Kelime Avı şimdi Android'de ve Türkçe!


Kelime oyunu severler için güzel bir oyun . Parmağınızı harflerin üzerinde sağa, sola veya çapraz olarak sürükleyerek kelime oluşturun, en çok puanı yapın, sıralamada yükselin.
Her android telefon ve tablete uygun olarak yapılmıştır. Bu oyun için internet bağlantısı gerekli. Oyunda kullanıcı adına sahip oluyorsunuz, diğer oynayanlar ile yarışıyorsunuz. Her oyundan sonra sıralamanız ekrana geliyor. İsterseniz kullanıcı adını değiştirmeni mümkün. Oyunu cihazınıza yüklemek için 1.6 ve üzeri Android sürümü olması gerekiyor.

Kelime Avı oyunu Kelime Bul Android Market'ten indirip, oynayabilirsiniz.

Android Market Bağlantısı