13 Aralık 2017 Çarşamba

Design Patterns Nedir?

Merhaba Arkadaşlar,
Uzun bir aradan sonra Design Patterns(Tasarım Şablonları) yazı dizimle tekrardan bloğuma dönüş yaptım.Bu yazı dizimde Tasarım şablonlarının çoğunu ayrıntılı olarak sizlere açıklamaya çalışacağım.İlk olarak bugün Tasarım Şablonlarının ne olduğundan ve bu şablonları kullanmanın yararlarından bahsedeceğim.Daha sonraki günlerde her bir Tasarım Şablonunu ayrı ayrı ele alacağım.
    Tasarım Şablonları, yazılım geliştirme sürecinde,yazılım geliştiricilerin karşılaştıkları, tekrar eden belirli sorunlara getirilen genel çözümlerdir.Bu şablonlar yazılım geliştiriciler tarafından edindikleri tecrübeler sonucunda oluşturulmuş kalıplardır.Tasarım şablonları, sorunun ne olduğunu tanımlayarak bu sorunu çözmek için gerekli adımları içinde barındırır.  
Tasarım Şablonlarının yazılım geliştirme sürecinde iki ana işlevi:
  1. Yazılım geliştiriciler için ortak bir terminoloji sağlar ve  tasarım şablonları belirli bir senaryoya özgüdür.
  2. Zaman içinde sürekli geliştikleri için yazılım geliştirme sırasında karşılaşılan problemlere en iyi çözümleri sağlamaktadırlar.

  • Tasarım Şablonları programlama dillerinden bağımsız olarak,nesne yönelimli tasarım problemlerini çözebilmek için geliştirilmiş stratejilerdir
  • Tasarım Şablonlarını kullanarak yazdığımız kodun esnek olmasını ve yeniden kullanılabilir olmasını sağlayabiliriz.
  • Ayrıca geliştirilen yazılımda, müşterinin daha sonra gelen yeni taleplerini karşılayabilmek için kodda gerekli değişikliklerin ve yazılımın bakım onarımının yapılabilme kapasitesini (maintainable) artırmayı sağlar.
İyi bir yazılımcı olabilmek için Tasarım Şablonları mutlaka bilinmelidir. 

Bugün genel olarakTasarım Şablonları (Design patterns)' larını açıklamaya çalıştım.
Diğer Yazımda görüşmek üzere ... Hoşçakalın.


Kaynaklar:
https://www.tutorialspoint.com/design_pattern
https://www.javatpoint.com/design-patterns-in-java

21 Eylül 2017 Perşembe

Android de Firebase'e Bağlanma ve Authentication

Merhaba Arkadaşlar,

Önceki yazımda genel olarak Google Firebase'den bahsetmiştim.Bugün Android'de Firebase'in uygulamamıza nasıl ekleneceğini ve Authentication işleminin nasıl yapıldığını anlatmaya çalışacağım.

Firebase Authentication ile geliştiricilere birçok kimlik doğrulama yöntemi kullanma imkanı sağlanmıştır.Bu kimlik doğrulama yöntemleri:

  • Email/Password
  • Google
  • Facebook
  • Github
  • Phone
  • Twitter
  • Anonymous
 Firebase kütüphanesini  projemizde kullanabilmek için projemize Firebase kütüphanesini eklememiz gerekmektedir.Eğer Google Firebase de hesap oluşturmadıysanız, öncelikle https://firebase.google.com adresine girerek buradan hesap oluşturmanız gerekmektedir.Bu yazımda, Firebase 'i Firebase Asistant kullanmadan  manuel olarak nasıl projenize ekleneceğini anlatacağım. 
          Manuel Olarak Firebase,Android Studio Projesine Nasıl Eklenir?

  1. Firebase sitesinden hesabımıza giriş yaptıktan sonra Go To Console 'u tıklıyoruz.Console üzerinde eğer yeni bir proje oluşturmak istiyorsak Proje Ekle,var olan google projemizi import etmek için ise "Google projesini içe aktar"ı tıklıyoruz. 



   2- Proje ekle seçeneğini tıkladığımızda  karşımıza çıkan formdan proje adını yazıp,ülkeyi           seçiyoruz.Ve Proje Oluştur Butonuna Tıklıyoruz.
Firebase'i Android Uygulamasına Eklemek
1-.Android Studio'da Firebase ekleyeceğimiz yeni bir proje oluşturuyoruz.

2-Firebase'de  sign-in olduktan sonra oluşturduğumuz projeyi açıyoruz.Ve aşağıdaki şekildeki gibi "Firebase'i Android uygulamanıza ekleyin" kısmına tıklıyoruz.




3-Yukarıda Android paket adını yazarken dikkat etmemiz gereken nokta Android Studio'da oluşturduğumuz projenin paket ismi ile aynı olmasıdır.
4-Projemizin paket ismini yukarıda yazıp,Uygulamayı Kaydet butonuna bastığımızda karşımıza aşağıdaki adım gelecektir.Aşağıdaki adımları takip edip google-services.json'ı bilgisayara indirip daha sonra Android Studio'da projemizde app modulunun altına google-services.json'ı kopyalıyoruz.
 5-Son adımda aşağıdaki ekrandaki yönlendirmeleri uygulayarak projemizdeki gradle dosyasında eklemeleri yapıp IDE'deki çubukta gözüken  sync now a basıyoruz.
Projemizde Firebase Authentication'ı kullanabilmemiz için build.gradle (Module: App)dosyasına aşağıdaki eklemeleri yapıyoruz.
compile 'com.google.firebase:firebase-database:11.0.1'

compile 'com.google.firebase:firebase-auth:11.0.1'

Ve son olarak da hangi Authentication tipini (Email/Password,Facebook,Twitter vs.)kullanmak istiyorsanız onu Firebase Consoldan aktif hale getiriyoruz. Firebase artık kullanımımıza hazır durumda.Diğer yazımda görüşmek üzere. Hoşçakalın.

6 Eylül 2017 Çarşamba

Firebase nedir?

Merhaba arkadaşlar bu yazımda,özellikle mobil yazılım geliştiriciler için büyük kolaylıklar sağlayan Firebase platformundan bahsedeceğim.Ekim 2014'te Firebase adı verilen uygulama geliştirme servisi,Google tarafından satın alındı.Böylece Google geliştiricilerin ihtiyaç duyduğu pek çok hizmeti kullanıma açtığını duyurdu. Firebase arka plan(backend) uygulama servisidir. Bulut tabanlı depolama ve verilere erişim sunmaktadır. Google Firebase tarafından farklı platformlar için kolay bir alt yapı ve tek yerden geliştirebilme imkanı sunulmaktadır.
Firebase'in geliştiricilere sunduğu hizmetlerden bazıları:

  1. Analytics:Firebase Framework'un en önemli kısmıdır.Ücretsizdir. Veri analiz ara yüzüdür.
  2. Realtime Database
  3. Cloud Storage
  4. Google Cloud Messaging
  5. Hosting
  6. Authentication
  7. Test Lab
  8. Notification
  9. AdMob
Google Firebase kullanıcısı olan mobil geliştiriciler, bir dizi mobil analitik hizmetinden faydalanabilmektedirler.Bu hizmetleri kullanabilmek için uygulamaya birkaç satır kod eklemek yeterlidir.Bu işlemden sonra uygulamadaki kullanıcı verileri,uygulamanın içinden Firebase'e aktarılmaktadır.Eğer geliştiriciler daha detaylı bilgilere ulaşmak istedikleri takdirde ,aynı işlemi erişmek istedikleri tüm bölümlere uygulayarak daha fazla bilgiye ulaşabilmektedirler.Böylece geliştiriciler, kararlarını tahminlere göre değil,Google Analytics verilerine dayandırarak vermektedirler.Geliştiricilerin uygulamayı kullanacak olan kullanıcıların neyi sevdiğini ve nelerden hoşlanmadıklarını bulmak için davranışlarını izlemeleri gerekir. Kullanıcıların kullandıkları platform ve geliştirilen tasarıma verdikleri tepkilerin detaylıca analiz edilmesi gerekir.
Analytics yardımıyla, Firebase kullanan geliştiriciler kendi uygulamalarındaki 500 benzersiz hareketi izleyebilir. Kullanıcı davranışına, uyumluluk raporuna ve hatalara göz atabilmekte, reklam performansını ölçebilmektedirler.
Google Cloud Messaging tabanlı bildirim sistemi yeniliklerden bir tanesi. Google buradan hem IOS ve android hem de web uygulamakarı için sınırsız bildirim desteği sağlamaktadır.Bu bildirimler tamamen ücretsizdir. Google sunduğu hizmetlerin bir kısmını ücretsiz ,bir kısmını ise ücretli olarak sağlamaktadır.Bu hizmetlerden Analytics,Hata Raporlama,Uzaktan Konfigürasyon ve Dinamik Linkler'in tamamı sınırsız kullanıma açık ve ücretsiz olarak sunulmaktadır. Firebase ile kullanılabilen ücretli olanlar  ürünler ise Test Lab, Storage, Hosting ve Realtime Database'dir. Bu ücretli hizmetlerden faydalanmak isteyenler belirli kısıtları olan ücretsiz plan, startuplar için bir aylık özel tarifeyi ya da "kullandıkça öde" modelini seçip, bahsedilen ücretli hizmetleri kullanmaya başlayabilirler.
Gelecek yazıda, Android ile Firebase Authentication 'ın nasıl yapılacağından bahsedeceğim.Görüşmek üzere...

Kaynaklar:
https://firebase.google.com/docs/
http://www.sistemoptima.com/yazilim/firebase-nedir
https://www.techinside.com/google-firebase-mobil-analitik-ucretsiz/

16 Ağustos 2017 Çarşamba

Web Servis nedir?

Merhaba arkadaşlar ,
Bugün son zamanlarda popüler olan web servislerden bahsetmek istiyorum. Web servis XML ,HTTP, SOAP gibi çeşitli protokol ve standartları kullanarak diğer web uygulamalar ile veri alış verişi yapmak amacıyla etkileşim kuran web uygulamalarıdır.Var olan uygulamalarımız web servisler sayesinde birer web uygulamalara dönüşebilmektedir. Web servisler, bir kez yazılır ve farklı platformlarda ve değişik programlama dilleriyle kullanılabilirler.İşletim sisteminin linux yada windows, programlama dilinin java ,php veya herhangi başka bir dil olması web servisin çalışmasını etkilemez. Web servisler, client (istemci bilgisayar )tarafından gönderilen istekleri yorumlayarak ona yapısında bulundurduğu bilgilerden ,istemcinin isteğine göre bir cevap göndermektedir. Web servisin avantajlarını toparlayacak olursak,Web servisi platform bağımsızdır ve istenilen yerden erişilebilmektedir.
Yukarıda bahsedilen kompleks mimarilerin kullanımının artmasının bir sonucu olarak uygulamalar arası iletişimin sağlanabilmesi için çözüm ihtiyacı ortaya çıkmıştır.Her uygulama geliştirildiği programlama dili ve veri tabanı itibari ile farklı  tür veriler oluşturmaktadır.Uygulamalar arası iletişimin ne olduğunu açıklayacak olursak, bu uygulamalar arası karşılıklı  veri alışverişini anlatmaktadır.Kompleks mimarilerin birbirleri ile iletişim sağlanabilmesinin çözümü herkesin kullanabileceği,kendi ihtiyacına göre yapılandırabileceği ortak bir dil olan xml standartıdır. Web servisler ile m için xml standardı kullanılır.En çok REST ve SOAP web servisleri kullanılmaktadır.

Web servisler bir çok alanda kullanılmaktadır.Örneğin TCMB döviz kurlarını uygulamamızda kullanmamız gerekirse kurumun yayınladığı  web servisinden istediğimiz verileri çekebiliriz.Bir başka ornek, Mernisten bilgi edinmek isteyen her kurum,daha önceden belirleniş olan xml 'e göre uygulamalarını yapılandırıp istediği bilgilere yetkileri dahilinde ulaşabilmektedir.



Kaynaklar:
https://www.tutorialspoint.com
http://www.mshowto.org

16 Mayıs 2017 Salı

Android'de ListView Oluşturma

Merhaba Arkadaşlar ;
ListView en önemli widgetlardan birisidir. Listview, ekranda verileri alt alta listelemek istediğimizde kullanılmaktadır.İki çeşit Listview vardır.Bunlardan birincisi android'in kendi adapter larını kullanarak oluşturulmaktadır.Bunlar sadece TextView'lardan oluşmaktadır.Yeni bir özellik eklenemez.İkincisinde ise özelleştirilmiş Listview oluşturulabilmektedir. Ben bu yazımda ilk seçeneği, yani android'in kendi adapter larını  kullanarak nasıl Listview oluşturulacağını anlatacağım.
ListView örneğine geçmeden önce  Adapter'dan bahsetmekte fayda var.
Adapter :Elektrik şebekesindeki elektrik, telefonumuzun bu elektriği direk kullanmasına elverişli değildir. Burada devreye adapter girer. Adapter sayesinde elektrik şebekesindeki elektrik telefonlarda kullanabilecek hale dönüştürülür. Androiddeki ArrayAdapter da aynı şekilde verilerin kullanıcı arayüzlerinde gösterilebilecek hale dönüştürmektedir. 
Örneğimizde ekranda yiyecek listesini göstereceğiz.

  • Öncelikle tasarım kısmını yapalım. activity_main.xml dosyasına ListView ekliyoruz.Bütün ekranı kaplaması için listview'ın  layout_width ve layout_height özelliklerini match_parent olarak tanımlıyoruz.
activity_main.xml dosyasının kodları aşağıdaki gibidir:

MainActivity.java dosyası aşağıdaki gibidir:

  • Burada ilk olarak String türünde yiyecekler listesi oluşturuldu.
  • OnCreate Metodunun içinde ListView 'ı tanımladık.
  • String tipinde verileri gösterecek bir ArrayAdapter oluşturduk.Burada Android'in gösterim şekillerinden simple_list_item_1 çağırdık.Parametredeki this ile ListView 'ın gösterileceği bağlamı belirttik.Aynı sayfada gösterileceği için this deyimini kullandık.yiyecekler parametresini de gönderdik.Bu sayede ListView'ın her satırındaki textView'lar yiyecekler listesinin elemanları ile doldurulacak.
  • Listview'a Adaptörü set ederek ekranda ListView 'ın görünmesini sağladık
  • Her bir elemana tıklama özelliği kazandırmak için setOnItemClickListener methodunu ekledik.Bu methodu onCreate Method içine ve setAdapter yapılan satırdan sonra yazılması gereklidir.
  • Örnekte tıklanan yiyeceğin ismini yazan bir diyalog penceresi ekrana gelmektedir. 
         Projeyi çalıştırdığımızda yiyecekler aşağıdaki resimdeki gibi ekranda listelenecektir.

Listedeki yiyeceklerden bir tanesi tıklandığında ise aşağıdaki gibi bir görüntü oluşacaktır.



Bu yazıda basit anlamda bir ListView'n nasıl olşturulacağını görmüş olduk.Bir sonraki yazıda görüşmek üzere...

10 Mayıs 2017 Çarşamba

Git ve Github Nedir?

Merhaba Arkadaşlar;
Bugün, yazılımcıların sıkça kullandıkları Git ve Github'dan bahsedeceğim.
Öncelikle ,yaygın düşüncenin aksine Git ve GitHub aynı şey değildir. Git bir versiyon kontrol sistemidir(VCS). GitHub ise içerisinde Repository'ler oluşturulan bir uzak depolama alanıdır.
Git dağıtık bir yapıya sahiptir:Yani her kullanıcı kendi bilgisayarında projenin bir kopyasını bulundurabilmektedir. İnternet bağlantısı olmadan kendi bilgisayarında proje üstünde çalışabilmektedir.
Git Versiyon Kontrol Sistemi ile ,
  • Projenin versiyon numaralarını, hangi kullanıcının ne zaman değişiklik yaptığı gibi bilgileri saklanmaktadır.
  • Projedeki takım arkadaşlarının yaptıkları değişikler görülebilmektedir.
  • Git bizim için projede yaptığımız çalışmaların yedeğini almaktadır. Bu sayede projenin güncel versiyonunda bir sorunla karşılaşıldığında eski versiyonlarda ne yaptığımızı görüp, kontrol edebilmekteyiz.Git çalışmalarımızın yedeğini kendisi alarak, bizi hem çalışmalarımızın yedeğini almak zahmetinden ve zamanından kurtarmakta, hem de yer tasarrufu sağlamaktadır. 
  • Yazılım şirketlerinde projelerde birden fazla kişi çalıştığı düşünüldüğünde,takım halinde çalışmayı kolaylaştırabilmek adına bir versiyon kontrol sistemi kullanmak kaçınılmazdır.Ayrıca müşteriler yazılan kodları görmek istediğinde, müşterinin sistemine kodları yüklemeden göstermeyi sağlamaktadır. 
  • Tek olarak gerçekleştirilen projelerde ise GitHub kullanmak projede yapılan kodda yapılan değişiklikleri görebilmek  ve kullanıcıların projelere katkıda bulunarak kendilerini geliştirebilmesi adına önemlidir.
  • GitHub, projeleri Public(projeyi herkes görebilir ve katkıda bulunabilir.)seçeneği ve private (Sadece belirlenen kişiler proje üzerinde çalışabilmektedir)seçeneği olmak üzere iki tane depolama  seçeneği sunmaktadır. 
  • Public seçeneği ücretsiz iken projeyi private olarak depolamak ise ücretlidir. 
  • Geliştiriciler herkesin görebileceği şekilde projelerini GitHub'a yüklediklerinde GitHub'daki herhangi bir kullanıcı projedeki kodları görebilmekte ve katkıda bulunabilmektedir. Ayrıca projeniz hakkına yorumlar yapabilmektedir. Yazılımcılar ,GitHub'daki projelere katkıda bulunarak deneyim kazanabilmektedir.   

25 Nisan 2017 Salı

Android Splash Screen Yapımı

Merhaba Arkadaşlar ,
Bu yazımda, Splash Screen ekranlarından bahsedeceğim. Instagram,twitter gibi hemen hemen herkesin bildiği ve kullandığı android uygulamaları ilk açıldıklarında logolarının göründüğü bir ekran karşımıza gelir. Splash ekranın Türkçe karşılığı açılış ekranı olarak geçmektedir.Açılış ekranları ekranda 2-3 saniye kaldıktan sonra oturum açma ekranına ya da ana ekrana (Yani Activity)ye geçiş yaparlar.Açılış ekranının ekranda kalış süresini istediğiniz gibi ayarlayabilirsiniz.Fakat açılış ekranının çok uzun süre ekranda kalması kullanıcıyı uygulamadan soğutabilir.Ya da diğer durumda ,kullanıcının ekranı göreceği yeterli süre ayarlanmazsa da kullanışsız olabilir.Ben açılış ekranlarının  uygulamada gösterilme süresini genelde 3 saniye olarak ayarlamayı tercih etmekteyim. 
Şimdi Splash Screen'in nasıl oluşturulduğunu görelim:
Öncelikle yeni bir proje oluşturalım.Yeni proje oluşturduğumuzda MainActivity.java ve activity_mail.xml oluşturulmuş oldu. Şimdi Splash ekranımızı oluşturacağımız yeni bir Aktivite oluşturmamız gerekmektedir.Bunun için aşağıdaki şekildeki adımları izleyelim ve Empty Activity oluşturalım ben bu aktivitenin ismini SplashScreenActivity olarak verdim.


Splash ekranda kullanacağımız resmi aşağıdaki şekildeki gibi drawable klasörüne yükleyeceğiz.Ama burada önemli bir nokta var. Android telefonların ve tabletlerin ekranları değişik boyutta olduğu için,resmin her cihazda aynı  şekilde gözükmesi konusunda sıkıntı yaşayabiliriz. Bunun  için bir adet XHDPI şeklinde resmi drawable  klasörüne atmamız yeterlidir.
XHDPI :
  •        Portrait:720px1280px
  •        Landscape :1280x720px



Splash Screen ekranımızın tasarım kısmını yaptığımız activity_splash_screen.xml dosyasının kodları aşağıdaki  gibi olacaktır.

 activity_splash_screen.xml 

activity_main.xml de  ise MainActivty'de ise bir textView ekledik.
activity_main.xml
Tasarım kısmını tamamladıktan sonra java dosyalarımıza geçelim.
SplashScreenActivity.java kodları aşağıdaki gibi olacaktır:
MainActivity.java 'da herhangi bir değişiklik yapmadık.
Şimdi önemli bir noktaya geldik AndroidManifest.xml dosyasında değişiklik yapmamız gerekiyor.Çünkü Splash ekranımız ilk açılan ekran olmalıdır.Şu anki AndroidManifest.xml dosyamıza göre uygulama çalıştığında ilk olarak MainActivity çalışacaktır.
AndroidManifest.xml 'de  aşağıdaki değişiklikler yapılmalıdır.

Bu yaptıklarımızdan sonra açılış ekranımız(Splash Screen) hazır durumdadır.
Diğer yazımda görüşmek üzere...

24 Nisan 2017 Pazartesi

Bir Aktiviteden Diğer Aktiviteye Veri Aktarımı Yapmak

Merhaba Arkadaşlar,
Bugün Android sistemin en önemli bileşenlerinden olan Activity'ler arası veri alışverişinden bahsedeceğim.Bu veri alışverişini sağlamak için tabi ki intentlerden yararlanacağız.
Öncelikle yeni bir proje oluşturalım.Bu yazıya yeni proje oluşturma adımlarını bildiğinizi varsayarak devam edeceğim
Bu örnekte ilk  aktivitede,
2 adet editText,
1 adet buton oluşturacağız.Bu edittextler ile kullanıcıdan kullanıcı adı ve sifre isteyeceğiz.Buton ile de diğer aktiviteye geçiş ve veri alışverişini gerçekleştireceğiz.
Layout klasörünün altındaki activity_main.xml dosyasında aşağıdaki değişikleri yapacağız:


Böylece ilk aktivitemizin tasarımını hazırlamış olduk.MainActivity.java kodlarını 
yazmadan önce ikinci aktivitemizi oluşturalım.Bunun için aşağıdaki adımları izleyip yeni bir aktivite oluşturalım.


activity_second.xml dosyasında diğer aktiviteden gelecek kullanıcı adı ve şifre bilgilerini gösterecek iki tane textView oluşturacağız.
activity_second.xml dosyasında aşağıdaki değişiklikler yapılacak:İki adet textView oluşturalacak




Sıra geldi Java dosyalarına Aktivitelerin java dosyalarında xml dosyasındaki elemanların tanımını ve hangi işlemleri gerçekletireceğini belirtiriz.

MainActivity.java kodlarımız aşağıdaki gibi olacaktır:


SecondActivity.java ise MainActivity.java dosyasında Intent ile gönderdiğimiz verileri alıyor ve ekranda gösteriyor.
SecondActivity.java'da kullanılan kodlar aşağıdaki gibidir:

Sonuçta proje emülatörde çalıştırıldığında aşağıdaki görüntüler elde edilecektir:


 Bugün activity ve intent kavramlarını basit bir örnekle kullanmış ve bir giriş yapmış olduk .

18 Nisan 2017 Salı

İntent ve intent Filter

Arkadaşlar merhaba ,bu yazımda sizlere intent ve intent filter kavramlarından bahsedeceğim.
Android de uygulama bileşenleri diğer android uygulamaları ile etkileşime geçebilir.Bu intent nesneleri ile mümkündür .Android uygulamamızda aktiviteler arası geçiş,yeni aktivite başlatma,yeni bir servis tetiklemek istediğimizde Intent nesnesini kullanırız.Bir aktivite başka bir uygulamadaki aktiviteyi başlatabilir.Örneğin uygulamamıza bir fotoğraf yüklemek için galeriden fotoğraf seçme aktivitesi açılır.Bu şekilde android telefonun sistem özelliklerini uygulamada kullanabildiğimiz gibi telefonda yüklü 3.parti uygulamaların özelliklerini de kendi uygulamamızda kullanabiliriz.Yeni bir aktivite başlatmak için startActivity(intent) methodu kullanılır.Bu method Context nesnesinde tanımlıdır.Aynı uygulama içinde bir Activity başka bir aktiviteyi başlatıyorsa ,başlatılan aktivite alt aktivite (sub -activity )olarak adlandırılır.
 Yeni bir aktivite başlatmak için aşağıdaki kodu kullanmalı ve başlatacağımız yeni aktiviteyi de oluşturmalıyız.Bunun için 
  Geçiş yapılacak aktivite oluşturulur. Kodda hangi isimle çağıracaksak o isim oluşturduğumuz aktivitenin ismi ile aynı olmalıdır.


Intent i = new Intent(getBaseContext(), YeniActivity.class);

startActivity(i);
finish();// Eğer sayfa açıldıktan sonra bu sayfaya tekrar Back butonu ile dönülmesini istemiyorsak finish() metodu ile Activity'i bitirebiliriz.
Aktiviteler arası veri alışverişi Bundle ile sağlanır.
İntent ile servis başlatmak için startService(Intent ) methodu çağrılır.
İki çeşit Intent vardır:
1-Explicit(açık) 
2 implicit(dolaylı)
Explicit intentler: Eğer uygulamada  kullanılmak istenen bileşen açıkça tanımlanmış bir intent ise explicit bir intenttir.Explicit intentlerde Android Sistemin hangi bileşeni çağıracağını açıkça tanımlanması gerekir. Explicit intentler uygulama içinde java sınıfları olarak, uygulamanın geliştiricisi tarafından kontrol edilir. Aşağıda bir explicit intentin nasıl olabileceği gösterilmiştir:
Intent i = new Intent(this, ActivityTwo.class);
i.putExtra("Value1", "This value one for ActivityTwo ");
i.putExtra("Value2", "This value two ActivityTwo");
Implicit Intentler: İmplicit intentler gerçekleşmesi istenen eylemi belirtir. İmplicit intent android sisteme gönderildiğinde ,sistem öncelikle belirtilen eylemi gerçekleştirmek için uygun tipteki bütün komponentleri arar.Eğer uygun olan sadece bir tane varsa Android sistem otomatik olarak bu komponenti başlatır.Ama Android sistem tarafından  belirtilen eylem için kullanılacak birden fazla komponent tanımlanmış ise, kullanıcının istediği eylemi gerçekleştirmek için kullanmak istediği komponenti seçmesi için karşısına bir dialog penceresi gelir. Aşağıdaki örnek kodda Android sistemden bir web sayfasını göstermesi istenmektedir.
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(i);
Burada karşımıza önemli bir sorun çıkıyor.Bu belirlenen intentleri gerçekleştirmek için android sistemi,gönderilen intent için hangi komponentin uygun olduğunu nasıl tespit edecek işte burada devreye intent filter girmektedir. Komponentler belirli bir eylem için kayıt edilebilirler.Ayrıca intent filter için ,belirli implicit intentin hangi aktiviteye ait olduğunu da belirtmek gerekir.Bu Android komponentleri static olarak AndroidManifest.xml dosyasına kayıt edilebilir.
Aşağıda AndroidManifest.xml dosyasında tanımlanmış kullanıcının çeşitli tiplerde içerik gönderebilmesi için kullanılacak komponent tanımlanmıştır.

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
sendIntent.setType("text/plain");
// Verify that the intent will resolve to an activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(sendIntent);
}
Bir sonraki yazımda Aktivite ve İntent kavramlarını içeren bir örneği uygulamalı olarak anlatacağım.Görüşmek üzere..

17 Nisan 2017 Pazartesi

Activity Yaşam Döngüsü

Herkese merhaba , daha önceki yazımda kısaca uygulamanın en önemli bileşenlerinden olan Activity'i tanıtmıştım.Şimdi detaylı bir şekilde Activity sınıfını ve Activity yaşam döngüsünü açıklamak istiyorum.
Uygulamamızda gördüğümüz her ekran bir activity'i temsil etmektedir. Activity manager ise telefonun çalışmasını iyileştirmeyi, kaynak israfını önlemeyi sağlar.Çünkü bildiğimiz gibi telefonların işlemcisi bilgisayarların işlemcileri gibi gelişmiş değildir. Activity Manager telefonun işletim sisteminin kaynak yetersizliği çektiği durumlarda  ,herhangi bir uyarı yapmaksızın devreye girer.Uygulamayı kapatır(kill)yada kısa kısa bir süreliğine ara verebilir(stop,pause)Bu tür durumlara örnek olarak uygulama çalışır durumdayken ,telefona gelen bir arama ile uygulamanın yarıda kesilmesini verebiliriz.Arama sonrasında kullanıcının uygulamaya kaldığı yerden devam edebilmesi Activity yaşam döngüsünü ve metotlarını bilmemiz gerekiyor.Ayrıca kullanıcıların çok kullandığı bir özellik olan  back tuşuna basıp çıktıktan sonra kaldığı yerden devam edebilmesini de yaşam döngüsü metodlarıyla gerçekleştirilir.
  • onCreate: Activity ilk oluşturulduğunda çağrılır. Activity herhangi bir nedenden ötürü yok edilmezse (bellek ihtiyacı ya da finish metodu) bir daha çalıştırılmaz.
  • onStart: onCreate metodu çalıştırılıp ekranda  görsel öğeler gösterildikten sonra çağrılır.
  • onResume: Activity herhangi bir sebepten dolayı durdurulduysa (başka bir ekrana geçiş) tekrar ekrana geldiğinde bu metot harekete geçer. Activity çalıştırılmadan önce harekete geçen son metottur. Bu metottan sonra belirlenen koda göre Activity yaşamına başlar.
  • onPause: Activity bir sebepten dolayı arka plana atılırsa harekete geçer. Bu Back tuşuna basılmasından ya da sistemin bellek ihtiyacından kaynaklanabilir. Bu metot içerisinde anlık bilgilerin kaydedilmesi önerilir. onPause işlemi hızlı çalışmak zorundadır, çünkü buradaki işlem bitmeden bir sonraki Activity harekete geçmez.
  • onStop: Activity arka plana atıldığı anda işleme girer. Bu noktada iki seçenek vardır; ya kullanıcı yeni ekrandaki işini bitirip geri gelir ya da Activity tamamen kapatılır. Kullanıcı geri geldiği takdirde onRestart metoduna geçilir ve döngü onStart metodundan tekrar başlar. Eğer kullanıcı geri gelmeyecekse onDestroy metodu çalıştırılır.
  • onDestroy: Activity'e ait bütün kaynaklar yok edilir. Activity bu noktada yaşam döngüsünü tamamlamıştır.
onCreate methodu ile ekranlarımızın tasarımlarını içeren layout dosyasındaki ilgili ekranımıza ait tasarımımızı yükleriz.Ayrıca uygulama ilk açıldığında ne gibi özellikler olacağını da bu metotla belirleriz. Android Studio'da yeni bir proje oluşturduğumuzda ya da yeni bir activity oluşturduğumuzda onCreate metodu otomatik olarak eklenmektedir.


16 Nisan 2017 Pazar

Androidde Temel Uygulama Bileşenleri

Android Programlamaya giriş yapmadan önce bir android uygulamanın ana bileşenlerini yakından tanıyalım.
 4 farklı tipte uygulama  bileşeni vardır.Bunlar şunlardır:
1 Activities
2-Services
3-Broadcast Receivers
4-Content Providers
Her bir bileşen farklı bir amaç için kullanılır. Her bir tip için uygulama bileşenlerinin nasıl yaratılıp ,nasıl yok edileceğine dair farklı bir yaşam döngüsü vardır.
 İlk olarak Activity ile başlamak istiyorum.
1-Activity
Activity uygulamanın kullanıcı ile etkileşime geçtiği bir ara yüzdür. Uygulamada birçok activity olabilir.Uygulamalar bir activity ile açılır.Activity'ler diğer uygulama bileşenleriyle uyumlu bir şekilde çalışmaktadır.Activity için günlük yaşamda çok  kullandığımız e-mail örneğini verecek olursak ,Uygulama ilk olarak e-mail gelen kutısu ekranı ile açılır.Bu Activity başka bir activity'yi çalıştırır .Örneğin e-mail yazılıcak ekranın olduğu  activity vb.Genellikle uygulama içindeki activityler birbirleri arsındaki bağımlılık düşüktür.Activity ler sıklıkla başka uygulamadaki activityleri çalıştırır.Buna örnek olarak tarayıcı uygulaması ile sosyal hesaplarımızda fotoğraf paylaşabilmemiz verilebilir.
Uygulamada kullanılan activitylerin  bilgilerini manifest dosyasında yazılması gerekir.Yeri gelmişken kısaca manifest dosyasından bahsetmek isiiyorum.Manifest dosyası uygulamamız için gerekli izinlerin tanımlandığı ve uygulamamızdaki activitylerin bilgilerinin belirtildiği bir xml dosyadır.Eğer manifest dosyasında uygulama için gerekli izinler(internet,kamera vb.) ya da activityler deklare edilmezse uygulama çalışmayacaktır.


2 Mart 2017 Perşembe

Android İşletim Sistemi


                                       
Android programlamaya başlamadan önce android işletim sisteminden,android işletim sisteminin kullanıldığı yerlerden başlayacağım.Kullanılan terimler  ve teknolojiler hakkında detaylı bilgiler vermeye çalışacağım.Çünkü çoğu android geliştirici kullandığı teknolojileri ve sık kullandığı  terimlerin aslında ne olduğunu tam olarak bilmiyor.Bu yazı dizimde önemli kavramları detaylıca açıkladıktan sonra  küçük uygulamalarla kodlamaya giriş yapacağım. Android programlamaya yeni başlayanlar için iyi bir temel oluşturarak,uygulamalarla adım adım ilerleyeceğiz. Android programlamaya yeni başlayan ve iyi bir geliştirici olup terimleri çok iyi bilmeyip öğrenmek isteyen kişilere yararlı olmasını dilerim.Unutmayın bilgi paylaşıldıkça çoğalır:)

Android Google ve  Open Handset Aliance tarafından ,akıllı telefon ve tabletlere yönelik oluşturulmuş bir işletim sistemidir.Linux tabanlı ,özgür ve ücretsizdir.Akıllı telefon ve tabletler dışında notebook,oyun konsolu gibi diğer elektronik cihazlarda kullanılmaktadır.Sistem açık kaynak kodlu olsa da Google ufak ama çok önemli bir kısmını gizli tutmaktadır.Sistemin Google tarafından ücretsiz sunulması ,sistemin daha çabuk gelişmesi ve birçok ünlü marka tarafından kullanıldığı için popülerliğini arttırmasına yöneliktir.Google Android sistemi üzerinde çalışan Google Play marketteki oyun ve uygulamalar üzerinde almış olduğu reklamları yayınlayarak para kazanmaktadır
Android İşletim sistemi beş kısımdan oluşur:
1.Çekirdek:Linux kernelidir. Güvenlik, hafıza yönetimi, süreç yönetimi, ağ yığınları ve sürücü modellerini içermektedir.
2.Android Runtime: Sanal Makinedir.Dalvik Sanal Makinesini de içermektedir. 5.0 ile Dalvik kaldırılmış ve ART'ye geçilmiştir.
3.Kütüphaneler:Veritabanı kütüphaneleri, web tarayıcı kütüphaneleri, grafik ve arayüz kütüphanelerini içermektedir.
4.Uygulama Çatısı: Uygulama geliştiricilere geniş bir platform sunan kısımdır.
5.Uygulama katmanı:Doğrudan Java (programlama dili) ile geliştirilmiş uygulamaları içermektedir.


Android Mimarisi Diagramı

Yukarıdaki diyagramda görüldüğü gibi en altta linux çekirdeği bulunmaktadır.Çekirdeğin üstünde C programlama diliyle yazılmış kütüphanelerin ve API'lerin bulunduğu orta katman vardır.Uygulama yazılımı java ile uyumlu olan kütüphaneleri içeren uygulama çatısı üzerinde çalışmaktadır.Linux çekirdeğinin geliştirilmesi, diğer android kaynak kodları tabanından  bağımsız olarak sürekli devam etmektedir
Bu yazımızda android işletim sisteminde programlama yapacağımız için android işletim sistemi hakkında genel  bilgiler vermek istedim.Gelecek yazılarımda görüşmek üzere...