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.