You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
İçindekiler<br />
<strong>Mobil</strong> <strong>Uygulama</strong> <strong>Ders</strong> <strong>Notları</strong> <strong>–</strong> <strong>v0.5</strong><br />
Not: Belgedeki örnekler Android 2.2 , Java jdk1.8.0_102 sürümüyle hazırlanmıştır.<br />
1-Android mobil uygulama geliştirme ortamı kurulumu<br />
1.1-Java<br />
- http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html<br />
Adresinden dökümandaki versiyon indirilir.Ardindan JAVA_HOME tanımlaması yapılır.<br />
Bilgisayarım-> Özellikler -> Gelişmiş Sistem Ayarları -> Oram Değişkenleri -> Yeni<br />
Anahtar : JAVA_HOME Değer : “C:\Program Files\Java\jdk1.8.0_102\jdk1.8.0_102”<br />
1.2-Android Studio <strong>–</strong> IDE<br />
-https://developer.android.com/studio/index.html<br />
Buradan; android-studio-bundle-145.3360264-windows.exe (Includes Android SDK (recommended)) indirilir.<br />
Kurulumdan sonra;<br />
C:\Users\user\$USER_NAME default kullanıcı dizinine aşağıdaki dosyalar oluşturulur.Buradaki $USER_NAME<br />
değeri sizin açtığınız kullanıcı adıdır.<br />
.android<br />
.AndroidStudio2.2<br />
.gradle<br />
Bu dosyalar Android Studio’nun kullanıcı bazlı configrasyon dosyalarıdır.<br />
1.3-SDK<br />
SDK temelde framework’tür.<br />
1.2 maddesindeki paket indirilirse Android Studio ile birlikte kurulur.Kurulumdan sonsa disk içerisindeki default<br />
yeri; “C:\Users\user\$USER_NAME\AppData\Local\Android\sdk” şeklindedir.<br />
2-Sanal Cep Telefonu Oluşturma<br />
Tools->Android->AVD Manager menusunden AVD Android Device Manager ile sanal çep telefonu<br />
oluşturulur.Oluşturulan sanal cep telefonu emulatordür.Sanal cep telefonu oluşturabilmek için açık proje olması<br />
gereklidir.Aksi durumda bu menu pasiftir.<br />
Sanal cep telefonununu daha verimli ve hızlı kullanabilmek için;<br />
-İşlemcinin sanallaştırma desteğininin (VT ) BİOS’dan enable yapılması gerekir.<br />
-INTEL HAXM surucusunun yuklu olması gerekir.<br />
Bu iki bileşen sisteminizde aktif/kurulu değilse sanal cep telefonu oluştururken gerekli uyarıları alırsınız.<br />
3-Hızlı Giriş<br />
Yüzme öğremenin ilk adımı ıslanmaktır.Hata yapmaktan korkmayın, isteksiz olmaktan korkun.<br />
3.1-MerhabaDunya<br />
3.1.1-merhaba-dunya-uygulaması<br />
Aşağıdaki ekran görüntüsünün yanında verilen kodlardan anlaşılacağı üzere, iki önemli dosya<br />
mevcuttur.Bunlardan birincisi kullanıcının gördüğü, frontend şeklinde tanımlanan, uygulamanın grafik arayuzunu<br />
oluşturan res\layout\activity_main.xml dosyasıdır.<br />
İkinci dosya ise; kullanıcı aktivitelerini işleyen ve tekrardan grafik arabirime dönütler gönderen, backend şeklinde<br />
tanımlanan MainActivity.java dosyasıdır.
2 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
1-Merhaba Dünya <strong>Uygulama</strong>sı<br />
Ekran Görüntüsü<br />
3.2-MerhabaDunya Build apk<br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
<br />
<br />
MainActivity.java<br />
public class MainActivity extends AppCompatActivity {<br />
@Override<br />
protected void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);<br />
}<br />
}<br />
Build -> Generate Signed Apk -> Key oluşturulur, ardindan apk dosyasının kaydedileceği yer gösterilir.<br />
4-Android İşletim Sistemi Mimarisi<br />
4.1-<strong>Uygulama</strong> aslında nerede çalışıyor ?<br />
4.2-JVM / Dalvik ve ART<br />
Java’nın Gücü Nereden Geliyor ?<br />
Java Platform Bağımsızdır.Java uygulamaları derlendirkten sonra diğer bilindik uygulamaların aksine direkt<br />
bilgisayarın işlemcisinden çalışmak yerine Java Sanal makinasında çalışırlar.Bu nedenler geliştirdiğiniz uygulamları<br />
Windows yada Açık Kod işletim sistemlerine Java Sanal Makinası kurarak çalıştırabilirsiniz.Bu java’nın güçlü yönüdür.<br />
PC mimarisinde Java Sanal Makinası kullanılmaktadır.Android ise Dalvik ile başlayan yolcuğuna Android 4.4<br />
Kitkat 4.4 sürümünden sonra ART ile devam etmektedir.<br />
“Android'deki uygulamalar daha önce Dalvik adı verilen Java emülatöründe çalıştırılıyordu. Java dilinde<br />
yazılan bu uygulamalar, Dalvik ile makine diline çevirilip donanıma aktarılıyordu. Bu da performansı etkiliyordu.<br />
ART(Android Run Time) yapısıyla beraber uygulama kurulurken derleme yapılıp önbelleğe alındığı için uygulamaları<br />
başlattığınızda derleme işlemi yapılmayacağından uygulamalar çok daha hızlı açılır.”
3 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
5-Android Hayat Döngüsü<br />
http://kod5.org/activity-sinifi/<br />
6-Andriod Studio IDE<br />
6.1-Geliştirme ortamı<br />
6.2-Paletler<br />
7-Kullanıcı Arayüz Tasarımı<br />
7.1-View Nesneleri<br />
7.2-match_parent / wrap_content<br />
match_parent :Yatay yada dikeyde en fazla genişliği kullan.<br />
wrap_content: Yatay yada dikeyde nesne içeriği kadar genişle.<br />
7.3-LinearLayout<br />
7.3.1-Layout_width / layout_height<br />
layout_width: Layout genişliği<br />
layout_height:Layout yüksekliği
4 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
7.3.1.1-LinearLayout-uyg<br />
LinearLayout - <strong>Uygulama</strong>sı<br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
5 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
android:layout_height="wrap_content"<br />
android:id="@+id/button2" /><br />
<br />
MainActivity.java<br />
public class MainActivity extends AppCompatActivity {<br />
@Override<br />
protected void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);<br />
}<br />
}<br />
7.3.2-layout_weight:dikey genişlik önceliği<br />
layout_weight:dikey genişlik önceliği, 0 ise öncelik yok, 1 ise layout içerisindeki tum dikey yada yatay alanı<br />
kaplar.Bu durumda match_prent ezilir/geçersiz kılınır.<br />
7.3.2.1-layout-weight-uyg<br />
LayoutWeight - <strong>Uygulama</strong>sı<br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
<br />
<br />
6 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
<br />
7.3.3-layout_gravity<br />
layout_gravity:içinde bulununan layouta göre widget’lerin yatay pozisyon belirleme<br />
7.3.3.1-layot-gravity-uyg<br />
LayoutWeight - <strong>Uygulama</strong>sı<br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
<br />
<br />
<br />
7 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
7.3.4-Gravity<br />
Gravity:nesnenin içindeki textin pozisyonunu belirleme<br />
8-gravity-uyg<br />
Gravity - <strong>Uygulama</strong>sı<br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
<br />
<br />
<br />
8 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
7.3.5-RelativeLayout<br />
Widget’lerin konumlarını ; Birbirlerinin konumlarına göre ve içinde bulundukları Layout’a göre belirlememizi<br />
sağlar.NOT : Layuot’a eklenen widget’lere ID verilmelidir !! Relavite türkçe karşılığı görecelidir.Verilen ID’ye göre<br />
layout dosyasi içindeki widget’lere MainActivity.java dosyası içerisinden erişilir.<br />
Relative Layout’un içine eklediğimiz öğeleri birbirlerinin sağına, soluna, aşağısına veya yukarısına geç diyebiliriz.<br />
android:layout_above<br />
android:layout_below<br />
android:layout_toLeftOf<br />
android:layout_toRightOf<br />
Hangi görsel öğenin id’si verilmişse onun üstünde görünür<br />
Hangi görsel öğenin id’si verilmişse onun altında görünür<br />
Hangi görsel öğenin id’si verilmişse onun solunda görünür<br />
Hangi görsel öğenin id’si verilmişse onun sağında görünür<br />
Relative Layout’un içine koyduğumuz öğerleri birbirlerine göre veya içine koyulan layout’a göre hizalayabiliriz.<br />
Aşağıda en çok kullanılan hizalama metotlarını bulabilirsiniz.<br />
android:layout_alignBottom<br />
android:layout_alignLeft<br />
android:layout_alignTop<br />
android:layout_alignRight<br />
android:layout_alignParentBottom<br />
android:layout_alignParentLeft<br />
android:layout_alignParentRight<br />
android:layout_alignParentTop<br />
7.3.5.1-RelativeLayout-uyg<br />
RelativeLayout - <strong>Uygulama</strong>sı<br />
Id’si verilen öğenin altını referans altını referans alarak hizalama<br />
yapar. Kendi alt bölümünü buna göre genişletir veya daraltır.<br />
Id’si verilen öğenin solundan referans alarak hizalama yapar. Kendi sol<br />
bölümünü buna göre genişletir veya daraltır.<br />
Id’si verilen öğenin üstünden referans alarak hizalama yapar. Kendi üst<br />
bölümünü buna göre genişletir veya daraltır.<br />
Id’si verilen öğenin sağından referans alarak hizalama yapar. Kendi sağ<br />
bölümünü buna göre genişletir veya daraltır.<br />
İçine koyulduğu layout’un en altına yerleşmesine yarar.<br />
İçine koyulduğu layout’un en soluna yerleşmesine yarar.<br />
İçine koyulduğu layout’un en sağına yerleşmesine yarar.<br />
İçine koyulduğu layout’un en üstüne yerleşmesine yarar.
9 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
<br />
<br />
<br />
<br />
8-Resource(Kaynak) Dosyaları<br />
8.1-String tanımlama <strong>–</strong><br />
8.1.1-merhaba-dunya-string:uyg<br />
Temelde çoklu dil desteğini sağlamak için uygulama içinde kullanılan metinler strings.xml içinde değişken<br />
olarak tanımlanır.<strong>Uygulama</strong> LinearLayout kullanılarak yapılmıştır.<br />
2-String Tanımlama <strong>Uygulama</strong>sı<br />
Ekran Görüntüsü<br />
app\src\main\res\values\strings.xml<br />
<br />
Merhaba Dunya<br />
String<br />
Ad : <br />
Soyad :<br />
GÖNDER<br />
<br />
MainActivity.java<br />
public class MainActivity extends<br />
AppCompatActivity {<br />
@Override<br />
protected void onCreate(Bundle<br />
savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);<br />
}<br />
}
10 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
res\layout\activity_main.xml<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
11 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
9-Temel Uygulamlar<br />
9.1-Kullanıcıdan veri alma ve Toast ile gösterme<br />
Ad/Soyad/Göster Butonu-3-Toast-uyg<br />
Toast Mesaj Göster <strong>Uygulama</strong>sı<br />
app\src\main\res\values\strings.xml<br />
<br />
LinearLayout<br />
Ad<br />
Soyad<br />
Goster<br />
<br />
MainActivity.java<br />
public class MainActivity extends AppCompatActivity {<br />
//<strong>Uygulama</strong>yı çalıştıran metod,activity_main adlı<br />
layout’u ekrana yüklüyor.<br />
@Override<br />
protected void onCreate(Bundle savedInstanceState)<br />
{<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);<br />
//Layout'daki butona id'si üzerinden erişilip button<br />
turunde gosterButon adlı nesne tanimlaniyor.<br />
Button gosterButon = (Button)<br />
findViewById(R.id.gosterButon);<br />
//Layout'daki EditText’lere id'leri üzerinden erişilip<br />
EditText türünde nesneler tanımlanıyor.<br />
final EditText ad = (EditText)<br />
findViewById(R.id.adText);<br />
final EditText soyad = (EditText)<br />
findViewById(R.id.soyadText);<br />
//göster butonuna tıklanmasını dinleyen metod.<br />
gosterButon.setOnClickListener(new<br />
View.OnClickListener() {<br />
@Override<br />
/göster butonuna tıklandığında çalışan kodlar<br />
public void onClick(View v) {<br />
//ad ve soyad nesnelerinden gelen text değerler alınıp<br />
string veri türündeki değişkenlere atanıyor.<br />
String adGelen = ad.getText().toString();<br />
String soyadGelen = soyad.getText().toString();<br />
//Toast içersinde ekrana yazırılacak text mesaj<br />
Ekran Görüntüsü<br />
hazırlanıyor<br />
String mesaj = "Merhaba " + adGelen + " " +<br />
soyadGelen + " !";<br />
//Toast mesajını ekranda gösteren kod.LENGTH_LONG<br />
parametresiyle açilan baloncuğun ekranda uzun süre kalması<br />
sağlanıyor.<br />
Toast.makeText(MainActivity.this, mesaj,<br />
Toast.LENGTH_LONG).show();<br />
}<br />
});<br />
}<br />
}<br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
12 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
android:layout_width="match_parent"<br />
android:layout_height="wrap_content"><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
9.2-Basit Hesap Makinası<br />
HesapMakinasi-uygulama<br />
HesapMakinasi- <strong>Uygulama</strong>sı<br />
app\src\main\res\values\strings.xml<br />
<br />
Hesap Makinasi<br />
Sayı 1<br />
Sayı 2<br />
+<br />
-<br />
*<br />
/<br />
İşlem Sonucu<br />
13 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
14 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
android:layout_width="wrap_content"<br />
android:layout_height="wrap_content"<br />
android:id="@+id/toplaButon"<br />
android:layout_weight="1" /><br />
<br />
<br />
<br />
<br />
<br />
<br />
MainActivity.java<br />
public class MainActivity extends AppCompatActivity {<br />
@Override<br />
protected void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);<br />
// Layout'daki butonlara id'ler üzerinden erişilip button turunde nesneler tanimlaniyor.<br />
Button toplaButon = (Button) findViewById(R.id.toplaButon);<br />
Button cikarButon = (Button) findViewById(R.id.cikarButon);<br />
final Button bolButon = (Button) findViewById(R.id.bolButon);<br />
Button carpButon = (Button) findViewById(R.id.carpButon);<br />
final EditText say1Text = (EditText) findViewById(R.id.sayi1Text);<br />
final EditText say2Text = (EditText) findViewById(R.id.sayi2Text);<br />
toplaButon.setOnClickListener(new View.OnClickListener() {<br />
@Override<br />
public void onClick(View v) {<br />
Integer say1 = Integer.parseInt(say1Text.getText().toString());<br />
Integer say2 = Integer.parseInt(say2Text.getText().toString());<br />
Integer toplam = say1 + say2;<br />
final TextView sonucText = (TextView) findViewById(R.id.sonucText);<br />
//sonucText.setText(String.format("%d", toplam));<br />
sonucText.setText(Integer.toString(toplam));<br />
}<br />
});<br />
// cikarButon<br />
cikarButon.setOnClickListener(new View.OnClickListener() {<br />
@Override<br />
public void onClick(View v) {<br />
Integer say1 = Integer.parseInt(say1Text.getText().toString());<br />
Integer say2 = Integer.parseInt(say2Text.getText().toString());<br />
Integer fark;<br />
fark = say1-say2;<br />
final TextView sonucText = (TextView) findViewById(R.id.sonucText);<br />
sonucText.setText(Integer.toString(fark));<br />
}<br />
});<br />
// bolButon<br />
bolButon.setOnClickListener(new View.OnClickListener() {<br />
@Override<br />
public void onClick(View v) {<br />
Integer say1 = Integer.parseInt(say1Text.getText().toString());<br />
Integer say2 = Integer.parseInt(say2Text.getText().toString());
15 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
}<br />
float bolum;<br />
bolum = say1 / say2;<br />
final TextView sonucText = (TextView) findViewById(R.id.sonucText);<br />
sonucText.setText(String.valueOf(bolum));<br />
}<br />
});<br />
// carpButon<br />
carpButon.setOnClickListener(new View.OnClickListener() {<br />
@Override<br />
public void onClick(View v) {<br />
Integer say1 = Integer.parseInt(say1Text.getText().toString());<br />
Integer say2 = Integer.parseInt(say2Text.getText().toString());<br />
});<br />
}<br />
float carpim;<br />
carpim = say1*say2;<br />
final TextView sonucText = (TextView) findViewById(R.id.sonucText);<br />
sonucText.setText(Float.toString(carpim));<br />
}<br />
9.3-Menu<br />
9.3.1-Context Menu:view elemanlarına uzun süre basıldığında.<br />
11-ContextMenu-uyg<br />
ContextMenu <strong>Uygulama</strong>sı<br />
Ekran Görüntüsü<br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
16 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
res\values\strings.xml<br />
<br />
Context Menu<br />
<br />
Ahmet Aslan<br />
Mehmet Kaplan<br />
Ali Kuş<br />
Ayşe Doğru<br />
Burak Doğan<br />
Aslı Şahin<br />
<br />
<br />
res\layout\list_item.xml<br />
<br />
<br />
<br />
res\menu\menu_context.xml Dosyasi<br />
<br />
<br />
<br />
<br />
<br />
<br />
app\src\main\java\com\test\contextmenu\MainActivity.java<br />
public class MainActivity extends AppCompatActivity {<br />
//asagidaki nesneler metodlardan erismek icin burada tanimlaniyor.<br />
ListView liste; // ListView türünde liste adli nesne tanimlaniyor.<br />
Adapter adapter; // adapter adli Adapter veri turunden nesne tanimlaniyor.<br />
/*<br />
* 3 adet metod tanimlaniyor;<br />
* 1-onCreate : program calistiginda calisan metod, activity_main.xml'i ekrana basar.<br />
* 2-onCreateContextMenu: ContextMenu'yu ekrana basan metod.<br />
* 3-onContextItemSelected: ContextMenu'den eleman(item) secildiginde calisan metod.<br />
*/<br />
@Override<br />
protected void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);
17 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
String kullanicilar[]; // kullanicilar adlı dizi tanımlaniyor.<br />
kullanicilar = getResources().getStringArray(R.array.kullanicilar); // kullanicilar dizisinin<br />
içersine string.xml dosyasinda tanımlanan kullanicilar dizisi ataniyor.<br />
liste = (ListView) findViewById(R.id.listView); // activity_main.xml içindeki ListView nesnesine<br />
erişiliyor.<br />
adapter = new ArrayAdapter(getApplicationContext(),R.layout.list_item,kullanicilar); //<br />
kullanicilar dizisinin elemanlari, list_item.xml icindeki TextView'lere aranip adapter nesnesine<br />
doldurulyor.<br />
liste.setAdapter((ListAdapter) adapter); // liste'nin icine adapter nesnesi ataniyor.<br />
registerForContextMenu(liste);// menu, liste nesnesiyle olusturuluyor, ekrana basiliyor.<br />
}<br />
/*<br />
* ContextMenu oluşturan metod<br />
*/<br />
@Override<br />
public void onCreateContextMenu (ContextMenu menu,<br />
View v,<br />
ContextMenu.ContextMenuInfo menuInfo) {<br />
super.onCreateContextMenu(menu, v, menuInfo);<br />
MenuInflater inflater = getMenuInflater();<br />
inflater.inflate(R.menu.menu_context, menu);<br />
}<br />
/*<br />
* ContextMenu'den item(bilesen) secildiginde calisan metod<br />
* return boolean veri turunde.<br />
*/<br />
@Override<br />
public boolean onContextItemSelected(MenuItem item){<br />
AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo)<br />
item.getMenuInfo();<br />
switch (item.getItemId()) {<br />
case R.id.duzenle:<br />
// duzenle secildiginde calisan kodlar.<br />
TextView tv = (TextView) menuInfo.targetView; // secilen TextView'e erişiliyor.<br />
Toast.makeText(getApplicationContext(), "Duzenleme için Seçilen kişi :" +<br />
tv.getText().toString(), Toast.LENGTH_LONG).show(); // secilen TextView'in text i toast icinde ekrana<br />
basiliyor.<br />
return true;<br />
case R.id.paylas:<br />
// paylas secildiginde calisan kodlar.<br />
TextView tv1 = (TextView) menuInfo.targetView; // secilen TextView'e erişiliyor.<br />
Toast.makeText(getApplicationContext(), "Paylaşmak için seçilen kişi :" +<br />
tv1.getText().toString(), Toast.LENGTH_LONG).show(); // secilen TextView'in text i toast icinde ekrana<br />
basiliyor.<br />
return true;<br />
case R.id.sil:<br />
// sil secildiginde calisan kodlar.<br />
TextView tv2 = (TextView) menuInfo.targetView; // secilen TextView'e erişiliyor.<br />
Toast.makeText(getApplicationContext(), "Silmek için seçilen kişi :" +<br />
tv2.getText().toString(), Toast.LENGTH_LONG).show(); // secilen TextView'in text i toast icinde ekrana<br />
basiliyor.<br />
return true;<br />
}<br />
return super.onContextItemSelected(item);<br />
}<br />
}
18 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
10-Activity Nedir ?<br />
Cevap :<br />
10.1-Activiteler Arasi Basit Geçiş-<strong>Uygulama</strong><br />
10.1-Activiteler Arasi Basit Geçiş-<strong>Uygulama</strong><br />
Ekran Görüntüsü<br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
<br />
<br />
res\layout\activity_second.xml Dosyasi<br />
<br />
<br />
<br />
<br />
app\manifests\AndroidManifest.xml Dosyası<br />
<br />
<br />
19 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
android:icon="@mipmap/ic_launcher"<br />
android:supportsRtl="true"<br />
android:theme="@style/AppTheme"><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
app\src\main\java\com\test\contextmenu\MainActivity.java<br />
package net.sevketkeser.activitegecisbasit;<br />
import android.content.Intent;<br />
import android.support.v7.app.AppCompatActivity;<br />
import android.os.Bundle;<br />
import android.view.View;<br />
import android.widget.Button;<br />
public class MainActivity extends AppCompatActivity {<br />
Button baslatButon;<br />
private Intent intent;<br />
@Override<br />
protected void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);<br />
baslatButon = (Button) findViewById(R.id.baslatButon);<br />
baslatButon.setOnClickListener(new View.OnClickListener() {<br />
@Override<br />
public void onClick(View view) {<br />
intent = new Intent(MainActivity.this, SecondActivity.class);<br />
startActivity(intent);<br />
}<br />
});<br />
}<br />
}<br />
app\src\main\java\com\test\contextmenu\SecondActivity.java<br />
package net.sevketkeser.activitegecisbasit;<br />
import android.content.Intent;<br />
import android.os.Bundle;<br />
import android.support.v7.app.AppCompatActivity;<br />
import android.view.View;<br />
import android.widget.Button;<br />
public class SecondActivity extends AppCompatActivity {<br />
Button geriButon;<br />
private Intent geriIntent;<br />
@Override<br />
protected void onCreate(Bundle savedInstanceState){<br />
super.onCreate(savedInstanceState);
20 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
setContentView(R.layout.activity_second);<br />
geriButon = (Button) findViewById(R.id.geriButon);<br />
}<br />
}<br />
geriButon.setOnClickListener(new View.OnClickListener() {<br />
@Override<br />
public void onClick(View view) {<br />
geriIntent = new Intent(SecondActivity.this, MainActivity.class);<br />
startActivity(geriIntent);<br />
}<br />
});<br />
10.2- Activiteler Arasi Parametreli Geçiş-<strong>Uygulama</strong><br />
10.2.1-Bundle Nesnesi<br />
Nedir ?<br />
10.2- Activiteler Arasi Parametreli Geçiş-<strong>Uygulama</strong><br />
Ekran Görüntüsü<br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
<br />
<br />
21 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
android:layout_height="wrap_content"<br />
android:id="@+id/sayiEditText" /><br />
<br />
<br />
<br />
res\layout\activity_second.xml Dosyasi<br />
<br />
<br />
<br />
<br />
<br />
<br />
app\manifests\AndroidManifest.xml Dosyası<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
22 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
app\src\main\java\com\test\contextmenu\MainActivity.java<br />
package net.sevketkeser.activitelerarasigecis2;<br />
import android.content.Intent;<br />
import android.support.v7.app.AppCompatActivity;<br />
import android.os.Bundle;<br />
import android.view.View;<br />
import android.widget.Button;<br />
import android.widget.EditText;<br />
public class MainActivity extends AppCompatActivity {<br />
EditText sayiEditText;<br />
Button sayiGonder;<br />
private Intent intent;<br />
private Bundle bundle;<br />
@Override<br />
protected void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);<br />
sayiEditText = (EditText) findViewById(R.id.sayiEditText);<br />
sayiGonder = (Button) findViewById(R.id.sayiGonder);<br />
sayiGonder.setOnClickListener(new View.OnClickListener() {<br />
@Override<br />
public void onClick(View view) {<br />
intent = new Intent(MainActivity.this, SecondActivity.class);<br />
bundle = new Bundle();<br />
bundle.putString("sayi", sayiEditText.getText().toString());<br />
intent.putExtras(bundle);<br />
});<br />
}<br />
startActivity(intent);<br />
}<br />
}<br />
app\src\main\java\com\test\contextmenu\SecondActivity.java<br />
package net.sevketkeser.activitelerarasigecis2;<br />
import android.content.Intent;<br />
import android.os.Bundle;<br />
import android.support.v7.app.AppCompatActivity;<br />
import android.view.View;<br />
import android.widget.Button;<br />
import android.widget.EditText;<br />
import android.widget.TextView;<br />
public class SecondActivity extends AppCompatActivity {<br />
EditText gelensayiEditText;<br />
Button geriButon;<br />
@Override<br />
protected void onCreate (Bundle savedInstanceState){<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_second);<br />
gelensayiEditText = (EditText) findViewById(R.id.gelenSayiEditText);<br />
geriButon = (Button) findViewById(R.id.geriButon);<br />
Bundle data = getIntent().getExtras();<br />
gelensayiEditText.setText(data.getString("sayi"));
23 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
// Main Activiy'e geri don.<br />
geriButon.setOnClickListener(new View.OnClickListener() {<br />
@Override<br />
public void onClick(View view) {<br />
Intent geriIntent = new Intent(SecondActivity.this,<br />
MainActivity.class);<br />
startActivity(geriIntent);<br />
}<br />
});<br />
}<br />
}<br />
...<br />
12-Veri tabanı işlmeleri - SQL<br />
İnsert<br />
select<br />
Delete<br />
Update<br />
12.1-SQL <strong>Uygulama</strong> Sözlük <strong>Uygulama</strong>sı<br />
12.1-SQL <strong>Uygulama</strong> Sözlük <strong>Uygulama</strong>sı<br />
Ekran Görüntüsü<br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
<br />
<br />
<br />
24 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
android:layout_height="wrap_content"<br />
android:orientation="horizontal"><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
res\layout\list_item.xml Dosyasi<br />
<br />
<br />
<br />
<br />
<br />
strings.xml<br />
<br />
Dictionary<br />
Ad<br />
Açıklama<br />
Kaydet<br />
Güncelle<br />
Sil<br />
<br />
MainActivity.java Dosyası<br />
import android.support.v7.app.AppCompatActivity;<br />
import android.os.Bundle;<br />
import android.app.Activity;<br />
import android.content.ContentValues;<br />
import android.database.Cursor;<br />
import android.database.sqlite.SQLiteDatabase;
25 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
import android.os.Bundle;<br />
import android.view.View;<br />
import android.widget.Adapter;<br />
import android.widget.AdapterView;<br />
import android.widget.AdapterView.OnItemClickListener;<br />
import android.widget.Button;<br />
import android.widget.EditText;<br />
import android.widget.ListView;<br />
import android.widget.SimpleCursorAdapter;<br />
import android.widget.Toast;<br />
public class MainActivity extends AppCompatActivity {<br />
private DatabaseHelper helper;<br />
private SimpleCursorAdapter adapter;<br />
private Cursor kelimeListesiCursor;<br />
private String[] projection = new String[] {<br />
DictionaryContract.Kelime._ID,<br />
DictionaryContract.Kelime.COLUMN_AD,<br />
DictionaryContract.Kelime.COLUMN_ACIKLAMA<br />
};<br />
private String[] from = new String[] {<br />
DictionaryContract.Kelime.COLUMN_AD,<br />
DictionaryContract.Kelime.COLUMN_ACIKLAMA<br />
};<br />
private int [] to = new int[] {<br />
R.id.adListItemTextView,<br />
R.id.aciklamaListItemTextView<br />
};<br />
@Override<br />
public void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);<br />
}<br />
ekranKontrolleriniOlustur();<br />
private void ekranKontrolleriniOlustur() {<br />
helper = new DatabaseHelper(this);<br />
SQLiteDatabase db = helper.getReadableDatabase();<br />
kelimeListesiCursor = butunKelimeleriSorgula();<br />
adapter = new SimpleCursorAdapter(this,R.layout.list_item,<br />
kelimeListesiCursor, from, to, 0);<br />
final EditText adEditText = (EditText) findViewById(R.id.adEditText);<br />
final EditText aciklamaEditText = (EditText)<br />
findViewById(R.id.aciklamaEditText);<br />
Button kaydetButton = (Button) findViewById(R.id.kaydetButton);<br />
kaydetButton.setOnClickListener(new View.OnClickListener() {<br />
public void onClick(View v) {<br />
String ad = adEditText.getText().toString();<br />
String aciklama = aciklamaEditText.getText().toString();<br />
kelimeEkle(ad, aciklama);<br />
}
26 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
});<br />
Button guncelleButton = (Button) findViewById(R.id.guncelleButton);<br />
guncelleButton.setOnClickListener(new View.OnClickListener() {<br />
public void onClick(View v) {<br />
String ad = adEditText.getText().toString();<br />
String aciklama = aciklamaEditText.getText().toString();<br />
kelimeGuncelle(ad, aciklama);<br />
}<br />
});<br />
Button silButton = (Button) findViewById(R.id.silButton);<br />
silButton.setOnClickListener(new View.OnClickListener() {<br />
public void onClick(View v) {<br />
String ad = adEditText.getText().toString();<br />
kelimeSil(ad);<br />
}<br />
});<br />
ListView sozlukListView = (ListView) findViewById(R.id.sozlukListView);<br />
sozlukListView.setAdapter(adapter);<br />
sozlukListView.setOnItemClickListener(new OnItemClickListener() {<br />
id) {<br />
public void onItemClick(AdapterView arg0, View view, int position, long<br />
//adapter.setSelectedPosition(position);<br />
editTextGuncelle(kelimeListesiCursor, position, adEditText,<br />
aciklamaEditText);<br />
}<br />
});<br />
}<br />
private int getKelimeId(String ad) {<br />
}<br />
Cursor cursor = kelimeSorgula(ad);<br />
if(cursor == null)<br />
return -1;<br />
int count = cursor.getCount();<br />
if(count != 1)<br />
return -1;<br />
cursor.moveToNext();<br />
int idIndex = cursor.getColumnIndex(DictionaryContract.Kelime._ID);<br />
return cursor.getInt(idIndex);<br />
private Cursor kelimeSorgula(String ad) {<br />
if(ad == null)<br />
throw new RuntimeException("Kelime adý sorgulama iþlemi için boþ<br />
býrakýlamaz");<br />
String where = DictionaryContract.Kelime.COLUMN_AD + "=?";<br />
String [] whereArgs = new String [] {ad};<br />
SQLiteDatabase db = helper.getReadableDatabase();
27 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
Cursor cursor = db.query(DictionaryContract.TABLE_NAME, projection, where,<br />
whereArgs, null, null, null);<br />
}<br />
return cursor;<br />
private long kelimeEkle(String ad, String aciklama) {<br />
int kelimeId = getKelimeId(ad);<br />
if(kelimeId != -1) {<br />
Toast.makeText(getApplicationContext(), "Bu kelime daha önce eklenmiþtir",<br />
Toast.LENGTH_LONG).show();<br />
return -1;<br />
}<br />
}<br />
ContentValues satir = new ContentValues();<br />
satir.put("ad", ad);<br />
satir.put("aciklama", aciklama);<br />
SQLiteDatabase db = helper.getWritableDatabase();<br />
long eklenenKelimeId = db.insert(DictionaryContract.TABLE_NAME, null, satir);<br />
listeGuncelle();<br />
return eklenenKelimeId;<br />
private void kelimeGuncelle(String ad, String aciklama) {<br />
ContentValues guncelSatir = new ContentValues();<br />
guncelSatir.put("ad", ad);<br />
guncelSatir.put("aciklama", aciklama);<br />
int kelimeId = getKelimeId(ad);<br />
if(kelimeId == -1) {<br />
Toast.makeText(getApplicationContext(), "Güncellenecek kelime bulunamadý",<br />
Toast.LENGTH_LONG).show();<br />
return;<br />
}<br />
}<br />
SQLiteDatabase db = helper.getWritableDatabase();<br />
String where = DictionaryContract.Kelime._ID + "=" + kelimeId;<br />
db.update(DictionaryContract.TABLE_NAME, guncelSatir, where, null);<br />
listeGuncelle();<br />
private void kelimeSil(String ad) {<br />
int kelimeId = getKelimeId(ad);<br />
if(kelimeId == -1) {<br />
Toast.makeText(getApplicationContext(), "Silinecek kelime bulunamadý",<br />
Toast.LENGTH_LONG).show();<br />
return;<br />
}<br />
}<br />
SQLiteDatabase db = helper.getWritableDatabase();<br />
String where = DictionaryContract.Kelime._ID + "=" + kelimeId;<br />
db.delete(DictionaryContract.TABLE_NAME, where, null);<br />
listeGuncelle();
28 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
private void editTextGuncelle(Cursor cursor, int position, EditText adEditText,<br />
EditText aciklamaEditText) {<br />
cursor.moveToPosition(position);<br />
int adIndex = cursor.getColumnIndex(DictionaryContract.Kelime.COLUMN_AD);<br />
int aciklamaIndex =<br />
cursor.getColumnIndex(DictionaryContract.Kelime.COLUMN_ACIKLAMA);<br />
}<br />
String ad = cursor.getString(adIndex);<br />
String aciklama = cursor.getString(aciklamaIndex);<br />
adEditText.setText(ad);<br />
aciklamaEditText.setText(aciklama);<br />
private void listeGuncelle() {<br />
}<br />
kelimeListesiCursor.requery();<br />
adapter.notifyDataSetChanged();<br />
private Cursor butunKelimeleriSorgula() {<br />
SQLiteDatabase db = helper.getReadableDatabase();<br />
return db.query(DictionaryContract.TABLE_NAME, projection, null, null, null,<br />
null, null);<br />
}<br />
}<br />
DictionaryContact.java<br />
import android.net.Uri;<br />
import android.provider.BaseColumns;<br />
public final class DictionaryContract {<br />
public static final String AUTHORITY =<br />
"com.kodlab.dictionary.provider.DictionaryProvider";<br />
public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);<br />
public static final String DATABASE_NAME = "sozluk";<br />
public static final String TABLE_NAME = "kelime";<br />
public static final int DATABASE_VERSION = 1;<br />
public static class Kelime implements BaseColumns {<br />
private Kelime() {}<br />
public static final Uri CONTENT_URI = Uri.withAppendedPath(AUTHORITY_URI,<br />
"kelime");<br />
public static final String CONTENT_TYPE =<br />
"vnd.android.cursor.dir/net.sevketkeser.sozluk.provider.DictionaryProvider.kelime";<br />
public static final String CONTENT_ITEM_TYPE =<br />
"vnd.android.cursor.item/net.sevketkeser.sozluk.provider.DictionaryProvider.kelime";<br />
public static final String COLUMN_AD = "ad";<br />
public static final String COLUMN_ACIKLAMA = "aciklama";<br />
public static final String DEFAULT_SORT_ORDER = "ad ASC";<br />
public static final String[] FULL_PROJECTION = new String[] {_ID, COLUMN_AD,<br />
COLUMN_ACIKLAMA};
29 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
}<br />
}<br />
DatabaseHelper.java<br />
import android.database.sqlite.SQLiteOpenHelper;<br />
import android.content.Context;<br />
import android.database.sqlite.SQLiteDatabase;<br />
import android.util.Log;<br />
public class DatabaseHelper extends SQLiteOpenHelper {<br />
public static final String DATABASE_CREATE =<br />
"CREATE TABLE " + DictionaryContract.TABLE_NAME + " (" +<br />
DictionaryContract.Kelime._ID + " INTEGER PRIMARY KEY<br />
AUTOINCREMENT," +<br />
DictionaryContract.Kelime.COLUMN_AD + " TEXT NOT NULL, " +<br />
DictionaryContract.Kelime.COLUMN_ACIKLAMA + " TEXT);";<br />
public static final String DATABASE_DROP = "DROP TABLE IF EXISTS " +<br />
DictionaryContract.TABLE_NAME;<br />
public DatabaseHelper(Context context) {<br />
super(context, DictionaryContract.DATABASE_NAME, null,<br />
DictionaryContract.DATABASE_VERSION);<br />
}<br />
@Override<br />
public void onCreate(SQLiteDatabase db) {<br />
db.execSQL(DATABASE_CREATE);<br />
}<br />
@Override<br />
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {<br />
Log.w("DatabaseHelper", "Veritabani " + oldVersion + "\'dan" + newVersion +<br />
"\'a guncelleniyor");<br />
db.execSQL(DATABASE_DROP);<br />
onCreate(db);<br />
}<br />
}
30 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
13-Sensörler<br />
13.1-Sensör Listesi<br />
Ekran Görüntüsü<br />
13.1-Sensör Listesi<br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
<br />
MainActivity.java<br />
package net.sevketkeser.sensorlistesi;<br />
import android.content.Context;<br />
import android.hardware.Sensor;<br />
import android.hardware.SensorManager;<br />
import android.support.v7.app.AppCompatActivity;<br />
import android.os.Bundle;<br />
import android.widget.TextView;<br />
import java.util.List;<br />
public class MainActivity extends AppCompatActivity {<br />
@Override<br />
protected void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);<br />
SensorManager sensorManager = (SensorManager)<br />
getSystemService(Context.SENSOR_SERVICE);<br />
List sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);<br />
TextView sensorListTextView = (TextView)<br />
findViewById(R.id.sensorListTextView);<br />
StringBuilder stringBuilder = new StringBuilder();
31 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
for(Sensor sensor : sensorList) {<br />
"\n");<br />
stringBuilder.append("Ad : " + sensor.getName() + "\n");<br />
stringBuilder.append("Tip : " + sensor.getType() + "\n");<br />
stringBuilder.append("Uretici : " + sensor.getVendor() + "\n");<br />
stringBuilder.append("Versiyon : " + sensor.getVersion() + "\n");<br />
stringBuilder.append("Maksimum Aralýk : " + sensor.getMaximumRange() +<br />
stringBuilder.append("Güç :" + sensor.getPower() + "\n");<br />
stringBuilder.append("\n");<br />
}<br />
sensorListTextView.setText(stringBuilder.toString());<br />
}<br />
}<br />
13.2-Hareket Sensörü<br />
Ekran Görüntüsü<br />
13.2-Hareket Sensörü<br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
<br />
32 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
MainActivity.java Dosyasi<br />
package net.sevketkeser.hareketsensoru;<br />
import android.support.v7.app.AppCompatActivity;<br />
import android.os.Bundle;<br />
import android.app.Activity;<br />
import android.content.Context;<br />
import android.hardware.Sensor;<br />
import android.hardware.SensorEvent;<br />
import android.hardware.SensorEventListener;<br />
import android.hardware.SensorManager;<br />
import android.os.Bundle;<br />
import android.widget.TextView;<br />
public class MainActivity extends Activity implements SensorEventListener {<br />
private static final float ALPHA = 0.9f;<br />
private SensorManager sensorManager;<br />
private Sensor accelerometerSensor;<br />
private TextView gercekIvmeTextView;<br />
private TextView lineerIvmeTextView;<br />
private float[] gravity = new float[3];<br />
private float[] linear_acceleration = new float[3];<br />
@Override<br />
public void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);<br />
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);<br />
accelerometerSensor =<br />
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);<br />
}<br />
gercekIvmeTextView = (TextView) findViewById(R.id.gercekIvmeTextView);<br />
lineerIvmeTextView = (TextView) findViewById(R.id.lineerIvmeTextView);<br />
public final void onAccuracyChanged(Sensor sensor, int accuracy) {<br />
}<br />
public final void onSensorChanged(SensorEvent event) {<br />
gravity[0] = ALPHA * gravity[0] + (1 - ALPHA) * event.values[0];<br />
gravity[1] = ALPHA * gravity[1] + (1 - ALPHA) * event.values[1];<br />
gravity[2] = ALPHA * gravity[2] + (1 - ALPHA) * event.values[2];<br />
linear_acceleration[0] = event.values[0] - gravity[0];<br />
linear_acceleration[1] = event.values[1] - gravity[1];<br />
linear_acceleration[2] = event.values[2] - gravity[2];<br />
String gercekIvme = String.format("Gerçek İvme:\nX: %8.3f\nY: %8.3f\nZ:<br />
%8.3f",<br />
event.values[0], event.values[1], event.values[2]);<br />
String lineerIvme = String.format("Lineer İvme:\nX: %8.3f\nY: %8.3f\nZ:<br />
%8.3f",<br />
linear_acceleration[0], linear_acceleration[1],<br />
linear_acceleration[2]);<br />
}<br />
gercekIvmeTextView.setText(gercekIvme);<br />
lineerIvmeTextView.setText(lineerIvme);<br />
protected void onResume() {<br />
super.onResume();<br />
sensorManager.registerListener(this, accelerometerSensor,
33 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
SensorManager.SENSOR_DELAY_NORMAL);<br />
}<br />
}<br />
protected void onPause() {<br />
super.onPause();<br />
sensorManager.unregisterListener(this);<br />
}<br />
13.3-Pozisyon Sensörü<br />
Ekran Görüntüsü<br />
13.3-Pozisyon Sensörü<br />
res\layout\activity_main.xml Dosyasi<br />
<br />
<br />
<br />
<br />
MainActivity.java<br />
import android.support.v7.app.AppCompatActivity;<br />
import android.os.Bundle;<br />
import android.hardware.Sensor;<br />
import android.hardware.SensorEvent;<br />
import android.hardware.SensorEventListener;<br />
import android.hardware.SensorManager;<br />
import android.os.Bundle;<br />
import android.app.Activity;<br />
import android.content.Context;<br />
import android.widget.TextView;
34 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
public class MainActivity extends Activity implements SensorEventListener {<br />
private SensorManager sensorManager;<br />
private Sensor orientationSensor;<br />
private Sensor accelerometerSensor;<br />
private Sensor magneticFieldSensor;<br />
private TextView gercekOrientationTextView;<br />
private TextView hesaplananOrientationTextView;<br />
private float [] orientationSensorValues = new float[3];<br />
private float [] accelerometerSensorValues = new float[3];<br />
private float [] magneticFieldSensorValues = new float[3];<br />
@Override<br />
public void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);<br />
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);<br />
orientationSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);<br />
accelerometerSensor =<br />
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);<br />
magneticFieldSensor =<br />
sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);<br />
gercekOrientationTextView = (TextView)<br />
findViewById(R.id.gercekOrientationTextView);<br />
hesaplananOrientationTextView = (TextView)<br />
findViewById(R.id.hesaplananOrientationTextView);<br />
}<br />
public final void onAccuracyChanged(Sensor sensor, int accuracy) {}<br />
public final void onSensorChanged(SensorEvent event) {<br />
if (event.sensor.getType() == Sensor.TYPE_ORIENTATION)<br />
orientationSensorValues = event.values;<br />
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)<br />
accelerometerSensorValues= event.values;<br />
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)<br />
magneticFieldSensorValues = event.values;<br />
String gercekOrientationStr = String.format("Gerçek Orientation<br />
(Yönelim):\nAzimuth:%3.0f\nPitch: %3.0f\nRoll: %3.0f",<br />
orientationSensorValues[0], orientationSensorValues[1],<br />
orientationSensorValues[2]);<br />
gercekOrientationTextView.setText(gercekOrientationStr);<br />
float [] hesaplananOrientation = orientationHesapla();<br />
String hesaplananOrientationStr = String.format("Hesaplanan Orientation<br />
(Yönelim):\nAzimuth: %3.0f\nPitch: %3.0f\nRoll: %3.0f",<br />
hesaplananOrientation[0], hesaplananOrientation[1],<br />
hesaplananOrientation[2]);<br />
hesaplananOrientationTextView.setText(hesaplananOrientationStr);<br />
}<br />
private float [] orientationHesapla() {<br />
float[] values = new float[3];<br />
float[] R = new float[9];<br />
SensorManager.getRotationMatrix(R, null, accelerometerSensorValues,<br />
magneticFieldSensorValues);<br />
SensorManager.getOrientation(R, values);
35 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
values[0] = (float) Math.toDegrees(values[0]);<br />
values[1] = (float) Math.toDegrees(values[1]);<br />
values[2] = (float) Math.toDegrees(values[2]);<br />
}<br />
return values;<br />
protected void onResume() {<br />
super.onResume();<br />
sensorManager.registerListener(this, orientationSensor,<br />
SensorManager.SENSOR_DELAY_NORMAL);<br />
sensorManager.registerListener(this, accelerometerSensor,<br />
SensorManager.SENSOR_DELAY_NORMAL);<br />
sensorManager.registerListener(this, magneticFieldSensor,<br />
SensorManager.SENSOR_DELAY_NORMAL);<br />
}<br />
}<br />
protected void onPause() {<br />
super.onPause();<br />
sensorManager.unregisterListener(this);<br />
}<br />
13.4-Light Sensörü<br />
Empty-<strong>Uygulama</strong><br />
Ekran Görüntüsü<br />
Empty<br />
res\layout\activity_main.xml Dosyasi<br />
<br />
36 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
<br />
MainActivity.java Dosyasi<br />
import android.os.Bundle;<br />
import java.util.Timer;<br />
import java.util.TimerTask;<br />
import android.app.Activity;<br />
import android.content.Context;<br />
import android.hardware.Sensor;<br />
import android.hardware.SensorEvent;<br />
import android.hardware.SensorEventListener;<br />
import android.hardware.SensorManager;<br />
import android.os.Bundle;<br />
import android.view.WindowManager;<br />
import android.widget.TextView;<br />
public class MainActivity extends Activity implements SensorEventListener {<br />
private SensorManager sensorManager;<br />
private Sensor isikSensoru;<br />
private TextView isikMiktariTextView;<br />
private float isikMiktari;<br />
@Override<br />
public void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);<br />
}<br />
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);<br />
isikSensoru = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);<br />
isikMiktariTextView = (TextView) findViewById(R.id.isikMiktariTextView);<br />
Timer timer = new Timer();<br />
timer.scheduleAtFixedRate(new TimerTask() {<br />
public void run() {<br />
ekranGuncelle();<br />
}<br />
}, 0, 1000);<br />
public final void onAccuracyChanged(Sensor sensor, int accuracy) {}<br />
public final void onSensorChanged(SensorEvent event) {<br />
isikMiktari = event.values[0];<br />
}<br />
private void ekranGuncelle() {<br />
runOnUiThread(new EkranGuncelleRunnable());<br />
}<br />
private class EkranGuncelleRunnable implements Runnable {<br />
@Override<br />
public void run() {<br />
if(isikMiktari >= SensorManager.LIGHT_SUNLIGHT) {<br />
isikMiktariTextView.setText("GÜNEÞLÝ");<br />
ekranParlaklikAyarla(0.25f);<br />
} else if(isikMiktari >= SensorManager.LIGHT_OVERCAST) {<br />
isikMiktariTextView.setText("KAPALI");<br />
ekranParlaklikAyarla(0.5f);<br />
} else if(isikMiktari >= SensorManager.LIGHT_CLOUDY) {<br />
isikMiktariTextView.setText("BULUTLU");<br />
ekranParlaklikAyarla(0.75f);<br />
} else {<br />
isikMiktariTextView.setText("GECE KARANLIÐI");<br />
ekranParlaklikAyarla(1.0f);
37 | <strong>Mobil</strong> Ugulama <strong>Ders</strong> <strong>Notları</strong><br />
}<br />
}<br />
}<br />
private void ekranParlaklikAyarla(float parlaklik) {<br />
WindowManager.LayoutParams layoutParams = getWindow().getAttributes();<br />
layoutParams.screenBrightness = parlaklik;<br />
getWindow().setAttributes(layoutParams);<br />
}<br />
protected void onResume() {<br />
super.onResume();<br />
if(isikSensoru != null)<br />
sensorManager.registerListener(this, isikSensoru,<br />
SensorManager.SENSOR_DELAY_NORMAL);<br />
}<br />
}<br />
protected void onPause() {<br />
super.onPause();<br />
sensorManager.unregisterListener(this);<br />
ekranParlaklikAyarla(-1.0f);<br />
}<br />
..<br />
etc<br />
<strong>Mobil</strong> Ugulama <strong>Ders</strong>i WWW Kaynakları<br />
Android<br />
https://denizkilinc.com/2013/07/02/android-isletim-sistemi-mimarisi-kernel-libraries-runtime-framework-dvm/<br />
http://kod5.org/category/mobil/android/<br />
Java<br />
https://www.mobilhanem.com/temel-java-egitimleri/