Android Programlama Ders 7:Splash Ekranı Oluşturmayı Bitiriyoruz
Splash Ekranı Oluşturmayı Bitiriyoruz
video için tıklayın
Bu dersimizde 6.derste başladığımız açılış ekranını(Splash Screen) tamamlıyoruz.Derste Thread kavramından bahsedilmiştir.
Thread yapısıyla ilgili genel bilgi:
Java programlama diline özgü yapılardan biri olan thread, birbirinden bağımsız çalışabilen komut setlerine verilen addır.Paralel birden çok akış olmasını sağlayan yapılardır.Bir programda aynı anda birden fazla thread kullanılabilir ve bu threadlerin birbirileriyle haberleşmesi ya da birbirini kontrol etmesi sağlanabilir.Processlere (Süreç) benzerler.
Gerçekte ise Java her bir threadin birbiriyle çalışmasını engellemeyecek şekilde, ihtiyaçları olan zamanı birbirilerine tanıyarak aynı CPU ünitesini ortaklaşa kullanabilmelerine olanak verir.Ortak kullanılan bi hafıza vardır.
İki şekilde kullanılır.Birincisi yazdığımız sınıfı java.lang.Thread sınıfından extends ederek türetebiliriz.İkincisi ise bazı durumlarda sınıfımızın başka bir sınıftan
türetilmesi zorunlu olabilir, bu gibi durumlarda Javada çoklu kalıtım olmadığı için java.lang.Runnable interfaceini implement ederek kullanırız.Üç önemli metodu vardır.
public **** start():Threadi çalıştırmaya hazırlar.
public **** run():Threadin yapacağı işleri yerine getirir.Doğrudan doğruya çağrılmaz.Start çağrılınca kendiliğinden aktif olur ve gerektikçe çağrılır.Runnable interfacesindede sadece run metodu vardır.Threadin runnable parametre alan bir constructorı (yapıcısı) vardır.Bu şekilde gerekli thread oluşturulur.
public final **** stop():Çağrılırsa thread durur.
Thread yapısı hakkındaki bilgiler Emrah KAHRAMAN den alıntıdır.
İzledikten sonra dersi farklı sitelerde ve sosyal ağlarda paylaşıp bize destek olmayı unutmayın.
720p(HD) olarak izlemeniz tavsiye edilir.
Android Programlama Ders 8:Uygulamamıza Opsiyon(Option) Menüsü Oluşturmak
video için tıklayın
Bu dersimizde uygulamanızda kullanıcılara yol göstermesi açısından mutlaka bulunması gereken Opsiyon(Option) menülerini uygulamamıza nasıl ekleriz bundan bahsedeceğiz.
Opsiyon(Option) menüleri ile ilgili genel bilgi:
Opsiyon(Option) menüleri yani diğer adıyla Hardware menüleri Android işletim sistemini kullanan cihazlarda bulunan menü tuşuna basıldığında ortaya çıkan ve uygulamanın ekranları arasında dolaşmaya yarayan ya da belli başlı komut dizilerini gerçekleştirmek için kullanılabilinecek menü sistemleridir.
Derste Kullanılan Kodlar
Menü Kodları:
XML Kodları:
Android Programlama Ders 9:ListView Kullanımı
video için tıklayın
Bu dersimizde Androidin en sık kullanılan Layout nesnelerinden olan ListViewlerden bahsedeceğiz.
ListView Nedir?
ListViewler verileri listelemek için kullanılan yapılardır.ListViewler sayesinde bir grup veriyi listeleyebilir ve kullanıcının seçtiği veriyle işlem yapabilirsiniz.
Örneğin;ListViewde listelediğiniz ürünlerinizin bilgilerinin üzerlerine tıklandığında görüntülenmesini sağlayabilirsiniz.
İzledikten sonra dersi farklı sitelerde ve sosyal ağlarda paylaşıp bize destek olmayı unutmayın.
720p(HD) olarak izlemeniz tavsiye edilir.
Android Programlama Ders 10:SQLite ile Veritabanı Oluşturma
video için tıklayın
Bu dersimizde Androidin desteklediği veritabanı sistemi olan açık kaynak kodlu Sqlitedan bahsedeceğiz ve ilk veritabanımızı oluşturacağız.
Sqlite Nedir?
SQLite, dünyada en çok dağıtılan ve tavsiye edilen kaynak kodları halka açık, tamamen C/C++ programlama dilleriyle geliştirilmiş sunucu yazılımı ve konfigurasyon gereksinimi olmayan, işlemsel ve ilişkisel bir SQL veritabanı motorudur.
SQLite, onlarca programlama dili içerisinde rahatlıkla kullanılabilir. Bunlardan bazıları: BASIC, C, D, C++, Common Lisp, Java, C#, Visual Basic, Delphi, Curl, Lua, Tcl, REBOL, R, PHP, ASP, Perl, Ruby, Objective-C, Python, newLisp, Haskell, OCaml, Smaltalk, Scheme.
İzledikten sonra dersi farklı sitelerde ve sosyal ağlarda paylaşıp bize destek olmayı unutmayın.
720p(HD) olarak izlemeniz tavsiye edilir.
Android Programlama Ders 11:SQLiteda Veritabanı İşlemleri(Veri Ekleme,Veri Listeleme,Cursor Kavramı)
video için tıklayın
Bu dersimizde bir önceki derste oluşturduğumuz veritabanımıza veri eklemeyi ve eklediğimiz verileri listelemeyi göreceğiz.
ekran3.java dosyası kaynak kodları(Bu kodları kendi java dosyanıza göre düzenleyin):
Android Programlama Ders 12:Bundlelar ile Activityler Arası Veri Alışverişi
video için tıklayın
Bu dersimizde iki Activity arasında veri alışverişi yapmak için kullanabileceğimiz Bundle kavramından bahsedeceğiz.
Dersimizde String bir veriyi putString komutu ile aktardık.Eğer başka tipte bir veri aktarmak isterseniz put(Değişkentipi) şeklinde fonksiyonu kullanabilirsiniz.Kullanabileceğiniz fonksiyonların listesini görmek için Bundle için belirlediğiniz değişkenden sonra bir . koymanız yeterli.Eclipse size kullanabileceğiniz argümanların bir listesini verecektir.
Android Programlama Ders 13:Xml Rss Reader Yapımı ve ASyncTask Örneği
videoyu izlemek için tıklayın
Bu ve takip eden 14 ve 15. derslerimizde Xml bir RSS kaynağından verileri okuyup uygulamamızdaki custom yani özelleştirilmiş ListViewimizde bu verileri listelemeyi öğreneceğiz.Listelediğimiz bu başlıklardan istediğimize tıkladığımızda uygulamamız ilgili adrese yönlenmiş olacak.
15. dersin açıklama kısmında projemizin bitmiş halini bulabileceksiniz.
Bilgilendirme olması amacıyla uygulamamızda kullandığımız AsyncTaskin ne olduğundan kısaca bahsedelim.
ASyncTask Nedir?
ASyncTask arkaplanda bir işlem yapılırken bu işlem başlamadan önce ve bittikten sonra yapmamız gereken komutları işletebilmemiz için oluşturulmuş bir class yapısıdır.
ASyncTask sayesinde uygulamamızda uzun sürecek herhangi bir işlem yapılırken kullancıyı yükleniyor şeklinde bilgilendirebilir aynı zamanda işlem bittikten hemen sonra yapılması gereken komutları sıralayabilirsiniz.
Bu dersimizde ASyncTaski veriler internetten alınırken yükleniyor dialogunu ekranda göstermek için kullandık.Aynı zamanda veritabanı işlemleri gibi uzun sürecek her türlü işlemde bu yapıyı kullanabilirsiniz.
Derste projeyle ilgili bahsetmediğimiz bir nokta var.Eğer internet üzerinden bir işlem yapacaksanız bunun için uygulamanızın Manifest dosyasına internet için gerekli izin satırını eklemelisiniz.
Satırını uygulamanızın manifest dosyasında <uses-sdk android:minSdkVersion=7″ /> satırından sonra ekleyin.Böylece uygulamanız internet erişimi için gerekli izinleri kullanıcıdan alabilecektir.
Android Programlama Ders 14:Custom ListView Yapımı ve RssReaderla Eşleştirilmesi
videoyu izlemek için tıklayın
Bu dersimizde 13.derste başladığımız RSS Reader uygulamamıza devam ediyoruz.Bu derste Custom ListView yapımına göz atacağız.
Custom ListView Nedir?
Android custom ListView oluşturmamıza imkan tanır.Bu sayede Androidin normal ListView görünümünü özelleştirip farklı listeleme tipleri oluşturabiliriz.Örneğin fotoğrafları ve yazıları yan yana ya da farklı şekillerde listeletebiliriz.ListViewi kendi renk seçeneklerimizle oluşturabiliriz.
Android Programlama Ders 15:RssReader Uygulamamızı Tamamlıyoruz
videoyu izlemek için tıklayın
Bu dersimizde 13. ve 14. derslerde devam ettirdiğimiz RssReader uygulamasını tamamlıyoruz.Aşağıdaki indir bağlantısı ile projenin tamamını indirip Eclipsede File > Import u seçtikten sonra General altında Existing Projects into Workspacei seçerek projeyi Eclipsee ekleyebilir ve test edebilirsiniz.
indir
Bu son bölümde listelenmiş yazıların WebView(WebGörünümü) üzerinde gösterilmesi konusunda bilgi verilmiştir.
Android Programlama Ders 16:Connectivity Manager ile Internet Bağlantısı Kontrolü
Video ders hazırlamada yaşadığımız bazı sıkıntılardan dolayı kompleks olmayan dersleri yazılı olarak hazırlamaya karar verdik.Artık takip eden derslerimizin bir kısmı yazılı şekilde yer alacak.
Bu dersimizde internet bağlantısına ihtiyaç duyan uygulamaların ihtiyacı olan bir kontrol mekanizması hazırlayacağız.
Eğer uygulamanız internete bağlanarak bazı işlemler gerçekleştiriyorsa internet bağlantısı bulunmayan kullanıcılar uygulamayı açtığında ilginç durumlarla karşılaşabilir.Normalde hiç hata bulunmayan uygulamanız hatalıymış gibi görünebilir.Böyle bir durumda internet bağlantısına ihtiyaç duyulduğunu fark etmeyen kullanıcılar uygulamanızı kaldıracak ve market üzerinde düşük puanla değerlendireceklerdir.Bu da uygulamanızın diğer kullanıcılar tarafından indirilmesini engelleyebilir.
Bu nedenle uygulamamıza bir kontrol mekanizması koymakta fayda var.Bu mekanizmayı istediğiniz yere yerleştirebilirsiniz ancak benim burada yapacağım şey uygulama açılırken bu durumu kontrol etmek olacak.İnternet bağlantısı var ise uygulama çalışacak yok ise kullanıcıya durum bildirilip uygulama kapanacak.
Öncelikle yeni bir Activity oluşturup bu Activityi uygulamanızın başlangıç yani LAUNCHER kodlu Activitysi haline getirin.Daha önceki derslerimizden bildiğiniz üzere Activitynin kayıt işlemlerini AndroidManifest.xml dosyasından yapıyorduk.Yeni Activityi oluşturduktan sonra aşağıdaki kontrol fonksiyonunu onCreate metodundan önce bir yere kopyalayın.Bu fonksiyon boolean tipindedir ve bize internet bağlantısı var ise true yok ise false değeri döndürecek.
Daha sonra onCreate metodunuzun içerisine aşağıdaki kod parçasını ekleyin:
Bu kısımda yaptığımız şey ise fonksiyonumuzu kullanarak bir kontrol gerçekleştirmek.if bloğu içerisinde yaptığımız bu kontrolde eğer internet bağlantısı yok ise bir AlertDialog oluşturup kullanıcıya durum bildirilecek.Bu AlertDialog tek bir butona sahip o da Tamam olarak adlandırılmış.Tamam butonuna basıldığında ise uygulama kapanacaktır.
Eğer tersi bir durum olursa bu internet bağlantısı var anlamına gelir.Bu durumda ise daha önce uygulamamızın başlangıç Activitysi olan Activity başlatılır ve uygulama kaldığı yerden devam eder.
Bu sayede internet bağlantısının durumuna göre uygulama bir sonraki adımdan devam edecek ya da kapanacaktır.
Bu kontrol için manifest dosyamıza eklememiz gereken 2 permission(izin) olduğunu da belirtelim:
Genelde yapılan hatalar bu izinlerin verilmemesinden kaynaklanıyor.Uygulama geliştirirken her zaman bu ihtimalde aklınızın bir köşesinde bulunmalı.
Aynı zamanda bu kontrolün bazı durumlarda yanlış sonuçlar verebileceğini de belirtelim.Örneğin bağlandığınız hat proxye ihtiyaç duyuyorsa internete bağlı gibi görünmenize rağmen uygulamanız veri çekemeyecektir.Bu da yine hata anlamına gelir.Biraz daha gelişmiş bir kontrol için interneti biraz karıştırmanız gerekecek
Böylece bu dersimizin sonuna gelmiş olduk.Başka bir derste görüşmek üzere
Android Programlama Ders 17:İnternetten Cihaza Dosya Download Etmek
Android Programlama Ders 17:İnternetten Cihaza Dosya Download Etmek
Android programlama derslerimizden 17.sinde internetten bir dosyayı sd kartımıza download etmeyi öğreneceğiz.
Android uygulamaları geliştirirken çoğu zaman internetten dosya indirmeye ihtiyaç duyabilirsiniz.Bu bazen kurulum dosyalarınız bazende farklı türden veriler olabilir.Bunun için daha önceden hazırlamış olduğumuz hazır bir class(sınıf)ı kullanacağız.
Aşağıdaki DownloadFile classını projenizde kullanacağınız classda onCreate fonksiyonundan sonra bir yere ekleyebilirsiniz.Burada önemli olan classın herhangi bir fonksiyonun içerisinde bulunmaması.
Bu classın yaptığı şey dosyayı internetten byte byte indirip cihazınızda birleştirmek.Değiştirmeniz gereken kısımları yorum satırlarında belirttim.Dosyanın adı ve uzantısı,indirileceği hedef klasör gibi ayrıntıları kendinize göre değiştirmeniz gerekiyor.Aynı zamanda mutlaka progress barın gösterileceği hedef activityi de bulunduğunuz activity class ismiyle değiştirmeyi unutmayın.
Bu classı kullanarak dosya indirebilmeniz için manifest dosyamıza eklememiz gereken 3 permission(izin) bulunuyor:
<uses-permission android:name="android.permission.INTERNET">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
</uses-permission>
Peki kullanırken ne yapmanız gerekiyor?Bu da classı projeye eklemek kadar basit.Dosyayı indirmek istediğiniz yerde new DownloadFile().execute(dosyalinki); komutuyla dosyayı belirlediğiniz klasöre indirtebilirsiniz.
Classı dosya indirmek istediğiniz her projede projenize ekleyebilir ve rahatlıkla kullanabilirsiniz.
Böylece bu dersimizin sonuna gelmiş olduk.Başka bir Android Programlama dersinde görüşmek üzere
Splash Ekranı Oluşturmayı Bitiriyoruz
video için tıklayın
Bu dersimizde 6.derste başladığımız açılış ekranını(Splash Screen) tamamlıyoruz.Derste Thread kavramından bahsedilmiştir.
Thread yapısıyla ilgili genel bilgi:
Java programlama diline özgü yapılardan biri olan thread, birbirinden bağımsız çalışabilen komut setlerine verilen addır.Paralel birden çok akış olmasını sağlayan yapılardır.Bir programda aynı anda birden fazla thread kullanılabilir ve bu threadlerin birbirileriyle haberleşmesi ya da birbirini kontrol etmesi sağlanabilir.Processlere (Süreç) benzerler.
Gerçekte ise Java her bir threadin birbiriyle çalışmasını engellemeyecek şekilde, ihtiyaçları olan zamanı birbirilerine tanıyarak aynı CPU ünitesini ortaklaşa kullanabilmelerine olanak verir.Ortak kullanılan bi hafıza vardır.
İki şekilde kullanılır.Birincisi yazdığımız sınıfı java.lang.Thread sınıfından extends ederek türetebiliriz.İkincisi ise bazı durumlarda sınıfımızın başka bir sınıftan
türetilmesi zorunlu olabilir, bu gibi durumlarda Javada çoklu kalıtım olmadığı için java.lang.Runnable interfaceini implement ederek kullanırız.Üç önemli metodu vardır.
public **** start():Threadi çalıştırmaya hazırlar.
public **** run():Threadin yapacağı işleri yerine getirir.Doğrudan doğruya çağrılmaz.Start çağrılınca kendiliğinden aktif olur ve gerektikçe çağrılır.Runnable interfacesindede sadece run metodu vardır.Threadin runnable parametre alan bir constructorı (yapıcısı) vardır.Bu şekilde gerekli thread oluşturulur.
public final **** stop():Çağrılırsa thread durur.
Thread yapısı hakkındaki bilgiler Emrah KAHRAMAN den alıntıdır.
İzledikten sonra dersi farklı sitelerde ve sosyal ağlarda paylaşıp bize destek olmayı unutmayın.
720p(HD) olarak izlemeniz tavsiye edilir.
Android Programlama Ders 8:Uygulamamıza Opsiyon(Option) Menüsü Oluşturmak
video için tıklayın
Bu dersimizde uygulamanızda kullanıcılara yol göstermesi açısından mutlaka bulunması gereken Opsiyon(Option) menülerini uygulamamıza nasıl ekleriz bundan bahsedeceğiz.
Opsiyon(Option) menüleri ile ilgili genel bilgi:
Opsiyon(Option) menüleri yani diğer adıyla Hardware menüleri Android işletim sistemini kullanan cihazlarda bulunan menü tuşuna basıldığında ortaya çıkan ve uygulamanın ekranları arasında dolaşmaya yarayan ya da belli başlı komut dizilerini gerçekleştirmek için kullanılabilinecek menü sistemleridir.
Derste Kullanılan Kodlar
Menü Kodları:
Kod:
public boolean onCreateOptionsMenu (Menu menu){
super.onCreateOptionsMenu(menu);
MenuInflater menutanim = getMenuInflater();
menutanim.inflate(R.menu.burayamenuadigelecek, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case R.id.menuitemadi:
startActivity (new Intent("Buraya Activity Adı Gelecek"));
return true;
case R.id.menuitemadi:
startActivity (new Intent("Buraya Activity Adı Gelecek"));
return true;
}
return false;
}
Kod:
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menuitem1"
android:title="Menü ismi"
/>
<item
android:id="@+id/menuitem2"
android:title="Menü ismi"
/>
</menu>
video için tıklayın
Bu dersimizde Androidin en sık kullanılan Layout nesnelerinden olan ListViewlerden bahsedeceğiz.
ListView Nedir?
ListViewler verileri listelemek için kullanılan yapılardır.ListViewler sayesinde bir grup veriyi listeleyebilir ve kullanıcının seçtiği veriyle işlem yapabilirsiniz.
Örneğin;ListViewde listelediğiniz ürünlerinizin bilgilerinin üzerlerine tıklandığında görüntülenmesini sağlayabilirsiniz.
İzledikten sonra dersi farklı sitelerde ve sosyal ağlarda paylaşıp bize destek olmayı unutmayın.
720p(HD) olarak izlemeniz tavsiye edilir.
Android Programlama Ders 10:SQLite ile Veritabanı Oluşturma
video için tıklayın
Bu dersimizde Androidin desteklediği veritabanı sistemi olan açık kaynak kodlu Sqlitedan bahsedeceğiz ve ilk veritabanımızı oluşturacağız.
Sqlite Nedir?
SQLite, dünyada en çok dağıtılan ve tavsiye edilen kaynak kodları halka açık, tamamen C/C++ programlama dilleriyle geliştirilmiş sunucu yazılımı ve konfigurasyon gereksinimi olmayan, işlemsel ve ilişkisel bir SQL veritabanı motorudur.
SQLite, onlarca programlama dili içerisinde rahatlıkla kullanılabilir. Bunlardan bazıları: BASIC, C, D, C++, Common Lisp, Java, C#, Visual Basic, Delphi, Curl, Lua, Tcl, REBOL, R, PHP, ASP, Perl, Ruby, Objective-C, Python, newLisp, Haskell, OCaml, Smaltalk, Scheme.
İzledikten sonra dersi farklı sitelerde ve sosyal ağlarda paylaşıp bize destek olmayı unutmayın.
720p(HD) olarak izlemeniz tavsiye edilir.
Android Programlama Ders 11:SQLiteda Veritabanı İşlemleri(Veri Ekleme,Veri Listeleme,Cursor Kavramı)
video için tıklayın
Bu dersimizde bir önceki derste oluşturduğumuz veritabanımıza veri eklemeyi ve eklediğimiz verileri listelemeyi göreceğiz.
ekran3.java dosyası kaynak kodları(Bu kodları kendi java dosyanıza göre düzenleyin):
Kod:
package com.teknoinfo.ornekuygulama;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class ekran3 extends Activity {
private Veritabani ogrenciler;
@Override
protected **** onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.ekran3);
ogrenciler = new Veritabani(this);
final EditText adi=(EditText) findViewById(R.id.editText1);
final EditText soyadi=(EditText) findViewById(R.id.editText2);
Button verigonder=(Button) findViewById(R.id.verigonder);
verigonder.setOnClickListener(new View.OnClickListener() {
public **** onClick(View v) {
try{
KayitEkle(adi.getText().toString(),soyadi.getText().toString());
Cursor cursor = KayitGetir();
KayitGoster(cursor);
}
finally{
ogrenciler.close();
}
}
});
}
private **** KayitEkle(String isim, String soyad){
SQLiteDatabase db = ogrenciler.getWritableDatabase();
ContentValues veriler = new ContentValues();
veriler.put("isim", isim);
veriler.put("soyad",soyad);
db.insertOrThrow("ogrenciisim", null, veriler);
}
private String[] SELECT = {"id", "isim", "soyad"};
private Cursor KayitGetir(){
SQLiteDatabase db = ogrenciler.getReadableDatabase();
Cursor cursor = db.query("ogrenciisim", SELECT, null, null, null, null, null);
startManagingCursor(cursor);
return cursor;
}
private **** KayitGoster(Cursor cursor){
StringBuilder builder = new StringBuilder("Kayitlar:n");
while(cursor.moveToNext()){
long id = cursor.getLong(cursor.getColumnIndex("id"));
String ad = cursor.getString((cursor.getColumnIndex("isim")));
String soyad = cursor.getString((cursor.getColumnIndex("soyad")));
builder.append(id).append(" Adı: ");
builder.append(ad).append(" Soyadı: ");
builder.append(soyad).append("n");
}
TextView text = (TextView)findViewById(R.id.textView1);
text.setText(builder);
}
}
Android Programlama Ders 12:Bundlelar ile Activityler Arası Veri Alışverişi
video için tıklayın
Bu dersimizde iki Activity arasında veri alışverişi yapmak için kullanabileceğimiz Bundle kavramından bahsedeceğiz.
Dersimizde String bir veriyi putString komutu ile aktardık.Eğer başka tipte bir veri aktarmak isterseniz put(Değişkentipi) şeklinde fonksiyonu kullanabilirsiniz.Kullanabileceğiniz fonksiyonların listesini görmek için Bundle için belirlediğiniz değişkenden sonra bir . koymanız yeterli.Eclipse size kullanabileceğiniz argümanların bir listesini verecektir.
Android Programlama Ders 13:Xml Rss Reader Yapımı ve ASyncTask Örneği
videoyu izlemek için tıklayın
Bu ve takip eden 14 ve 15. derslerimizde Xml bir RSS kaynağından verileri okuyup uygulamamızdaki custom yani özelleştirilmiş ListViewimizde bu verileri listelemeyi öğreneceğiz.Listelediğimiz bu başlıklardan istediğimize tıkladığımızda uygulamamız ilgili adrese yönlenmiş olacak.
15. dersin açıklama kısmında projemizin bitmiş halini bulabileceksiniz.
Bilgilendirme olması amacıyla uygulamamızda kullandığımız AsyncTaskin ne olduğundan kısaca bahsedelim.
ASyncTask Nedir?
ASyncTask arkaplanda bir işlem yapılırken bu işlem başlamadan önce ve bittikten sonra yapmamız gereken komutları işletebilmemiz için oluşturulmuş bir class yapısıdır.
ASyncTask sayesinde uygulamamızda uzun sürecek herhangi bir işlem yapılırken kullancıyı yükleniyor şeklinde bilgilendirebilir aynı zamanda işlem bittikten hemen sonra yapılması gereken komutları sıralayabilirsiniz.
Bu dersimizde ASyncTaski veriler internetten alınırken yükleniyor dialogunu ekranda göstermek için kullandık.Aynı zamanda veritabanı işlemleri gibi uzun sürecek her türlü işlemde bu yapıyı kullanabilirsiniz.
Derste projeyle ilgili bahsetmediğimiz bir nokta var.Eğer internet üzerinden bir işlem yapacaksanız bunun için uygulamanızın Manifest dosyasına internet için gerekli izin satırını eklemelisiniz.
Kod:
<uses-permission android:name="android.permission.INTERNET" />
Android Programlama Ders 14:Custom ListView Yapımı ve RssReaderla Eşleştirilmesi
videoyu izlemek için tıklayın
Bu dersimizde 13.derste başladığımız RSS Reader uygulamamıza devam ediyoruz.Bu derste Custom ListView yapımına göz atacağız.
Custom ListView Nedir?
Android custom ListView oluşturmamıza imkan tanır.Bu sayede Androidin normal ListView görünümünü özelleştirip farklı listeleme tipleri oluşturabiliriz.Örneğin fotoğrafları ve yazıları yan yana ya da farklı şekillerde listeletebiliriz.ListViewi kendi renk seçeneklerimizle oluşturabiliriz.
Android Programlama Ders 15:RssReader Uygulamamızı Tamamlıyoruz
videoyu izlemek için tıklayın
Bu dersimizde 13. ve 14. derslerde devam ettirdiğimiz RssReader uygulamasını tamamlıyoruz.Aşağıdaki indir bağlantısı ile projenin tamamını indirip Eclipsede File > Import u seçtikten sonra General altında Existing Projects into Workspacei seçerek projeyi Eclipsee ekleyebilir ve test edebilirsiniz.
indir
Bu son bölümde listelenmiş yazıların WebView(WebGörünümü) üzerinde gösterilmesi konusunda bilgi verilmiştir.
Android Programlama Ders 16:Connectivity Manager ile Internet Bağlantısı Kontrolü
Video ders hazırlamada yaşadığımız bazı sıkıntılardan dolayı kompleks olmayan dersleri yazılı olarak hazırlamaya karar verdik.Artık takip eden derslerimizin bir kısmı yazılı şekilde yer alacak.
Bu dersimizde internet bağlantısına ihtiyaç duyan uygulamaların ihtiyacı olan bir kontrol mekanizması hazırlayacağız.
Eğer uygulamanız internete bağlanarak bazı işlemler gerçekleştiriyorsa internet bağlantısı bulunmayan kullanıcılar uygulamayı açtığında ilginç durumlarla karşılaşabilir.Normalde hiç hata bulunmayan uygulamanız hatalıymış gibi görünebilir.Böyle bir durumda internet bağlantısına ihtiyaç duyulduğunu fark etmeyen kullanıcılar uygulamanızı kaldıracak ve market üzerinde düşük puanla değerlendireceklerdir.Bu da uygulamanızın diğer kullanıcılar tarafından indirilmesini engelleyebilir.
Bu nedenle uygulamamıza bir kontrol mekanizması koymakta fayda var.Bu mekanizmayı istediğiniz yere yerleştirebilirsiniz ancak benim burada yapacağım şey uygulama açılırken bu durumu kontrol etmek olacak.İnternet bağlantısı var ise uygulama çalışacak yok ise kullanıcıya durum bildirilip uygulama kapanacak.
Öncelikle yeni bir Activity oluşturup bu Activityi uygulamanızın başlangıç yani LAUNCHER kodlu Activitysi haline getirin.Daha önceki derslerimizden bildiğiniz üzere Activitynin kayıt işlemlerini AndroidManifest.xml dosyasından yapıyorduk.Yeni Activityi oluşturduktan sonra aşağıdaki kontrol fonksiyonunu onCreate metodundan önce bir yere kopyalayın.Bu fonksiyon boolean tipindedir ve bize internet bağlantısı var ise true yok ise false değeri döndürecek.
Kod:
boolean internetBaglantisiVarMi() {
ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
if (conMgr.getActiveNetworkInfo() != null
&& conMgr.getActiveNetworkInfo().isAvailable()
&& conMgr.getActiveNetworkInfo().isConnected()) {
return true;
} else {
return false;
}
}
Daha sonra onCreate metodunuzun içerisine aşağıdaki kod parçasını ekleyin:
Kod:
if(!internetBaglantisiVarMi())
{
AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setMessage("Uygulamayı kullanabilmek için internet bağlantınızın aktif olması gerekmektedir");
alertDialog.setButton("Tamam", new DialogInterface.OnClickListener() {
public **** onClick(DialogInterface dialog, int which) {
System.exit(0);
}
});
alertDialog.show();
}
else{
startActivity(new Intent("activitynize verdiğiniz action name buraya gelecek"));
}
Bu kısımda yaptığımız şey ise fonksiyonumuzu kullanarak bir kontrol gerçekleştirmek.if bloğu içerisinde yaptığımız bu kontrolde eğer internet bağlantısı yok ise bir AlertDialog oluşturup kullanıcıya durum bildirilecek.Bu AlertDialog tek bir butona sahip o da Tamam olarak adlandırılmış.Tamam butonuna basıldığında ise uygulama kapanacaktır.
Eğer tersi bir durum olursa bu internet bağlantısı var anlamına gelir.Bu durumda ise daha önce uygulamamızın başlangıç Activitysi olan Activity başlatılır ve uygulama kaldığı yerden devam eder.
Bu sayede internet bağlantısının durumuna göre uygulama bir sonraki adımdan devam edecek ya da kapanacaktır.
Bu kontrol için manifest dosyamıza eklememiz gereken 2 permission(izin) olduğunu da belirtelim:
Kod:
<uses-permission android:name="android.permission.INTERNET">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
</uses-permission></uses-permission>
Genelde yapılan hatalar bu izinlerin verilmemesinden kaynaklanıyor.Uygulama geliştirirken her zaman bu ihtimalde aklınızın bir köşesinde bulunmalı.
Aynı zamanda bu kontrolün bazı durumlarda yanlış sonuçlar verebileceğini de belirtelim.Örneğin bağlandığınız hat proxye ihtiyaç duyuyorsa internete bağlı gibi görünmenize rağmen uygulamanız veri çekemeyecektir.Bu da yine hata anlamına gelir.Biraz daha gelişmiş bir kontrol için interneti biraz karıştırmanız gerekecek
Böylece bu dersimizin sonuna gelmiş olduk.Başka bir derste görüşmek üzere
Android Programlama Ders 17:İnternetten Cihaza Dosya Download Etmek
Android Programlama Ders 17:İnternetten Cihaza Dosya Download Etmek
Android programlama derslerimizden 17.sinde internetten bir dosyayı sd kartımıza download etmeyi öğreneceğiz.
Android uygulamaları geliştirirken çoğu zaman internetten dosya indirmeye ihtiyaç duyabilirsiniz.Bu bazen kurulum dosyalarınız bazende farklı türden veriler olabilir.Bunun için daha önceden hazırlamış olduğumuz hazır bir class(sınıf)ı kullanacağız.
Aşağıdaki DownloadFile classını projenizde kullanacağınız classda onCreate fonksiyonundan sonra bir yere ekleyebilirsiniz.Burada önemli olan classın herhangi bir fonksiyonun içerisinde bulunmaması.
Kod:
class DownloadFile extends AsyncTask<String,Integer,Long> {
ProgressDialog mProgressDialog = new ProgressDialog(SinifAdi.this);//"SinifAdi" kısmını activity classınızın adıyla değiştirin.
String strFolderName;
@Override
protected **** onPreExecute() {
super.onPreExecute();
mProgressDialog.setMessage("Dosya indiriliyor");
mProgressDialog.setIndeterminate(false);
mProgressDialog.setMax(100);
mProgressDialog.setCancelable(true);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.show();
}
@Override
protected Long doInBackground(String... aurl) {
int count;
try {
URL url = new URL((String) aurl[0]);
URLConnection conexion = url.openConnection();
conexion.connect();
String targetFileName="DosyaAdı"+".exe";//İndirilen dosyanın adını ve uzantısını burada belirlemeniz gerekiyor.
int lenghtOfFile = conexion.getContentLength();
String PATH = Environment.getExternalStorageDirectory()+ "/"+"downloadFolder"+"/";//downloadFolder kısmını dosyanın indirilmesini istediğiniz klasör ismiyle değiştirin.
File folder = new File(PATH);
if(!folder.exists()){
folder.mkdir();//Klasör yoksa oluşturuluyor.
}
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(PATH+targetFileName);
byte data[] = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
publishProgress((int)(total*100/lenghtOfFile));//İlerlemenin yüzde olarak progress bar'a yansıtılmasını sağlıyor.
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (Exception e) {}
return null;
}
protected **** onProgressUpdate(Integer... progress) {
mProgressDialog.setProgress(progress[0]);
if(mProgressDialog.getProgress()==mProgressDialog.getMax()){
mProgressDialog.dismiss();
Toast.makeText(fa, "Dosya başarıyla indirildi", Toast.LENGTH_SHORT).show();
}
}
protected **** onPostExecute(String result) {
}
}
Bu classın yaptığı şey dosyayı internetten byte byte indirip cihazınızda birleştirmek.Değiştirmeniz gereken kısımları yorum satırlarında belirttim.Dosyanın adı ve uzantısı,indirileceği hedef klasör gibi ayrıntıları kendinize göre değiştirmeniz gerekiyor.Aynı zamanda mutlaka progress barın gösterileceği hedef activityi de bulunduğunuz activity class ismiyle değiştirmeyi unutmayın.
Bu classı kullanarak dosya indirebilmeniz için manifest dosyamıza eklememiz gereken 3 permission(izin) bulunuyor:
<uses-permission android:name="android.permission.INTERNET">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
</uses-permission>
Peki kullanırken ne yapmanız gerekiyor?Bu da classı projeye eklemek kadar basit.Dosyayı indirmek istediğiniz yerde new DownloadFile().execute(dosyalinki); komutuyla dosyayı belirlediğiniz klasöre indirtebilirsiniz.
Classı dosya indirmek istediğiniz her projede projenize ekleyebilir ve rahatlıkla kullanabilirsiniz.
Böylece bu dersimizin sonuna gelmiş olduk.Başka bir Android Programlama dersinde görüşmek üzere

