You are on page 1of 165

Android Studio Dersleri

mit KSE
Umiitkose.com
Herkese Merhaba, Ben mit Kse. Frat nversitesi
Bilgisayar Mhendislii 4. Snf rencisiyim. 2 sene
boyunca bloumda yer verdiim android derslerini pdf
kitap halinde toplamak istedim. Benimle
umiitkose.com zerinden ya da sosyal alar ile irtibata
geebilirsiniz.
Herkese iyi renmeler, iyi okumalar.
Sosyal Alarm..
indekiler
Android Programlama Giri
1-Android Studio Kurulum
2-Giri ve Emlatrde Hello World Uygulamas
3-Button Tanmlama ve Android Manifest Uygulamas
4-Intent Kavram ve Yeni Ekran oluturma
5-Thread Kavram ve Splash Ekran
6-Uygulamay Tam Ekran Yapma
7-Button Still Tanmlama
8-Layoutlar
9-webView Kullanm ve Uygulamada Web Sayfas Ama
10-Titreim Kullanm (Vibrator)
11-Androidte Yaz Tipi Deitirme
12-Mac Adresi, retici ve Model Bilgileri
13-Option (Men) Oluturma
14-Arama Yapma
15-Bluetooth Kontrol
16-Alert Dialog
17-Progress Dialog
18-Rating Bar
19-CheckBox
20-RadioButton
21-Buttonlar tek bir listener ile kontrol etme
22-Wifi Kullanm
23-Telefon Kameras Kullanm
24-Video ekme, Oynatma
25-ScrollView Kullanm
26-Android Studio Dil Destei
27-MediaPlayer ile Ses Kontrol
28-Payla Butonu
29-PushBots ile Bildirim Gndermek
30-nternet Kontrol

Uygulamalar
1-Hesap Makinesi
2-nternet Taraycs
3-Flash Uygulamas

Android Studio Apk dosyas oluturma


Android Genymotion Kurulumu
Android Studio Programlama Giri
Android Nedir?
Artk tabletlerde ou telefonlarda neredeyse hayatmzn ou ileminde android
kullanyoruz. En basit aklamas hayatmz kolaylatrmak iin yazdmz ve google
tarafndan bizlere bir ak kaynakl mobil iletim sistemi olarak sunulan teknolojidir.

Android, Google, Open Handset Alliance ve zgr yazlm topluluu tarafndan


gelitirilen, Linux tabanl, mobil cihaz ve cep telefonlar iin gelitirilmekte olan, ak
kaynak kodlu bir mobil iletim sistemidir. Desteklenen uygulama uzants .apkdr.

Android, aygtlarn fonksiyonelliini genileten uygulamalar yazan geni bir gelitirici


grubuna sahiptir. Google Play, Android iletim sistemi uygulamalarnn eitli
sitelerden indirilebilmesinin yan sra, Google tarafndan iletilen kurumsal uygulama
maazasdr.

Android, linux ekirdei zerine ina edilmi bir mobil iletim sistemidir, bu
sistemde ara katman yazlm, ktphaneler ve API C diliyle yazlmtr. Uygulama
yazlmlar ise, Apache harmony zerine kurulu java-uyumlu ktphaneler ihtiva
eden uygulama iskeleti zerinden alr. Android, derlenmi java kodunu altrmak
iin dinamik evirmeli (JIT) Dalvik sanal makinesini kullanr ve cihazlarn
fonksiyonerliini artran uygulamalarn gelitirilmesi iin alan geni bir
programc-gelitirici evresine sahiptir.

Android ile ilgili bilgileri verdikten sonra bir de googlein Temmuz 2005te satn
ald androidte bugne kadar ki gelimelere bakarsak.
Androidin Pazar Pay.

Dnyaca nl aratrma irketi IDC'nin verilerine gre dnya zerindeki akll telefon
sat rakam, 2015'in ilk eyreinde yzde 334,4 milyon adet olarak gerekleti.
Gnmzde bu byk pazarda yaran drt nemli mobil iletim sistemi var:
Android, iOS, Windows Phone ve BlackBerry 10.

Android'in bu pazardaki geliimini incelediimizde yine IDC'nin aratrmasna gre


2011'den bu yana dzenli olarak bydn ve pazarn hkimi konumunu srekli
olarak daha daha yukar tama eiliminde olduunu gryoruz. 2011'in ikinci
eyreindeki pazar pay yalnzca yzde 36,1 iken, bu rakam 2015'in ilk eyreinde
yzde 78'e ulat.
Android srmlerinin tarihine bakarsak

Android 1,0: HTC Dreamin iletim sistemi olan bu srm ile android iletim
sistemi adn duyurmaya balad. Bu srm kamera destei, web tarayc, wifi,
Youtube, alarml saat, galeri, bluetooth, sesli arama gibi zellikleri barndrmaktadr.

Android 1,1: 9 ubat 2009da yaynlanan bu srmde bir nceki sistemin


hatalarnn dzeltilmesi ve APIyi gelitirme zerine alt.

Android 1,5: Cupcake 30 Nisan 2009 da yaynland. Bu srmde Bluetooth


destei, kamera kayd, video gsterimi, Picasa, sk kullanlanlar klasr ve Widget'lar
kiiselletirebilme, yaz tahmin edebilen klavye ve animasyonlu ekran zellikleri
Android'e kazandrld.
Android 1,6: Donut 15 Eyll 2009da yaynland. Ekran znrl ykseltildi.
Android Market, galeride oklu silme, sesli Arama ve WVGA ekran znrl
destei geldi.

Android 2,0 ve 2,1: Eclair 29 Ekim 2009da yaynland. HTML5 ve Bluetooth 2.1
destei geldi. Sanal klavye ve yksek ekran znrl ile zelletirilebilen arayz
zellii eklendi. Google maps gelitirildi. Hareketli duvar katlar ve dijital
yaknlatrma zellikleri geldi.

Android 2,2: Froyo Mays 2010da yaynland. 720p ekran znrl destei,
USB, Wifi tarayc zellii ve Flash Player 10.1 destei geldi.
Android 2.3: Gingerbread ubat 2011de yaynland. oklu kamera ve oklu
dokunmatik destei eklendi. Video arama zellii eklendi.

Android 3,0: Honeycomb ubat 2011de yaynland. letim sistemi tabletlere


uyumlu hale getirildi.
Android 4,0: Ice Cream Sandwich Ekim 2011de yaynland. Yz tanma
fonksiyonlar ile NFC dosya paylam zellii eklendi. Mart 2012de Android market
adn Google play Store olarak deitirdi.

Android 4,1: Jelly Bean Temmuz 2012de kt. Ayn Anda iki uygulama ama
zellii kazandrld. Enerji verimlilii ve taklmadan kayan ekran eklendi.
Android 4.2: Jelly Bean Plus Ekim 2012de yaynland. oklu kullanc, 360
derece panoramik fotoraf kazandrld.
Android 4,2,2: 11 ubat 2013 tarihinde yaynland. Isnma ve donma problemleri
giderildi.
Andorid 4,3: Jelly Bean yaynland. oklu kullanc iin ebevent kontrol, oyunlar
iin 3.0 Open Gl Es destei, Akll bluetooth ve Wifi teknolojisi eklendi. Ayrca
uygulama izinleri bu srmle kontrol edilebilir hale getirildi.

Android 4,4: Kitkat 31 Ekim 2013te yaynland. Grsel arayzde bir ok deiiklik
yapld.
3 Kasm 2014 tarihinde Google Android 5.0 Lollipop srmn kartt. Tm
uygulamalar ve hizmetler Material Design altnda yenilendi.

2 Aralk 2014 tarihinde Google Android 5.0.1 gncellemesi yaynland.


19 Aralk 2014 tarihinde Google baz hata dzeltmeleri ieren Android 5.0.2
srmn yaynlad.
29 Mays 2015 tarihinde Google yapt I/O 2015 konferansnda Android M 6.0'
duyurdu ve nizleme srmn yaynlad. M = Marshmallow

Marshmallow ile detayl uygulama izinleri, gelimi parmak izi okuma,


Dndrlebilir ana ekran, Arayzde gelitirme gibi yeni zellikler eklendi.

Android uygulamalara eriebileceiniz ve kendi uygulamanz yaynlayabileceiniz


marketler listesi:

Google Play Store : $25 dolarlk cret ile ye oluyorsunuz.


https://play.google.com/store

Samsung App Store:http://www.samsung.com/tr/apps/mobile/galaxyapps/

Amazon app store: http://www.amazon.com/mobile-apps/b?ie=UTF8&node=2350149011

Opera App store: http://apps.opera.com/tr_tr/

Turkcell T Market: http://www.t-market.com/


Android Studio Blm 1

Android Studio Kurulum

Android Studio in..


ncelikle android studioyu indiriyoruz.Link iin Tklayn. Bir uygulama
yklemisinizdir. Yine ayn sistem. Eer Android studioyu kurarken jdk hatas
alrsanz bu adresten jdky indirip kurmanz gerekmektedir.
Jdky kurup bu hata ile karlarsanz..

Error: cannot start Android Studio. No JDK found. Please validate either
ANDROID_STUDIO_JDK, or JDK_HOME or JAVA_HOME points to valid JDK
installation. ECHO is off. Press any key to continue ..
zm :
1-Bilgisayarma sa tklayp zellikleri sein.
2-Gelimi tabna gein.
3-Ortam deikenlerine tklayn.
4-Sistem deikenlerinin altndan yeni deiken yaratn.
5-Adn JAVA_HOME.
6-Deerini C:\Program Files\Java\jdk1.7.0_25 olarak ayarlayn.
7-Sistem deikenlerinden path i bulun ve deerini C:\Program
Files\Java\jdk1.7.0_25\bin olarak deitirin.
Buradaki jdk1.7.0_25 yerine sisteminizdeki jdk versiyonunu yazmanz gerekiyor.
Sonra hatadan kurtulup android studioya balayabilirsiniz.
Resim zerinden anlatrsak;
Android Studio Programlama Blm 2
Giri ve Emlatrde Hello World Uygulamas

Androidi tanmaya ve her uygulamada olduu gibi Hello World yazdrmaya ne


dersiniz. lk ksmda herhangi bir kodlama yazmyor olacaz. Sadece bir balang
yapacaz. lk bata android studio'ya yakndan bakalm.

ncelikle Yeni Bir proje oluturma ksm ile balayalm.

File-> New -> New Project ile yeni bir proje oluturuyoruz.

Yeni proje olutura tkladktan sonra karmza Create New Project ksm geliyor..
Daha yakndan incelersek:

Application name: Uygulama ismini buraya yazyoruz. Dosyamzn ismi'de ayn


zamanda bu olmaktadr. Deitirmek iin location'u yaznz.

lk harf her zaman byk olmaldr. Yoksa hata alrsnz.Rakam ve iaret


ile balamamaldr.

Company Domain: Hayali bir irket ismi diye dnn.

Package name: Buras application isminize gre olumaktadr. Sizin yaptnz bir ey
yoktur.

Project location: Uygulamanzn yolu. Nereye kaydetmek istiyorsanz o dizini belirtin.


Sonraki ksmda uygulamay minimum hangi android iletim sisteminde altrmak
istediinize karar veriyorsunuz.Ayrca Tv Glass ya da Wear (akll saat,gzlk ya da
Televizyon) iin'de ayarlamalarnz burada yapyorsunuz.
Uygulamamzn activity layout yani tasarm ksmn burada ayarlayabilirsiniz. Bir
tavsiye eer dardan proje aktaryorsanz bo bir activity oluturun. Ve klasr olarak
tayn.
Bu ksm ise tasarm dediim Activity ksmnn isimlendirilmesidir. Buray kendinize
gre ayarlayabilirsiniz. Finish ile yeni projemiz'i oluturduk.

Yeni proje olutuktan sonraki grnm aadaki gibi.


imdi sadaki android proje
ksmn anlatacam.

Manifests: Android
programlama iin izin ksm
burasdr. rnein wifi'yi
kullanmak iin telefon'a bunun
iin izin almamz gerektiini
buraya yazcaz.

Java: Java kaynak kodlarn


burada bulunduracaz.

Res: Resource ksm'dr. Yani


kaynak kodlarmz burada
olucak. Menu ksm, Metin
yazlar, resim ve layout ksm..

drawable: Resim dosyalarmz


burada bulunduracaz.
Dosyalarmz PNG ya da JPEG
formatnda olabilir.

layout: Bu ksm tasarm


dosyalarmzn olduu
ksmdr. XML (extensible
markup language) dili ile yazlmtr. Buradaki tasarm dosyalarmz javada Oncreate
metodun'da arrz.

menu: Menu ksmn burada aktif edebiliriz.

mipmap: Uygulamanzn al logolarn ierir.

values: : Uygulamada kullanlan sabit deikenler burada saklanabilir. strings.xml


dosyas uygulamada kullanlan ve ekranlarda kullancya gsterilen her trl metni
saklar.

Gradle Scripts: Gradle, projelerimizi built etmemize yarayan yeni nesil bir sistemdir.
Gradle en gzel zellii test, debug, release esnasnda almanz gereken proje
paketlerini otomatikletirmektedir.
Aada tasarm ksm, Android manifest ve Java ksmnn ilk halleri gsterilmitir.
Hadi Hello World'u emlatr de altralm.

Manifest dosyamza bakarsak paketimizin ismi, iconumuzun bulunduu konumu ilk


alan sayfamzn izni gibi bilgiler burada tanmlanmtr.

Tasarm ksmnda ise Palette dediim yerden ektiimiz (srkle brak) ile buttonlar,
yazlari, layout ya da etiket gibi bir sr eleman kullanabilirsiniz. Sa alt tarafta
properties ksmnda aldnz elemanlara ait dzenlemeler yapabilirsiniz.(Boyutu,
Rengi gibi)

Elemanlar iinde bulundurduumuz ksm ise activity yani sayfa diyebiliriz. Bir sayfa
stack mant ile alr. En son eklenen sayfa en sttedir.
Geldik java ksmna. onCreate ksm bizim buluntuumuz activityde (tasarm
ekranmz) da ilemleri gerekletirdiimiz ksmdr. onOptionsItemSelected ile
men ayarlamalarn yapabiliyoruz.
Ben android studiodaki projelerimde emlatr olarak genymotion
kullanyorum. Kurulumu iin

Android studioda ki emlatr kullanmyorum. Sebebi ise tabiki de genymotion hem


ok hzl hemde pratik. Sizede neririm.

Emlatr yaptmz projeleri test etmemiz iin sanal bir android iletim sistemini
barndrdmz programdr. Projemizi burada test edeceiz.

Projemizi play tuuna basarak altrabilirsiniz.

lk uygulamanz yaptnz.Hello World


Android Studio Programlama Blm 3
Buton Tanmlama ve Android Manifest Dosyas

Bu dersimizde androidle ilgili sms uygulamas yapacaz. Sebebi ne derseniz aslnda


grldnden daha kolay bir programlama olduunu gstermek. lerdeki
konularada bir giri nitelii tamas.

ncelikle 2 tane textView tanmlayp 2 adet edittext'i 1 tane button aktif ederek
gnderceiz. Bu dersten rencekleriniz.

Android Manifest Dosyasn yakndan incelenilecek


Mesajlama ksmn android zerinden nasl gerekletii
Bir butona ilevsellik vererek onu aktif etme

Daha da basit indirgemek iin tasarm diyorum :

Soldaki paletta kutusu yani tasarm aralarnn bulunduu alandan 2 tane text View 2
tane editText ve 1 tane button alarak ekliyoruz.(Srkle brak ile ekrana srkleyin.)
Basit bir tasarm oluturduk bile.
Android'te kodlarmz java da ki MainActivity snfmza yazyoruz. Orada ncelikle 2
tane editText i tanmlayacaz.

Final deikenini aklarsam ncelikle tanmlanan ilk deiken deeri aldktan sonra
deitirilmemesidir. Telno olarak kalcak. Ayn mesaj da yle. Kullanmasanz da olur.

Sra Button olaynn aktiflemesine gelirse:

Button gonder=(Button)findViewById(R.id.button); Kalbn kullanacaz.


Buttonu idsini ekiyoruz. Gonder deikenine eitliyoruz.

gonder.setOnClickListener(new view.OnClickListener) {

public void onClick(View v){

Buras ise buttona tkladnzda ne olucak ksmdr. Buttonun ilevselliini burada


tanmlyoruz.

}}

Button tanmlanmas byle. Ben Smsmaneger' aktif etmesini ve editTextlerdeki


verileri ekerek mesaj gndermesini istedim. Olaymz bu kadar

Ve gerekli olan son bir ey ise en sonda daha yakndan inceliyeceimiz Android
Manifest dosyamz. Android sistemi bir uygulama bileenini balatmadan nce,
uygulamann AndroidManifest.xml dosyasn okuyarak bileenin varln kontrol
etmelidir. Bir uygulamaya ait btn bileenlerin uygulamann ana proje dizininde
olmas gereken bu dosya iinde bildirimi yaplmaldr.
Manifest dosyas uygulamaya ait bileenlerin bildirimine ek olarak
aadaki ilemleri de yapar:

> nternet girii veya kullanc bilgilerinin sadece okunur girii gibi kullanc izinlerini
belirlemek.

> Uygulamann gerektirdii minimum API seviyesini bildirmek.

> Uygulamann gerektirdii veya kulland donanm ve yazlm zelliklerini


bildirmek (kamera, bluetooth hizmeti gibi).

> Android API'leri dnda uygulamann gerektirdii API ktphaneleri (Google


Maps kthanesi gibi).

Tm uygulama bileenlerinin bildirimi benzer ekilde yaplmalr:

<activity> Aktivite elemanlar


<service> Hizmet elemanlar
<receiver> Mesaj alclar elemanlar
<provider> erik salayc elemanlar

Hzl ilemler :

application taglar arasnda biz kendi activitymizi koyuyoruz. zin alrken <uses-
permission android:name="Alncak isim"/> eklinde alyoruz.

activity android:name ve labei kullanarak istersek yeni bir activity iin izin alabiliriz.
Sonraki ksmlarda deinelecektir.
Uygulamay altrdnz da ilem yapmadn grceksiniz.Sebebi ise emlatrn
iinde herhangi bir sms gndercek ilev yapacak birim yok.. Telefondan
denediinizde sonuca ulaacaksnz. Uygulamann emlatrde almas. Telefonda
altrmak iinde apk dosyas yaratmalsnz. Apk dosyas ksm iin tklayn.

Bu dersimizde android ile ilgili bir uygulamann nasl yapldn, srecin nasl iledi,
bir uygulamada izin almaya ilk adm attk ve gzel bir uygulama yaptk. Aadaki
dersleri de inceleyerek daha da ileri seviye uygulama yapacaz. Bu dersi u sebepten
iledim tasarm olsun, kodlama olsun ok kolay olmasada androidi renmek kolay
ve hzldr.
Not:

findViewById: Onun idsiyle xmlde olan grnm bulur ve nesnemizi gsterir..

R.id :bizim hereyi iinde barndran zerinde pek deiiklik yapmadmz gen
classndan geliyor
Android Studio Programlama Blm 4
Intent Kavram ve Yeni Ekran Oluturma

ncelikle Intent Nedir?

Trke anlam olarak amatr. Ben buna amacnz ne ? Diyorum. Yapacamz


uygulamann yapsna gre farkl aktivite snflar oluturup, intentler aracl ile
bunlar arasnda gei yaparz. Android iletim sistemi olarak bir aktivitenin yada
servisin vb. birbirlerini armasn ve iletiime geebilmesini salamak iin ortak bir
yap oluturmutur. Bu yapya intent denmektedir. Intentler aracl ile baka bir
aktivitenin altrlmas istenebilir, hatta o aktiviteye baz bilgiler gnderilip, sonucu
istenebilir. Intentler ile baka kategoride uygulamalarda altrlmas istenebilir,
mesela uygulamanzda bir web sitesini grntlemek istiyorsanz, bir web tarayc
yazmak zorunda deilsiniz. Siz web tarayc amak istediinizi sylersiniz, gerekli
bilgileri verirsiniz, Android uygun olan program aar, eer birden fazla seenek var
ise kullancya sorar.

Intentler ikiye ayrlr, dolayl intentler ve dorudan intentler. Dolayl intentlere rnek
olarak web tarayc rneini verebiliriz. Dorudan intentler ise dorudan isim vererek
(kendimizin kontrol edebildii )uygulamalardr. imdi dorudan intent rnei ile
ekran geilerimizi nasl yaptmz greceiz.

Her zamanki gibi yeni projemizi atk. Sonrasnda yeni bir activity ve java dosyamz
oluturacaz.

ncelikle yeni bir activity oluturucaz. (layout -> Sa tk -> new -> Layout
Resource file)

sonra java dosyamz oluturalm. Java dosyasyla da yeni oluturduumuz layoutu


kontrol edeceiz. (Java -> sa tk -> New -> Java class)

Uygulama ok basit olucak. Bir tua bascaksnz ve dier ekrana ulaacaksnz.

ncelikle ilk activitye bir tane buton atn. 2. Yeni oluturulan activitye ise Android
uygulamasna Hogeldiniz balkl bir tane text atn.
1. Java dosyamzda ise setContentView altna

Button button=(Button)findViewById(R.id.button); // activitydeki butonu bul


button.setOnClickListener(new View.OnClickListener() {
//butona dinleme olay ver
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, startingPage.class);
//Butona basinca intent ile bu activityden yeni activitye git
MainActivity.this.startActivity(intent);//intenti balat
MainActivity.this.finish();
}
});

yaptrn. Burada ncelikle bir butonu aktik ettik. Yani bir dinleme verdik. Buttona
bir ey olunca olay olunca onun iindeki ilemi gerekletir diye dnebilirsiniz.
Intent intent=new Intent(Butonun bulunduu ksm, butonun gidecei class) ksm
hep bu ekil olur.Resmi ;

imdi 2. oluturduumuz ve benim adn startingPage verdiim java dosyam


doldurmaya.

package com.example.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

/**
* Created by um on 20.7.2015.
*/
public class startingPage extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}

Aynen bu ekil olucak. setContentViewde ki main benim layoutta yeni oluturduum


dosyamn ad. Resmi ;

Bunlar yaptktan sonra uygulamay altrn. lk sayfa geldiini ve buttona


tklaynca kapandn grceksiniz. zin ksmn almadk. Android Manifest
Dosyasnda imdi yeni bir activity icin izin almamz gerekiyor.

Genel kavram olarak gstereceim.

<activity

Android:name=.classsmin

></activity>

Uygulamanz calstrn. Aadaki grnty elde ediceksiniz..


Android Studio Programlama Blm 5
Thread Kavram ve Splash Ekran
(Android Studio Giri Sayfas yapma)

Android dersimizde Splash ekran ve thread kavramn grceiz. Thread i parac


demektir. Bir programn paralel olarak alan ve birbirine baml yada bamsz
ilemler yapan alt paracklara verilen isimdir. 2 sayfa oluturacaz. Yukardaki
derste bunun nasl yapldn renmitik.

ncelikle 1 tane layout dosyas oluturcaz. (layout -> Sa tk -> new -> Layout
Resource file) ve 1 tane da java dosyas oluturcaz. (Java -> sa tk -> New ->
Java class)

Oluturduktan sonra android manifest'te yeni bir tane java dosyas olutuunu haber
vericez. Oluturduumuz java dosyasnn ismini name=Java dosyanz ve etiketinizi
burada oluturuyorsunuz.

Java dosyamza bir thread aktif edelim. setContentView altna u kodlar atcaksnz.
Kolaylk olsun diye kodlar..

Thread MyScreen = new Thread() {


public void run() {
try {
sleep(5000);
//5 saniye sonunda class davet et.
startActivity(new Intent(getApplicationContext(),startingPage.class));
}
catch (InterruptedException e)
{
e.printStackTrace();
}
finally
{
finish();
}
}
};
MyScreen.start();
}

activity_main dosyamda bir tane text attm.


Main adn koyduum layoutumu bo braktm.

Eer dosyalar merak


ediyorsanz soldaki resim
gibi olucak

Ve altrdktan 5 sn sonra
yeni bo activity gelicek.
Yaknda ilerini de
dolduracaz.
Andoid Studio Programlama Blm 6
Uygulamay tam ekran yapma
Android studio'da uygulamasn tam ekran yapmak isteyenler olucaktr. Bildirim
ubuu ksmndan kurtulmak iin izlenecek yollar.

1- Main activity'iz kaltm olarak Activity snfndan almaldr. Yani gsterimi :


public class MainActivity extends Activity {

2- Hangi layoutta kullanacaksanz ncelikle setContentView(layout)'an nce


kodumuzu yaptryoruz.

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

3- Uygulamay altrdmzda tam ekran olduunu gryoruz.

Resimler :
Android Studio Programlama Blm 7
Button Stilli Tanmlama

Androidte button stilli dediimiz olay bir buttona tklaynca eklinin deimesidir.

Mesela Yandaki 2 simgeden birine tkladmzda dieri gelicek.

ncelikle bu 2 resmi kaydedin ve projenizin dizinine gelerek res klasrnde ki


drawable'ye atn. ok karmak isimler de sorun kabiliyor. Ben olsam a b gibi basit
harfler kullanrm. Sonra drawable klasrne sa tk Drawable Resource
file oluturun. Drawable -> Sa Tk -> Drawable Resource file

Bir xml dosyas oluturup tklama olaylarn gzlemliyeceiz. Gonder.xml tanmlayn.

Resim :

Kodlar:

<selector xmlns:android="http://schemas.android.com/apk/res/android" >


<item android:state_enabled="true"
android:state_pressed="false"
android:drawable="@drawable/a"/>
<item android:state_enabled="true"
android:state_pressed="true"
android:drawable="@drawable/b"/>
</selector>

Sonraki ilemde ise yapacamz olay style.xml de ( values'in orada ki)

Resim :

Kodlar :
<style name="gonder" parent="@android:style/Widget.Button">
<item name="android:background">@drawable/gonder</item>
</style>

Bir sonra ki adm ise activity_main.xml'de bir button nesnesi atamak ve iini bo
brakmak. F2 tuu ile d ve nesnenin iini ayarlayabilirsiniz. Sonra ise sa altta ki
properties'ta style ksmnda gonder'i semek ve resim olarak 1 resim gelicek.

Uygulama bu kadar altralm..


Tklamadan nce Tkladmz da
Android Studio Programlama Blm 8
Layoutlar

Android dersi iin programlama kadar nemli bir konu varsa oda tasarm'dr.
Tasarm'da bugn Layout yani nesnelerimizi, itemlerimizi doru ve gzel bir ekilde
kullanclarmza sunduumuz yeri grceiz.

1-)LinearLayout'lar:

Nesnelerimiz dorusal eklenmektedir. Eer vertical linear layout kullanrsak alt


alta, horizontal linear layout kullanrsak yan yana eklenir.

Horizontal' kullanarak dzgn bir ekilde layout tasarm gerekletirdim. Aynsn


sizde yapabilirsiniz. 2 tane linear layout kullandm..

Peki horizontal ile vertical arasndaki fark ne ? Biri yan yana dizerken dieri vertical
yani alt alta nesneleri yerletirir. Eer bir layout atp tm ekran kapattndan
ikayetciyseniz layout'un boyutunu matct_parent deilde wrap yapmay deneyin.

2-)Relative Layout:

Otomatik sayfa aldnda gelen Layouttur. Yani nesnemizi(Burda Buton) istediimiz


yerde kullanabiliriz..Ve benim en ok kullandm bir layout eididir. Direk
istediimiz yerde nesnelerimizi ayarlayabiliyoruz.
3-)FrameLayout:

Bu layout tipinde nesneler st ste biner. Genelde ayn boyutlardaki butonlarn st


ste gelip, birinin kaybolduunda dierinin gzkmesi iin kullanlr. Bunun iin, bir
nceki rnekte xml ksmnda LinearLayout yazsn silipFrameLayout yazabiliriz
ya da ara panelinden tekrar bir FrameLayout ekleyebiliriz. Tabiki yeniden
eklemek daha iyi olacaktr.
4-)TableRow:

Bir tablo dzeninde nesnelerimizi yerletiririz.


Android Studio Programlama Blm 9
WebView Kullanm ve Uygulamada Web Sayfas Ama

Bu ders'te web sayfalar ile etkileimi grceiz. webView iinde bir web sayfas
amay grcez. Webview, hem uzak sunuculardaki web sayfalarn hem
de uygulamanz ierisine koyduunuz html sayfalarn grntleyebileceiniz bir
bileendir. Bu bileeni kullanarak uygulamanzdan kmadan web sayfalarn
grntleyebilirsiniz.

Basit bir umiitkose.com'u ama ilemi gerekletirelim. ncelikle Activity'de


paletta'dan bir webView srkleyip brakyoruz.

Bir sonraki adm'da ise kod ksmmz var. ncelikle webView'i tanmlyoruz.
setJavaScricptEnabled ile java scriptleri altryoruz. setWebViewClient ile
kendimiz taraycda amamasn salyoruz. load.URL ile de yklenmesini salyoruz.
Projenin son adm ise her zamanki gibi izinler.

<uses-permission android:name="android.permission.INTERNET"/> satrn android manifest'te


ekliyerek kullanabilirsiniz.
Uygulama altnda..

Daha gelimi bir uygulama olan Uygulama 2 internet taraycs yapma Yazsn
incelemenizi neririm.
Android Studio Programlama Blm 10
Androidte Titreim Kullanm

Androidte bu dersimizde Vibrator snfn kullanacaz. ncelikle arayzmze bir


Button atalm.Button'a basnca ka ms titreim olucan ayarlyalm..

Arayze bir buton braktk. Sonrasnda ise kullancamz snf Vibrator.

Kod olarak

Vibrator degisken=(Vibrator).getSystemService(Context.VIBROTOR_SERVCE);
komutunu ekleyip
degisken.vibrate(200); diyerek titreimi onaylatyoruz.
Burada 200 ms olarak alnr ona gre hesaplama yapnz.

Ve tabiki izin iin..

<uses-permission android:name="android.permission.VIBRATE" />


Komutunu ekliyoruz.

Eer telefon ses modu komutlarn kontrol edicekseniz yararl olacak komutlar:
AudioManager sesKontrol = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

switch (sesKontrol.getRingerMode()) {

case AudioManager.RINGER_MODE_SILENT:

Log.i("voiceControl","Telefon Mode: Sessiz");

break;

case AudioManager.RINGER_MODE_VIBRATE:

Log.i("voiceControl"," Telefon Mode: Titreim");

break;

case AudioManager.RINGER_MODE_NORMAL:

Log.i("voiceControl"," Telefon Mode: Normal");

break;

Android Studio'da apk dosyas oluturmak iin tklayn.


Android Studio Programlama Blm 11
Androidte Yaz Tipi Deitirme

ncelikle yaz tipi deitirmez iin bizim fonts'lara ihtiyacmz var. Fontslar ierisinde
karakterleri barndran yaz dizisidir. tff uzantldr. Bir ka tane gzel fonts olan
siteler aadadr.

http://www.urbanfonts.com/fonts.php?fontauthor=2761 burdan gzel olan yaz


tiplerini indirin arkadalar..

http://www.fonttr.com/trliste.aspx?sayfaNo=13&grup=eitli&sys=1

ncelikle indirdiimiz ttf uzantl yaz fontlarmz assets klasr altnda fonts
klasrnn iine atyoruz. Yoksa sa tk new folder demeniz yeterli olucaktr.

Assest dosyasn ister res klasrnn dosya konumuna elle oluturabilirsiniz.


sterseniz android studio iinden aadaki yollar izleyerek oluturabilirsiniz.
Oluan assests dosyasna sa tk ile bir directory iinde fonts klasr oluturun ve
oneday.tff'i ben kendim iin indirdim sizde kendinize zel tff'i indirip iine atnz.

kinci i Tasarm oluturmak.. Edittext,textview ve button olay u. Edittext'e


yazdmz yaz buttona basyoruz setiimiz font'ta bize text viewde gsteriyor..

Xml Kodumuz:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="36dp"
android:layout_marginTop="136dp"
android:text="Button" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1"
android:layout_alignParentTop="true"
android:layout_marginTop="79dp"
android:text="TextView" />

<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_alignParentTop="true"
android:layout_marginTop="33dp"
android:ems="10" >

<requestFocus />
</EditText>

</RelativeLayout>

Javada ksmndaysa, Edittext'ten girdiimiz karakterleri string tipinde alyoruz ve


textViewe setText komutu ile yazdryoruz..

Button'a basnca da t1.de font oneway.ttf ayarladmz font olacak.

Java Kodumuz:
package com.example.yazitipi;

import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {


Button b1;
EditText e1;
TextView t1;
Typeface tf1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
e1=(EditText)findViewById(R.id.editText1);
t1=(TextView)findViewById(R.id.textView1);
b1=(Button)findViewById(R.id.button1);
tf1=Typeface.createFromAsset(getAssets(), "fonts/oneway.ttf");
b1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
t1.setText(e1.getText().toString());
t1.setTypeface(tf1);
}
});
}

}
Uygulamamzn Resimli hali: stteki editText'teki yaz ile altnda ki textView'deki
yaz farkl
Android Studio Programlama Blm 12
Android Studio Mac Adresi, retici ve Model Bilgileri

Android programlama yazarken bazen Mac Adresi, Model ya da retici bilgileri gibi
baz bilgilere ihtiyacmz olabilir. imdi onlarla ilgili rnek yapacaz.

import android.os.Build; -> Build snfnda bir ok bilgilere eriebiliyoruz.


Mesela uan stte yazdm bilgiler.

imdi Hemen balyalm. Yeni Projemizde ncelikle bo 3 tane textView atyoruz..


Tasarm ksm ve Kodu..
Layout Kodumuz :

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_height="wrap_content" android:text=""
android:layout_width="wrap_content"
android:id="@+id/textView1_model">
</TextView>

<TextView
android:id="@+id/textView2_mac"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge" >

</TextView>
<TextView
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_height="wrap_content" android:text=""
android:layout_width="wrap_content"
android:id="@+id/textView3_manufacture">
</TextView>
</LinearLayout>

Java Kodumuz :

package com.example.myapplication;

import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.TextView;

public class startingPage extends Activity {

private TextView mac,model,manufacturer;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
model=(TextView) findViewById(R.id.textView1_model);
mac=(TextView) findViewById(R.id.textView2_mac);
manufacturer=(TextView) findViewById(R.id.textView3_manufacture);
model.setText("Model => "+ Build.MODEL);

String mac_adresi=get_mac_address();
mac.setText("Mac => "+mac_adresi);
manufacturer.setText("Manufacturer => "+Build.MANUFACTURER);

private String get_mac_address()


{
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

try{
WifiManager wifiMan = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInf = wifiMan.getConnectionInfo();
return wifiInf.getMacAddress();
}
catch (Exception e) {
return "00:00:00";
}
}
}

ve android Manifest Dosyamz.

<?xml version="1.0" encoding="utf-8"?>


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication" >

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".startingPage"
android:label="@string/app_name" >

</activity>
</application>

</manifest>

Uygulamann almas :
Android Studio Programlama Blm 13
Android Studio Option Men oluturma

Men uygulamamz anlatacam. Mesela android telefonda sa tu menye


tkladnz hakkmda, k sayfas geldi diye dnn. imdi onun kodlarla nasl
yaplacan grceiz.

ncelikle yeni bir android Sayfas oluturcaz ve menye basp 2. sayfa mesela bu
hakkmda sayfas olsun.Sayfaya tkladmda 2. activity'e gei yapsn. k tuuna
basnca da ksn.. Yeni sayfa oluturma vs. tekrar renmek istenlere..

Uygulamamzn activity ksm ve kodlar : Ana sayfa'da sa altta bu ekilde olucak..


k Diyince kcak. Yeni sayfa diyince yeni sayfa gelicek.
Java Kodlarmz :

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

switch (id){
case R.id.item1: System.exit(0);
return true;
case R.id.newpage:
Intent a=new Intent(MainActivity.this,startingPage.class);
startActivity(a);
return true;
}

return false;
}

Resim :
Menu.xml'de men klasr iinde ise 2 tane yeni item ekleyeceiz. Bunlardan 1 tane
vardr ve ad da byk ihtimal settings'tir. Ayarlayarak halledebilirsiniz.

Uygulamay altrp men tuuna basnca yukardaki uygulama gibi bo ekranda


uygulamay kapat ve yeni sayfa a kcaktr.
Android Studio Programlama Blm 14
Android Studio Button Resmi Deitirme, Arama Yapma

Bu blmde Arama yapcaz. Bildiiniz numara arycaz. Bir buton olcak bu butona
basinca direk arama yapcaz. Hadi 155 i arayalm tabi iletmeyelim..

imdi ncelikle uygulamamza bir buton atcaz.

Yeni Projemizde ncelikli olarak butonumuzu res klasr iindeki drawable-hdpi


iine atyoruz..(srkle brak)

imdi ise styles'de butonumuzun grseli tanmlyoruz..(Values Klasrnn iinde)

<style name="c" parent="@android:style/Widget.Button">


<item name="android:background">@drawable/g</item>

Kod bu grnt ise..

imdi ise Bir button'u layoutumuzun iine atn. Ve sa tk Edit Style ile button
grnmn deitiriyoruz..
imdi ise aramamz iin gerekli java kodumuz.ntent ile Bir numaray aradk.. ve en
son activitymizi altrdk..
Biz bunlar yaptkta zin aldk m? Tabiki de hayr. Android manifestte izin iin
Permissions ve Add Sonra name de CALL PHONE seelim..

Hadi altralm.. altrdmzda kodlarmzn grnm..


Ksa olmas iin buttonu image button olarakta ayarlayabilirsiniz. Tabi
resmi bir button gibi gstercektir.

UR: Burada kullandmz uri ksm (uniform resource identifier)


nizami kaynak belirteci olarak gemekte ve bir kayda ya da veriyi
isimlendirmek iin kullanlmaktadr. Kayna nitelendirir.
Android Studio Programlama Blm 15
Android Studio Bluetooth Kontrol

Bu yazmda android studio da bluetooth kontrolne bakacaz. Bluetooth'u


gnmzde kullanmayan akll telefon kalmad. Bluetooth elektronik aletlerin ksa
mesafelerde (10 metre gibi) birbirleri ile iletiim kurabilmesini salayan teknolojidir.
Bluetooth ile cihazlar aras dosya paylam yaplabilir. Ayrca Bluetooth destekli
kulaklklar ile ses iletiimi de salanabilir.

Bir cep telefonu ile bir tableti, laptop bilgisayar ya da PDA'y Bluetooth aracl ile
birbirine balayp internete girmeniz mmkn olabilir.

imdi sizinle bir android cihazda bluetooth ama, kapama ve grnr yapma
ilemlerini yapcaz.

Tasarm ksmnda 3 tane button kullanacaz. A, Kapa ve grnr yap olucak


bunlar..

activity_main kodlarmz :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Ac"
android:id="@+id/ac"
android:layout_gravity="center_horizontal" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Kapat"
android:id="@+id/kapat"
android:layout_gravity="center_horizontal" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gorunur Yap"
android:id="@+id/gyap"
android:layout_gravity="center_horizontal" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView"
android:layout_gravity="center_horizontal" />
</LinearLayout>
</RelativeLayout>

Sonraki ilem ise java kodlarn kullanmak olucak. 3 buttonu tanmladk. Burada
BluetootAdapter snfn kullancaz. Bluetooth'un durumunu alaraktan button'a
ilevlerini vericez.

BluetoothAdapter.Action_Request_enable kullanarak ama istei ilemini


gerekletiririz.

BluetoothAdapter.Action_Request_discoverable kullanarak grnr yapma


istei ilemini gerekletiririz.
Kapatmak iin ise adaptorumuzu disable modunu kullanrz.

JAVA KODLARIMIZ :

package com.umiitkose.myapplication;

import android.bluetooth.BluetoothAdapter;
import android.content.Intent;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;

public class MainActivity extends Activity {

Button ac;
Button kapat;
Button gorunurYap;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

ac=(Button)findViewById(R.id.ac);
gorunurYap =(Button)findViewById(R.id.gyap);
kapat=(Button)findViewById(R.id.kapat);
final BluetoothAdapter adaptor = BluetoothAdapter.getDefaultAdapter();
ac.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(adaptor == null )
{
Toast.makeText(MainActivity.this, "Blueetoth Aygt Bulunamad",
Toast.LENGTH_SHORT).show();
}

else
{
if(!adaptor.isEnabled())
{
Intent bluetoothBaslat = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(bluetoothBaslat,1);
Toast.makeText(MainActivity.this, "Bluetooth Aygt Ak", Toast.LENGTH_SHORT).show();
}
else {adaptor.disable();}
}
}
});
gorunurYap.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

Intent gorunurYap = new Intent (adaptor.ACTION_REQUEST_DISCOVERABLE);


startActivityForResult(gorunurYap,1);
Toast.makeText(MainActivity.this, "Grnr Hale geldi", Toast.LENGTH_SHORT).show();
}
});
kapat.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(!adaptor.isEnabled())
{}else{
adaptor.disable();
Toast.makeText(MainActivity.this, "Kapatld", Toast.LENGTH_SHORT).show();
}
}

});
}
}

Ve geriye 2 tane izin almamz gerekmektedir. Android Manifest Dosyamzda


<application></application> taglarnn stne

<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>

zinlerimizi ekleriz.

Emlatrde denerseniz hata alcaksnz'dr. Emlatrde blueetoth aygt


bulunmamaktadr. Apk dosyas ile telefonunuz'da denerseniz altn grceksiniz.

Android Studio'da apk dosyas oluturmak iin tklayn.

Uygulamann grnts :
Android Studio Programlama Blm 16
Android Studio Alert Dialog

Android studio'da Alert Dialog konusuna geldik. Alert Dialog bizim ufak bir pencere
ile ynlendirmeler yapmamza yarayan bir uygulama kullanc diyalog penceresi
diyebiliriz. nk ufak bir pencere alr ve ne yapmak istersiniz diye sorar. rnein
Aadaki resimde ki gibi..

Alert Dialog kullanarak bir mesaj kullancya sunabiliriz. Mesela geri tuuna basnca
uygulamadan kmak m istiyorsunuz ya da bir butona basnca bir uyar penceresi
karabiliriz. Birazdan onun rneini grceiz.

ncelikle Kodlara Geelim.. Layout ksmnda bir ilem yapmamza gerek yok. Sadece
bir button atn ve Android Manifest'te de bir ileme gerek yok. Hepsi sadece java
kodu ile hallediceiz. ncelikle geri buttonuna basnca gitmesi ksm..

public boolean onKeyDown(int keyCode, KeyEvent event) {


if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
//Eer geri butonuna baslrsa

Burasn ncelikle code -> Override -> onKeyDown ksmndan getirin.


Sonrasnda ise keyCode'a bir tklama olaynda ki Arka Back tuuna baslrsa
alglamasn istiyoruz.

final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);


builder.setTitle("Uyar !!");
builder.setMessage("Web sitesi Alsn m?");
builder.setCancelable(false);
builder.setIcon(R.drawable.a);

builder.setPositiveButton("Evet", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "Alyor.", Toast.LENGTH_LONG).show();
}
});
builder.setNegativeButton("Hayr", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "Pekala.", Toast.LENGTH_LONG).show();
}
});

AlertDialog dialog = builder.create();


dialog.show();
}

Uygulamada ki 2 ksmda ki kodlar da aada. AlertDialog mantn anlatyorum.


ncelikle bir ktphaneden bulunan activity'de bir alertDialog pencere oluturulmas
istendi.

builder.setTittle: En yukarda ki uyar..

builder.setMassage : Kullanya sunucanz seenek, mesaj..

builder.setCancelable(false) : Burada ki false bu mesaj cevaplamadan dialoga bir


cevap vermeden dialog kapanmycak demek. True ya da yazmazsanz o zamanda
ekranda bir yere tklayarak bu ksmdan kurtulabilir. Yani dialogumuzu cevaplama
zorunluluu klyoruz.

Geri kalan ilemler de evet ve hayr adnda iki ksm oluturup yaplan cevaba gre
toast mesaj gstermek ya da geri butonunda ki gibi uygulamay kapatmak.

Uygulamann kodlar ve alma resimleri aadadr. Baarlar..

Kodlar :

package com.umiitkose.egitim2;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
//Eer geri butonuna baslrsa

try{
AlertDialog.Builder alertDialogBuilder=new AlertDialog.Builder(this); //Mesaj Penceresini
Yaratalm
alertDialogBuilder.setTitle("Programdan klsn
M?").setCancelable(false).setPositiveButton("Evet", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int id) { //Eer evet butonuna baslrsa
dialog.dismiss();
android.os.Process.killProcess(android.os.Process.myPid());
//Uygulamamz sonlandryoruz.
}

}).setNegativeButton("Hayr", new DialogInterface.OnClickListener() {


//Eer hayr butonuna baslrsa

@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "Programdan kmaktan vazgetiniz.",
Toast.LENGTH_SHORT).show();
}
});

alertDialogBuilder.create().show();
//son olarak alertDialogBuilder' oluturup ekranda grntletiyoruz.
return super.onKeyDown(keyCode, event);
}
catch(IllegalStateException e){ //yapmz try-catch blogu ierisine aldk
//hata ihtimaline kar.
e.printStackTrace();
}
return true;
}
return super.onKeyDown(keyCode, event);
}

protected void onCreate(Bundle savedInstanceState) {


// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button a=(Button)findViewById(R.id.button);
a.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);


builder.setTitle("Uyar !!");
builder.setMessage("Web sitesi Alsn m?");
builder.setCancelable(false);
builder.setIcon(R.drawable.a);

builder.setPositiveButton("Evet", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "Alyor.", Toast.LENGTH_LONG).show();
}
});
builder.setNegativeButton("Hayr", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "Pekala.", Toast.LENGTH_LONG).show();
}
});

AlertDialog dialog = builder.create();


dialog.show();
}

});
}}
Android Studio Programlama Blm 17
Android Studio Progress Dialog

Android studio 'da progress dialog'u grceiz. ncelikle nedir bu progres Dialog?
Progress Dialog belirli bir ilem yaparken ilemin uzun srmesine karlk
kullanclara sunduumuz uyar penceresidir. Mesela Dosya indirirken ki 100'e kadar
dolma ilemi. Hadi bunu biz bir progress rneinde yapalm

Activity_main , Layout Kodumuz : Sadece 1 tane button attk.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Progress Dialog Tkla"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />

</RelativeLayout>

Java Kodlarmz :

package com.umiitkose.egitim2;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

/**
* Android ProgressDialog example
* @author Prabu Dhanapal
* @version 1.0
* @since SEP 01 2013
*
*/
public class MainActivity extends Activity {
Button button;
ProgressDialog progressDoalog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
progressDoalog = new ProgressDialog(MainActivity.this);
progressDoalog.setMax(100);
progressDoalog.setMessage("Ykleniyor...");
progressDoalog.setTitle("Progres Dialog rnei");
progressDoalog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDoalog.show();
new Thread(new Runnable() {
@Override
public void run() {
try {
while (progressDoalog.getProgress() <= progressDoalog
.getMax()) {
Thread.sleep(200);
handle.sendMessage(handle.obtainMessage());
if (progressDoalog.getProgress() == progressDoalog
.getMax()) {
progressDoalog.dismiss();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}

Handler handle = new Handler() {


@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
progressDoalog.incrementProgressBy(1);
}
};
});
}

Uygulamamzn almas :
Android Studio Programlama Blm 18
Android Studio Rating Bar

Android studio'da rating Bar kullanmna geldik. Rating bar mesela bir ilem
yapacaksnz puanlama oylama sistemi. Anket sistemi gibi dnn. Onun iin bir
puan sistemi oluturdunuz. te burada Rating bar kullancaksnz.

Layout'umuza ncelikle 1 tane rating bar, 1 tane button ve sonuc adl text View
oluturduk.

Activity_main Kodlar :

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
android:id="@+id/oylaTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Oyla"
/>

<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:stepSize="1.0" />

<Button
android:id="@+id/gonderButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gnder" />

<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<TextView
android:id="@+id/sonucTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sonu : "
/>

<TextView
android:id="@+id/sonucCiktiTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
/>
</LinearLayout>

</LinearLayout>

Java Kodumuz ise :

package com.umiitkose.egitim2;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RatingBar;
import android.widget.Toast;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {


private RatingBar ratingBar;
private TextView ratingDegeri;
private Button gonderButton;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

addListenerOnRatingBar();
addListenerOnButton();

public void addListenerOnRatingBar() {

ratingBar = (RatingBar) findViewById(R.id.ratingBar);


ratingDegeri = (TextView) findViewById(R.id.sonucCiktiTV);

//Rating deitii anda bunu TextView'da grntle


ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {

ratingDegeri.setText(String.valueOf(rating));

}
});
}

public void addListenerOnButton() {


ratingBar = (RatingBar) findViewById(R.id.ratingBar);
gonderButton = (Button) findViewById(R.id.gonderButton);

gonderButton.setOnClickListener(new OnClickListener() {

public void onClick(View v) {


//Buttona tklandnda o anki rating deerini ieren bir toast mesaj gster
Toast.makeText(MainActivity.this,
String.valueOf(ratingBar.getRating()),
1).show();

}
});

}
}

Uygulamay altrdmz da :
Android Studio Programlama Blm 19
Android Studio checkBox Kullanm

Android studio'da checkbox kullanmn grceiz. Trke de iaret kutucuu olarak


adlandrlan checkbox'u anket rnei olarak mesela Cinsiyet sorusuna iaretlediiniz
Erkek Bayan rnei gibi dnebilirsiniz.

ncelikle bir tasarm oluturalm. Tasarm bir textView'deki Hangi takm


tutuyorsunuz sorusuna 6 tane checkbox'tan birini seerek cevap vermesi ile olsun.
Gnder butonuna basnca da "Tuttuunuz Takm -aretlediimiz-" ksm olsun.

activity_main Kodu :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:orientation="vertical" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hangi Takimi Tutuyorsunuz ?"
android:textSize="16sp"
android:textStyle="bold"
/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical" >

<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Beikta"
android:checked="false" />

<CheckBox
android:id="@+id/checkBox2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Galatasaray"
android:checked="false" />

<CheckBox
android:id="@+id/checkBox3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bursaspor"
android:checked="false" />
</LinearLayout>

<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical" >

<CheckBox
android:id="@+id/checkBox4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fenerbahe"
android:checked="false" />

<CheckBox
android:id="@+id/checkBox5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Trabzonspor"
android:checked="false" />

<CheckBox
android:id="@+id/checkBox6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Dier"
android:checked="false" />
</LinearLayout>
</LinearLayout>

<Button
android:id="@+id/gonder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gnder"
android:layout_marginTop="10dp"
android:layout_gravity="center_horizontal" />

</LinearLayout>

Java Kodu :

Java kodumuzda ncelikle nesnelerimizi tanttk.

cb1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(cb1.isChecked())
Toast.makeText(getApplicationContext(), buttonView.getText(),
Toast.LENGTH_SHORT).show();
}
});

Kodu ile cb1 seili ise bir Toast mesaj gsterdik. Tkladmz kutucuk yaz olarak
nmze kcak. takim isimli String deikenimizde her checkbox iin ischecked()
metodu ile seili olup olmadn seili ise de button'a tklaynca Toast eklinde
gstermesini istedik.
Genel hali ile Checkbox Kullanm MainActivity kodlar..

package com.umiitkose.egitim2;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Toast;

public class MainActivity extends Activity {

private CheckBox cb1;


private CheckBox cb2;
private CheckBox cb3;
private CheckBox cb4;
private CheckBox cb5;
private CheckBox cb6;
@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//Tasarmdaki Checkbox'lar ekiyoruz.


cb1 = (CheckBox)findViewById(R.id.checkBox1);
cb2 = (CheckBox)findViewById(R.id.checkBox2);
cb3 = (CheckBox)findViewById(R.id.checkBox3);
cb4 = (CheckBox)findViewById(R.id.checkBox4);
cb5 = (CheckBox)findViewById(R.id.checkBox5);
cb6 = (CheckBox)findViewById(R.id.checkBox6);

//CheckBox'larn Listener'larn tanmlyoruz.


cb1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(cb1.isChecked())
Toast.makeText(getApplicationContext(), buttonView.getText(),
Toast.LENGTH_SHORT).show();
}
});
cb2.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(cb2.isChecked())
Toast.makeText(getApplicationContext(), buttonView.getText(),
Toast.LENGTH_SHORT).show();
}
});
cb3.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(cb3.isChecked())
Toast.makeText(getApplicationContext(), buttonView.getText(),
Toast.LENGTH_SHORT).show();
}
});
cb4.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(cb4.isChecked())
Toast.makeText(getApplicationContext(), buttonView.getText(),
Toast.LENGTH_SHORT).show();
}
});
cb5.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(cb5.isChecked())
Toast.makeText(getApplicationContext(), buttonView.getText(),
Toast.LENGTH_SHORT).show();
}
});
cb6.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(cb6.isChecked())
Toast.makeText(getApplicationContext(), buttonView.getText(),
Toast.LENGTH_SHORT).show();
}
});

// Butonu tanmlyoruz ve tklandnda iaretli klar ekrana basyoruz.


Button show = (Button) findViewById(R.id.gonder);
show.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String takim="Tuttuunuz Takm : \n";
if(cb1.isChecked())
takim+= " "+cb1.getText();
if(cb2.isChecked())
takim+= " "+cb2.getText();
if(cb3.isChecked())
takim+= " "+cb3.getText();
if(cb4.isChecked())
takim+= " "+cb4.getText();
if(cb5.isChecked())
takim+= " "+cb5.getText();
if(cb6.isChecked())
takim+= " "+cb6.getText();

Toast.makeText(getApplicationContext(), takim, Toast.LENGTH_LONG).show();


}
});
}
}
Android Studio Programlama Blm 20
Android Studio Radio Button

Android Studio'da sra Radio Button kullanmnda. Radio button web sayfalarndaki
oka kullandmz checkbox gibi bir iaret kutucuu diyebiliriz. CheckBox'tan fark
ise checkbox'ta birden fazla iaretiyi seebilirken, Radio Button'da tek bir iaretiyi
sememiz gerekmektedir. Kodlamaya Balarsak

ncelikle activity_main :

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<RadioGroup
android:id="@+id/radioSex"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<RadioButton
android:id="@+id/radioMale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Erkek"
android:checked="true" />

<RadioButton
android:id="@+id/radioFemale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bayan" />

</RadioGroup>

<Button
android:id="@+id/btnDisplay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gonder" />

</LinearLayout>

MainActivity kodlarmz:

Bir buton'da iaretli olan radio button'u aldk. Button'a tklandn'da radio
Group'taki seili d'yi aldk ve button'da bir Toast Mesaj ile gsterdik.

package com.umiitkose.egitim2;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

public class MainActivity extends Activity {

private RadioGroup rG;


private RadioButton rB;
private Button gonder;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rG= (RadioGroup) findViewById(R.id.rG);
gonder= (Button) findViewById(R.id.gonder);
gonder.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = rG.getCheckedRadioButtonId();
rB= (RadioButton) findViewById(selectedId);
Toast.makeText(MainActivity.this, rB.getText(), Toast.LENGTH_SHORT).show();
} });
}
}

Uygulamann almas :
Android Studio Programlama Blm 21
Android Studio Buttonlarn tek bir listenir ile kontrol

Bu seferki dersimizin amac switch case yaps kullanarak birden fazla butonu tek bir
listener ile kontrol edicez. Yani biz her button iin tek tek tklama olay tanmlamtk
imdi ise tek bir tklamada hepsini kontrol ediceiz. Mesela 1 button 2 sayy toplasn.
1 butonumuz text View'e Ali yazdrsn. 1 Buton'da Toast Mesaj gstererk Button1 'e
tkladnz desin.

Tasarm Ksm:

Tasarmn Kodlar :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_below="@+id/button2"
android:layout_centerHorizontal="true" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button2"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="101dp" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button3"
android:layout_below="@+id/button"
android:layout_centerHorizontal="true" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/textView"
android:layout_below="@+id/button3"
android:layout_centerHorizontal="true"
android:layout_marginTop="84dp" />

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_below="@+id/editText"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />

</RelativeLayout>

Java Kodumuz : View.OnClickListener'dan 'dan kaltm implement alyoruz. Ve


butonlarmz tantyoruz. ve hepsini tek bir noktada tklama veriyoruz. Altta ise
aldmz getId'leri ile her buton'un idsi iin ilem yaptryoruz.
Java Kodumuz :

package com.umiitkose.myapplication;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity implements View.OnClickListener{


TextView tv;
Button b1,b2,b3;
EditText a1,a2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1=(Button)findViewById(R.id.button);
b2=(Button)findViewById(R.id.button2);
b3=(Button)findViewById(R.id.button3);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
b3.setOnClickListener(this);
tv=(TextView)findViewById(R.id.textView);
a1=(EditText)findViewById(R.id.editText);
a2=(EditText)findViewById(R.id.editText2);

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}

@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.button:
Toast.makeText(getApplicationContext(), "Buton 1'e tkland.", Toast.LENGTH_SHORT).show();
break;
case R.id.button2:
tv.setText("Ali");
break;

case R.id.button3:
float sayi1float=Float.parseFloat(a1.getText().toString());

float sayi2float=Float.parseFloat(a2.getText().toString());

tv.setText(String.valueOf(sayi1float+sayi2float));
break;
}
}
}

Uygulamann almas.

Bir butonda Toplama ilemi Bir butonda Toast mesaj


Bir butonda da Ekrana ali yazdryor.
Android Studio Programlama Blm 22
Android Studio Wifi Kullanm

Android Studioda 20. Dersimiz kablosuz internet eriimleri salayan wifi'nin


almasyla ilgili. Wifi akll telefonlarda kablosuz internet balants eriimine
olanak verir. Bir toggle button ile Android Studio'da wifi kontrol
salayarak ilemlerimizi gerekletireceiz. Toggle button on ve off eklinde
ierisinde 2 kontrol mekanzmas olan buttondur.

Activity_main:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/a"
android:id="@+id/toggleButton"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>

Java Kodlar : Aklamalar kodlarn yannda yaptm.

package com.umiitkose.myapplication;

import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.media.MediaRecorder;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.app.Activity;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;
import android.widget.ToggleButton;

public class MainActivity extends Activity {


//Wifi managerdan modem deikeni alyoruz.

WifiManager modem=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*ToggleButtonu bulup aktif ediyoruz. Eer on ksmndaysa seiliyse wifiAc metoduna geicek ve wifi
Accak. Off ksmnda ise wifi kapat metodunu arp kapatcak.
*/
final ToggleButton btn=(ToggleButton)findViewById(R.id.toggleButton);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(btn.isChecked()){
wifiAc();
}
else
wifiKapat();

}
});
} //Modemin wifi durumu kapalysa wifiyi ayor. Aksa zaten ak diyor.
private void wifiAc(){
modem=(WifiManager)getSystemService(Context.WIFI_SERVICE);
if(modem.getWifiState()== WifiManager.WIFI_STATE_DISABLED){
modem.setWifiEnabled(true);
}else if(modem.getWifiState()==WifiManager.WIFI_STATE_ENABLING){
Toast.makeText(MainActivity.this, "Ak", Toast.LENGTH_SHORT).show();
}

}
//Eer wifi ak ise kapatyor.
private void wifiKapat(){
modem=(WifiManager)getSystemService(Context.WIFI_SERVICE);
if(modem.getWifiState()== WifiManager.WIFI_STATE_ENABLED){
modem.setWifiEnabled(false);
}else if(modem.getWifiState()==WifiManager.WIFI_STATE_DISABLING){
Toast.makeText(MainActivity.this, "Zaten Kapal", Toast.LENGTH_SHORT).show();
}

Android Manifest zinlerimiz:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />


<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

Uygulamamzn almas. Emlatr'de denemeyin. Android Studioda apk dosyas


oluturmak iin tklayn.
Off Ksm Wifi Kapal On ksm wifi ak.
Android Studio Programlama Blm 23
Android Studio Kameradan Grnt Alma ve Grnty Gsterme

Android studio'da Kamera kullanmndayz. Kamera ilemi yaparken android


tarafnda neler yapyoruz. Hep birlikte gelin bunu inceleyelim.

1 button ve image view ile activity_main dosyamz oluturduk.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView"
android:layout_above="@+id/button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="108dp" />

</RelativeLayout>

Java Dosyamz :

Java dosyasnda ncelikle resim ekme ilemini aktif ediyoruz. d ile isteimizi
onaylayp imageview'e atarak gsterimini salyoruz.

package com.umiitkose.myapplication;

import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.media.MediaRecorder;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.app.Activity;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;
import android.widget.ImageView;

public class MainActivity extends Activity {

Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.button);

btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent kamera=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // Resim ekme istei ve
activity balatlp id'si tanmland
startActivityForResult(kamera,33);

}
});

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if(requestCode==33){
Bitmap image=(Bitmap)data.getExtras().get("data");//ekilen resim id olarak bitmap eklinde alnd
ve imageview'e atand
ImageView resim= (ImageView)findViewById(R.id.imageView);
resim.setImageBitmap(image);

// super.onActivityResult(requestCode, resultCode, data);


}
}

android studio Manifest in gerekli izinler..

<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-
permission>
<uses-feature android:name="android.hardware.Camera"></uses-feature>

Uygulamay apk olarak android cihaznz da altrnz .Android Studio'da apk


dosyas oluturmak iin tklayn.
Uygulama ncelikle Buttona basnca kameraya balanyor. Kameradan aldmz
grnty kaydedip, kaydetmeyecegimizi soruyor. Kaydedersek Grnt Telefonda
gzkyor.
Android Studio Programlama Blm 24
Android Studio Video ekme ve Oynatma

Android studioda video ekme ve oynatma ilemleri yapacaz. Android'te hepimiz


videolarla ilgilenmiizdir. Peki bir video ekerken android ne gibi ilemlerden geiyor
hi dndnz m ? Hep birlikte ona bakalm..

ncelikle 1 tane videoView ve button'a ihtiyacimiz var.

activity_main kodlar:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />

<VideoView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/videoView"
android:layout_above="@+id/button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="180dp" />

</RelativeLayout>

imdi Java kodlarmz :

1 tane button'a Video kaydetme ilemini verdik. ve bir id atadk. 33 ile kamera
grntleme idsi oldu. Bu istek ile verimizi aldk ve video view'e ektiimiz
veri araclyla aktardk. Aktarmak iinde dikkat ettiyseniz 33 idsini kullandk.

package com.umiitkose.myapplication;

import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRecorder;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.app.Activity;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;
import android.widget.VideoView;

public class MainActivity extends Activity {

Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.button);

btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent kamera=new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(kamera,33);

}
});

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

VideoView video=(VideoView)findViewById(R.id.videoView);
if(requestCode==33){
Toast.makeText(MainActivity.this, "Kamera Butonu Kullanld.", Toast.LENGTH_SHORT).show();
Uri abc=data.getData();
video.setVideoPath(String.valueOf(abc));
video.start();
}

// super.onActivityResult(requestCode, resultCode, data);


}
}

Android Studio iin gerekli izinler..

<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-
permission>
<uses-feature android:name="android.hardware.Camera"></uses-feature>
Emlatrde ltfen denemeyiniz almamaktadr. Android Studio'da apk dosyas
oluturmak iin tklayn.

Uygulamann almas :
Android Studio Programlama Blm 25
Android Studio ScrollView Kullanm

Android'te ilem yaparken bazen yle bir uygulama yazarsnz ki ekran'nz


yetmeyebilir. Bunun iin scrollview kullanmanz gerekmektedir. Android Studio'da
scroll view kullanrken ncelikle bu uygulama da scrollview'i kullanp ierisinde bir
linear layout attm. Ve values'teki string.xml'e girdiim text'i ekrandan byk bir yaz
olarak ayarladm.

<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="1">

<TextView
android:id="@+id/tv_long"
android:layout_width="403dp"
android:layout_height="match_parent"
android:text="@string/yazi">
</TextView>

</LinearLayout>
</ScrollView>
Android Studio Programlama Blm 26
Android Studio Dil Destei

Android studio'da kullanclara dil destei verebiliyoruz. Mesela Siz telefonunuzu


Trke kullanyorsunuz ve uygulamanzn yurt dnda da ilgi grmesini istiyorsunuz.
Bunun iin yapacanz uygulamanza dil paketi eklemek.

Basit bir uygulama gelitirelim. Hello world'u Trke dil destei ile Merhaba
Dnya'ya dntrelim

1-Res klasrnn iine values-tr klasrn ekleyin.

2-Values klasrndeki strings.xml'i kopyalayp values-tr iine atnz.

Hello World yazsn bizim stringimizde Merhaba Dnya olarak deitirin.

Uygulamay altrdnzda Hello World yazar. Dil ayarlarndan Trkeyi seerseniz


Merhaba Dnya ile karlarsnz.
Android Studio Programlama Blm 27
Android Studio MediaPlayer snf ile ses kontrol

Bu dersimizde basit bir ses uygulamas gelitireceiz. Ses'in oynatlmas,


durdurulmas ve bekletilmesi olayn yapcaz.

Mediaplayer snfna ihtiyacmz var bunun iin. ve bir tane de ses dosyasna. Ses
dosyasn res klasrnde raw klasr ap iine atnz. sim olarak ksa bireyler
koyunuz. Baz karakterleri kabul etmiyor. Trke karakter vs.

Tasarmmz bu ekilde olacak. Kodlarda yaninda verilmitir.

Activity_main kodlarmz :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Oynat"
android:id="@+id/button"
android:layout_marginTop="151dp"
android:layout_marginLeft="38dp"
android:layout_marginStart="38dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Durdur"
android:id="@+id/button2"
android:layout_alignTop="@+id/button3"
android:layout_toRightOf="@+id/button3"
android:layout_toEndOf="@+id/button3" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Beklet"
android:id="@+id/button3"
android:layout_alignTop="@+id/button"
android:layout_centerHorizontal="true" />

</RelativeLayout>

MainActivity'miz bu ekilde olacak. Kodlar yannda akladk.

package com.umiitkose.myapplication;

import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {


Button b1,b2,b3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final MediaPlayer ses= MediaPlayer.create(this, R.raw.ses);//raw klasrnde ses adl dosyam var
b1=(Button)findViewById(R.id.button);
b2=(Button)findViewById(R.id.button2);
b3=(Button)findViewById(R.id.button3);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ses.start(); //ses butona basnca oynatlyor
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ses.stop();} //ses butona basnca duruyor
});
b3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) { // Bu ksm bekletme ksm.
ses.pause();
});

Eer bekletme ve durdurma ilemini bir butonda yapcaksanzda kodumuz basit.

if(ses.isPlaying()){
ses.pause();
}
else{
ses.start();
}}
Android Studio Programlama Blm 28
Android Studio Payla Butonu

Androidte yaptmz uygulamay belirli yerlerde paylamak isteriz. Bunun iin hazr
payla butonu ksm var. Bu dersimizde onunla ilgili rnek vericeim.
Activity_main.xml kodlar :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<Button
android:id="@+id/btnShare"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/lblContent"
android:layout_marginTop="50dp"
android:text="Payla" />

<EditText
android:id="@+id/txtContent"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp"
android:layout_toRightOf="@+id/lblContent"
android:ems="10" >

<requestFocus />
</EditText>

<TextView
android:id="@+id/lblContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Paylalacak yaz" />

</RelativeLayout>

Basit bir editText ile tanmlanm yazda textView iine girilen veri alnarak bir buton yardmyla
paylaabiliyoruz.
MainActivity.java dosyasnn kodlar
package googleyardim.example.info.paylas;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnShare = (Button) findViewById(R.id.btnShare);
final EditText txtContent = (EditText) findViewById(R.id.txtContent);
btnShare.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub

// EditText'in iindeki yazy alr.


String message = txtContent.getText().toString();

shareMyMessage(message);
}
});
}

protected void shareMyMessage(String _message) {


// TODO Auto-generated method stub
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(Intent.EXTRA_TEXT, _message);
startActivity(Intent.createChooser(share, "Gnderiyi payla !! "));
}
}
Son olarak grselimiz ise. Gmailde paylatm
Android Studio Programlama Blm 29
Android Studio Pushbots ile Bildirim Gndermek

Telefonda herhangi bir olayda bildirim gelebiliyor. rnein facebookta yeni yorum
gibi. Bizde dardan kendi uygulamamz ile ilgili bilgiler vericek bir bildirim rnei
vericeiz. ncelikle bunu bir web sitesi ile yapcaz. Tabi Google developerstanda api
key almamz gerekmektedir.

https://console.developers.google.com/project ' a girerek bir proje oluturuyoruz.


Create Project'ten proje oluturduktan sonra uygulamamzn adn giriyoruz. Ve
projemiz kaydoluyor.
-Proje smimizi giriyoruz. Ve Kare iindekileri not alyoruz.
Burada ise Cloud Messaging for Android'e girerek Android iin ilemimizi aktif
ediyoruz.
Enable Ap'ye tklayn ve aktifletirin.

Aps & auth'tan credentials'tan Create new Key'e tklayarak server key - Create
ilemini gerektetiriyoruz.
Bize verdii AP key'i not alyoruz.
imdi elimizde ap key ve stte kaydettiimiz project Number'mz var.

Yeni Android Projesi oluturuyoruz.

build.app'yi aarak FileTree altna

compile 'com.pushbots:pushbots-lib:2.0.13@aar'

yazyoruz. Sync ediyoruz.


MainActivity.java da ise Pushbots.sharedInstance().init(this); ibaresini ekliyoruz.
AndroidManifest'iniz bu ekil olucak. Kodlar :

Add the following permessions and change com.example.sampleapp with your app
identifier. project isimlerini com.example.sampleapp'y kendi proje isminizle
deitirin.

<!-- GCM connects to Google Services. -->


<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<permission
android:name="<spanclass="ddd">com.example.sampleapp.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.sampleapp.permission.C2D_MESSAGE" />
<!-- This app has permission to register and receive dataf message. -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

The following intent-filter in your main activity: activity main ksmnda intent filter
ekleyin

<intent-filter>
<action android:name="com.example.sampleapp.MESSAGE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>

Add the following activity, reciever and service before the end of your application tag,
and in all of the above code change com.example.sampleapp with your app identifier.
(Application taglarndan sonunda reciever ve servise'leri ekliyeceksiniz. Ve kendi
project name'i com.example.sampleapp'yi deitirmeyi unutmayn)

<receiver
android:name="com.pushbots.google.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.example.sampleapp" />
</intent-filter>
</receiver>
<receiver android:name="com.pushbots.push.DefaultPushHandler" />
<service android:name="com.pushbots.push.GCMIntentService" />
Res Values'te yeni bir xml oluturun. Pushbots.xml'de Kodlarmz. Burada
pb_senderid : Proje Number pb_appid ise pushbots'a kaydedicez imdi uygulamay
oradaki ID.

<?xml version="1.0" encoding="utf-8"?> <resources> <!-- Pushbots Application ID -


-> <string name="pb_appid">548ef5901d0ab1</string> <!-- GCM Sender ID --
> <string name="pb_senderid">48849973</string> <!-- Pushbots Log Level log Tag
"PB2" --> <string name="pb_logLevel">DEBUG</string> </resources>
PushBots'a kaydolalm. Bildiiniz yelik ilemi. Dashboard sistemi aada. Yeni bir
proje oluturcaz.
Platform'a Android GCM API KEY'E yukarda google'a kaydolurkenki API keyimizi
ekliyoruz. Ve keys'e geliyoruz.
AppID'yi ise pushbots.xml'de senderID'Ye yazyoruz. Ve ilem bu kadar

Uygulamay telefonunuz ykleyip Send a push'ta yeni bir mesaj yolladktan sonraki
hali..
Detayl Bilgi in Tklayn..
Android Studio Programlama Blm 30
Android Studio nternet Varl

Herkese merhaba internetin olup olmadn android zerinden nasl kontrol


edebiliriz onu aklayacam. Kod olarak

public boolean InternetKontrol() {


ConnectivityManager manager = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
if (manager.getActiveNetworkInfo() != null
&& manager.getActiveNetworkInfo().isAvailable()
&& manager.getActiveNetworkInfo().isConnected()) {
return true;
} else {
return false;
}
}
Yazcaz.
if(InternetKontrol()){

// Balant var

}else{

//Balant yok

eklinde kullancaz. Yok olan yerde toast mesaj gsterebilir ya da uygulamadan


kabilirsiniz. Var olan yerde de bir web view'e ynlendirebilirsiniz.
Manifest dosyasnda ise bu izni kullancaz.

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Android Studio Uygulamalar 1 Hesap Makinesi
Hesap Makinesi

Android'te 1. uygulama olarak hesap makinesi yapmn anlatacam. Basite 0-9'a


kadar saylar olucak. Onlar display'de gstereceiz. Topla, Hesapla, Sil, kar, Bl,
arp ilemleri olucak. Eer kullanc sil'e basmsa direk displayi boaltcaz. lk sayy
girdik. Herhangi bir ileme bastk. Onu hafzaya alp yeni bastmz ilemi hesapla ile
hesaplattrcaz. Basit bir hesap makinesi. Hadi ie koyulalm.

Projenin kod hali isteyenler iin.. HesapMakinesi

ncelikle basit bir tasarm yapyoruz. Ben stne dmeden aadaki ekil
yaptm.

Sonrasnda tm butonlarm aktif ettim.


"display.setText(display.getText()."sayi")" komutu ile bastm tuu displayde
gsterdim.
Try-catch blogu ile de eer eer toplama tuuna baslmsa hesaplada ilk deeri alp
Toplama stringine eitleyip ilemi yaptrdm. Dier butonlar iinde ilem ayn. Eski
deeri ilkdegere esitleyerek kaydediyorum.

Hesap'la da ise Eer toplama ilemine bastysam toplama ilemini yapcak. Yani
yukardan aldm ilk deer ile imdi ki deeri toplayacak. Dier ilemlerde ayn
mantkta.
Projenin kod hali isteyenler iin HesapMakinesi
Android Studio Uygulama 2
Android Studio nternet Taraycs

Bu yazmzda da yeni bir internet taraycs yapacaz. ncelikle webView hakknda


bilginiz yoksa basit bir konu anlatm iin tklayn.

imdi basit bir tarayc yapacaz. ncelikle tasarmn halledelim.

Activity_main Kodlar:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E0E0D1" >

<LinearLayout
android:id="@+id/iki"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<TextView
android:id="@+id/textViewURL"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="13dp"
android:textColor="#000"
android:text="URL" />

<EditText
android:id="@+id/URL"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10" >
</EditText>

<Button
android:id="@+id/Git"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Git" />
</LinearLayout>

<WebView
android:id="@+id/webV"
android:layout_width="fill_parent"
android:layout_height="850dp"
android:layout_below="@id/iki" />

<LinearLayout
android:id="@+id/bir"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="3"
android:layout_below="@+id/webV"
>

<Button
android:id="@+id/Geri"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Geri" />

<Button
android:id="@+id/Anasayfa"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Anasayfa" />

<Button
android:id="@+id/Ileri"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Ileri"
/>
</LinearLayout>
</RelativeLayout>

imdi Java kodlarna balayacaz :


Resimleri:
Kodlar:
package com.example.myapplication;

import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {


Button Geri,Ileri, Anasayfa, Git;
WebView webV;
EditText URL;
@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);
webV = (WebView) findViewById(R.id.webV);
webV.getSettings().setJavaScriptEnabled(true);
webV.setWebViewClient(new MyWebViewClient());
webV.loadUrl("http://www.google.com.tr");
URL = (EditText) findViewById(R.id.URL);

Geri = (Button) findViewById(R.id.Geri);


Ileri = (Button) findViewById(R.id.Ileri);
Anasayfa = (Button) findViewById(R.id.Anasayfa);
Git = (Button) findViewById(R.id.Git);

Git.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (URL.getText().toString().length() > 10) {
Toast.makeText(
getApplicationContext(),
URL.getText().toString()
+ " adresi ykleniyor...",
Toast.LENGTH_SHORT).show();

if (InternetKontrol())
webV.loadUrl("http://"+URL.getText().toString());
else
BaglantiHatasiVer();
} else {
Toast.makeText(getApplicationContext(), "Geersiz Adres",
Toast.LENGTH_SHORT).show();
}
}
});

Anasayfa.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (InternetKontrol())
webV.loadUrl("http://www.google.com.tr");
else
BaglantiHatasiVer();
}
});

Geri.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (webV.canGoBack()) {
webV.goBack();
}
}
});

Ileri.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (webV.canGoForward()) {
webV.goForward();
}
}
});

}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
public void BaglantiHatasiVer() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
MainActivity.this);
alertDialogBuilder.setTitle("Sunucu Hatas");
alertDialogBuilder.setMessage(
"internet balantnz kontrol edip tekrar deneyin")
.setCancelable(true);
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}

public boolean InternetKontrol() {


ConnectivityManager manager = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
if (manager.getActiveNetworkInfo() != null
&& manager.getActiveNetworkInfo().isAvailable()
&& manager.getActiveNetworkInfo().isConnected()) {
return true;
} else {
return false;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}
}

Ve son olarak Manifest dosyasna da 2 tane izin ekliyoruz.

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

Uygulamann altrlmas..
Android Studio Uygulama 3

Android Studio Flashlight Uygulamas

Android Studio'da 3. uygulamay gelitireceiz. 3 uygulamada bir image button atp


onu toggle button eklinde kullanacaz. Toggle button'u ama kapama tuu olarak
dnn. Tua bastmzda alacak, Tua bastmzda kapatlacak. Button'a
basnca biz kamera'dan flash'a balanp acaz, dier bir tklamada flash'
kapatacaz. Hadi balayalm. Yeni bir proje ayoruz.

lk i olarak 2 tane izin alarak balayalm.Android manifest Dosyasna aadaki


kodlar ekleyin.

<uses-permission android:name="android.permission.CAMERA" />


<uses-feature android:name="android.hardware.camera" />

zinleri aldktan sonra uygulamamzn icon'u deitirelim. Gzel bir grnt elde
edelim. Mipmap iine kk iconu atn. Dier lambalarda kaydedin. Bunlar
uygulamada mesela kapalyken gri olann, akkende sar olann gstereceiz.

Activity_main dosyamzn kodlar

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:background="#cae5e0">

<ImageButton
android:id="@+id/btnSwitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="100dip"
android:src="@drawable/btn_switch_on"
android:background="@null"
android:contentDescription="@null"
/>

</RelativeLayout>

imdide MainActivity.java dosyamzn kodlar:

package com.umiitkose.myapplication;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;

import com.umiitkose.myapplication.R;

public class MainActivity extends Activity {

ImageButton btnSwitch;
private Camera camera;
private boolean flashAcik;
private boolean flashVarm;
Parameters params;
MediaPlayer mp;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSwitch = (ImageButton) findViewById(R.id.btnSwitch); //ImageButton'u tanmladk
//lk ilem kamerann flash'nn olup olmad
flashVarm =
getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_
FLASH);

if (!flashVarm) {
//FlashYoksa alertDialog ile ekrana flash'n olmadn kardk
AlertDialog alert = new AlertDialog.Builder(MainActivity.this).create();
alert.setTitle("HATA");
alert.setMessage("Bu aygt Flash desteklemiyor");
alert.setButton("Tamam", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Tamam'a basnca uygulamay kapatyoruz.
finish();
}
});
alert.show();
return;
}

// camera'ya eriiyoruz
cameraAc();

//Flash'n durumuna gre button'un resmini ayarlyoruz


toggleButtonImage();

/*
* Button'a her tklandnda olacaklar. Flash aksa kapat, Kapalysa a
*/
btnSwitch.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
if (flashAcik) { // Flash Acik true dncek. Eer Flash Aksa
Kapatcak

flashKapat();
} else {
// Ak deilse button'a basnca acak
flashAc();
}
}
});
}

/*
* Get the camera
*/
private void cameraAc() {
if (camera == null) {

camera = Camera.open();
params = camera.getParameters();

}
}

/*
* Flash' ama ksm burada
*/
private void flashAc() {
if (!flashAcik) {
if (camera == null || params == null) {
return;
}
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
flashAcik = true;

// Flash Button'u Deiiyor


toggleButtonImage();
}

/*
* Flash' kapatma ksm
*/
private void flashKapat() {
if (flashAcik) {
if (camera == null || params == null) {
return;
}
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
camera.stopPreview();
flashAcik = false;

// changing button/switch image


toggleButtonImage();
}
}

/*
* Button'un deitirmesi
* */
private void toggleButtonImage(){
if(flashAcik){
btnSwitch.setImageResource(R.drawable.flash_ac);
}else{
btnSwitch.setImageResource(R.drawable.flash_kapa);
}
}}

Uygulamay telefonda deneyiniz. Yoksa Flash desteklemiyor'u alrsnz. Telefonda


akken ve kapalykenki grnm.. Apk dosyas oluturarak deneyebilirsiniz.
Android Studio Apk Oluturma
Android studio kullandka yenilikler farkettim.Mesela apk dosyas eclipse de
nceden emlatr altrnca direk oluuyordu. Fakat android studio da bunun
olmadn rendim. imdi bu blmde de android studioda nasl apk dosyas
oluturulur onu reneceiz.

lem 1 : Android Studio ' da Build mensnde Generate Signed APK..'ya


giriyoruz.
lem 2 : Karmzda Generate Signed APK kyor. Create new'e
tklyoruz. Bir anahtar yolu seerek'ten apkmz oluturuyoruz.

lem 3 : 3 noktaya tklayarak bir yol seiyoruz


lem 4 : Ben uygulamann iine ifreyi oluturdum. Ve oraya da apk
dosyasn oluturuyorum. Yolunu belirliyoruz.

Son ilem ise ifremizi vs oluturup doldurduktan sonra buras gelicek


Next ve finish diyerek bize en sonda apk dosyas oluturuldu bilgisi
veriliyor. Show Explore yolu gstererek apk dosyasna ulayorsunuz.
Not: Apk dosyasn Telefona yklemek iin bilinmeyen kaynaklar amanz
gerekmektedir. Telefonunuzun ayarlar blmnde olmas lazm. Tkladnz an bu
kadar uygulama yklenmitir.
Android Studio Genymotion Kurulumu
Android Studio Genymotion Kurulumu

Android iin hzl bir emlatr olan Genymotion kurulumundan bahsedeceim


bugn. ncelikle bir yelik karlnda https://www.genymotion.com/ sitesinden
emlatr free olarak indirin. Dediim gibi bir yelik isteyecek. ncelikle ye
olduktan sonra direk indirebilirsiniz. ye id ve pass' unutmayn ndirdiiniz dosyay
kurulacak yeri seip next next diyoruz yklyoruz.

Kurulumu yaptktan sonra ye id ve pass' girerek genymotion'a telefonunuzu seerek


yklyorsunuz. Belirli dosya boyutunda telefonunuzun srcsn indiriyor.

Android Studio'da ise File --> Settings'e giriyoruz Plugins'e tklayarak


genymotion'u kuruyoruz.

Karede'ki simgesi geldikten sonra Tklayarak cihazm start'a basarak altryoruz.


Artk Genymotion kuruluma hazr
Kaynaka
ncelikle bu kitab yazarken yararlandm bir ok site vard. Onlarla ilgili tm
hatrladklarm buraya ekledim.
Google: Googlela ilgili dkmanlar olmadan olmazd zaten.
Androidhive: Ravi Tamadann yazd ngilizce harika bir android sitesi. Kesinlikle
takip etmenizi isteirm.
GokselGuren: Yazlar eski olsa da takip ettiim bir site.
MehmetKirazl: Yine takip ettiim bir blog sitesi. Ve yine eskisi gibi gncel deil.
AkllYazlm: erisinde gncel ve harika yazlar var.
Mobilhanem: Android ile ilgili gzel yazlar var.
GeleceiYazanlar: Turkcell tarafndan kurulmu ierisinde bir ok iletim
sistemine gre yapabiliceiniz uygulamalar olduu site.

Bunun gibi daha bir ok site var. Benim aklma gelenler uan bunlar. Daha ok
internette aratrma yaparak zaman geiriyorum. Ama en ok problemlerime zm
bulan siteler bunlard. Umiitkose.com da benim sitem. Takip etmeyi unutmayn. En
ksa zamanda Google play de uygulamalarm olucak. Ve bu kitabn devam yazlar
orada yaynlancak. Giri yaptmza gre artk ileri daha da zorlatrma vakti geldi.
Herkese iyi okumalar. Size bu kitap umarm bieyler katmtr.

You might also like