Mobil Uygulama Ders Notları v0.6

Benzer belgeler
Mobil Uygulama Ders Notları v0.5

MOBİL UYGULAMA GELİŞTİRME

Android ile SQLLite Veri Tabanı

1 - Button Kontrolu Nasıl Yapılır?

MOBİL UYGULAMA GELİŞTİRME

Android Kaynakları (Resources)

Proje 1. Arayüz Tasarımı

Listview Kullanımı. Aşağıdaki örnekte bir ListView'ı birkaç ülke ismiyle dolduracağız.

MOBİL UYGULAMA GELİŞTİRME

Layout. (Düzen,Plan,Yerleşim)

Bazı Akıllı Telefon Sensörleri

(09/05/2016)

Android Cep Telefonu Programlama

Android Ders Notları

Espresso ile Android Uygulama Testi

Android Database SQLLite

1 GİRİŞ 1 Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

Fırat Üniversitesi DENEY NO: 4 MOBİL UYGULAMALAR

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi ANDROİD DE SENSÖRLER. BLM401 Dr.Refik SAMET

Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

Android Studio Dersleri

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi KULLANICI ARAYÜZ. BLM401 Dr.Refik SAMET

Android Nedir? Google'ın Android Inc şirketini alışı

UYGULA İÇİ SATIN ALMA. <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="com.android.vending.

MOBİL UYGULAMA GELİŞTİRME

Activity Context.startActivity Activity, AndroidManifest

Android Studio TextView ve EditText Öğr.Gör. Utku SOBUTAY

KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

BLM401 Mobil Cihazlar için ANDROID İşletim Sistemi. SQLite Veritabanı. BLM401 Dr.Refik SAMET

ANDROID ORTAMINDA KENT REHBERİ GELİŞTİRİLMESİ: SİVAS İLİ ÖRNEĞİ

Androıd ile Arduıno. Nazir Doğan

Muhar a r r e r m e T a T ç J PT Gel e e l c e e c k e o k nli l n i e And n r d oi o d i Nedi d r

Burak Kıymaz JAVA FX

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi YAYIN ALICILARI. BLM401 Dr.Refik SAMET

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

T.C. KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

Görsel Komponentler. TextView. Metin değerlerini ekranda göstermek için kullanılır.

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Java ile Androıd. Programlama. Çağlar Artar

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

2.Eclipse açıldıktan sonra Workspace alanı seçilmesi gerekir. Workspace alanı projelerinizin fiziksel olarak bulunduğu kısımdır.

Android de Video Nasıl Oynatılır?

CUSTOMSLİDİNG KULLANIMI

BMH-210 MOBİL CİHAZ PROGRAMLAMA. Android OS Tanıtımı, Kurulumu, Bileşenleri, Önemli noktalar Dr. Musa ATAŞ

HSancak Nesne Tabanlı Programlama I Ders Notları

Trakya Üniversitesi Mühendislik-Mimarlık Fakültesi Bilgisayar Mühendisliği Bölümü. BM Yazılım - Staj Raporu

Enlil programını açtığımızda karşımıza gelen ilk ekrandır.bu ekranda özel tanımlanmış kullanıcı kodu ve parola ile programa giriş sağlanmaktadır.

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

2. GÜN. Daha açık bir ifadeyle,

EĞİTİM KURUMLARINDA SINIF İÇİ YOKLAMA, SINAV GİBİ UYGULAMALARIN TABLET BİLGİSAYAR KULLANARAK HIZLI VE VERİMLİ HALE GETİRİLMESİ

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

C# ile NJ Simulatöre Bağlanmak

1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5

Java da İstemci Tarafı Uygulamalar

ASP.NET ile Bir Web Sitesi Oluşturma

SINIF İÇİ UYGULAMA KODLARI

Java Programlamaya Giriş

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

Görsel Programlama 1

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi SERVİS BİLEŞENLERİ. BLM401 Dr.Refik SAMET

Uzaktan Eğitim Programlarına Giriş Kılavuzu

NESNEYE YÖNELİK PROGRAMLAMA

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

AYDES PROJESİ MESAJ KUTUSU EĞİTİM DOKÜMANI

İNTERNET TABANLI PROGRAMLAMA- 10.ders GRIDVIEW İÇERİSİNDE YENİ KAYIT EKLEME, FOTOGRAF LİSTELEME, SIRALAMA YAPMA VE DROPDOWN EKLEME

ECLIPSE PROGRAMININ ÇALIŞTIRILMASI

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Klavyeden Basit Giriş/Çıkış İşlemleri

Programlama Dillerinde Kullanılan Veri Tipleri

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

Android Platformunda Uygulama Geliştirme.

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

JAVA API v2.0 Belge sürümü: 2.0.2

İNTERNET TABANLI PROGRAMLAMA- 9.ders BİLGİLERİN GRIDVIEW İÇERİSİNDE EKLENMESİ, DÜZENLENMESİ VE SİLİNMESİ

BİL-141 Bilgisayar Programlama I (Java)

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

Veritabanı İşlemleri

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi GÜVENLİK VE İZİNLER. BLM401 Dr.Refik SAMET

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

1 LK ANDROID YAZILIMIMIZ VE ÖN HAZIRLIKLAR

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

Command Nesnelerini Kullanarak Tablolarda Değişiklik Yapmak:

Start : Bu method init methodundan hemen sonra çalışır ve applet dosyası yürütülmeye başladığında çalışmaya başlar.

Swing ve JDBC ile Database Erişimi

Erişim konusunda iki taraf vardır:

MOBİL UYGULAMA GELİŞTİRME

VET ON KULLANIM KLAVUZU

Data Structures Lab Güz

İLERİ VERİTABANI SİSTEMLERİ SUAT ÜSTKAN

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi İNTENT VE İNTENT. BLM401 Dr.Refik SAMET

Transkript:

İçindekiler Mobil Uygulama Ders Notları v0.6 Not: Belgedeki örnekler Android 2.2, Java jdk1.8.0_102 sürümüyle hazırlanmıştır. 1-Android mobil uygulama geliştirme ortamı kurulumu 1.1-Java - http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Adresinden dökümandaki versiyon indirilir.ardindan JAVA_HOME tanımlaması yapılır. Bilgisayarım-> Özellikler -> Gelişmiş Sistem Ayarları -> Oram Değişkenleri -> Yeni Anahtar : JAVA_HOME Değer : C:\Program Files\Java\jdk1.8.0_102\jdk1.8.0_102 1.2-Android Studio IDE -https://developer.android.com/studio/index.html Buradan; android-studio-bundle-145.3360264-windows.exe (Includes Android SDK (recommended)) indirilir. Kurulumdan sonra; C:\Users\user\$USER_NAME default kullanıcı dizinine aşağıdaki dosyalar oluşturulur.buradaki $USER_NAME değeri sizin açtığınız kullanıcı adıdır..android.androidstudio2.2.gradle Bu dosyalar Android Studio nun kullanıcı bazlı configrasyon dosyalarıdır. 1.3-SDK SDK temelde framework tür. 1.2 maddesindeki paket indirilirse Android Studio ile birlikte kurulur.kurulumdan sonsa disk içerisindeki default yeri; C:\Users\user\$USER_NAME\AppData\Local\Android\sdk şeklindedir. 2-Sanal Cep Telefonu Oluşturma Tools->Android->AVD Manager menusunden AVD Android Device Manager ile sanal çep telefonu oluşturulur.oluşturulan sanal cep telefonu emulatordür.sanal cep telefonu oluşturabilmek için açık proje olması gereklidir.aksi durumda bu menu pasiftir. Sanal cep telefonununu daha verimli ve hızlı kullanabilmek için; -İşlemcinin sanallaştırma desteğininin (VT ) BİOS dan enable yapılması gerekir. -INTEL HAXM surucusunun yuklu olması gerekir. Bu iki bileşen sisteminizde aktif/kurulu değilse sanal cep telefonu oluştururken gerekli uyarıları alırsınız. 3-Hızlı Giriş Yüzme öğremenin ilk adımı ıslanmaktır.hata yapmaktan korkmayın, isteksiz olmaktan korkun. 3.1-MerhabaDunya 3.1.1-merhaba-dunya-uygulaması Aşağıdaki ekran görüntüsünün yanında verilen kodlardan anlaşılacağı üzere, iki önemli dosya mevcuttur.bunlardan birincisi kullanıcının gördüğü, frontend şeklinde tanımlanan, uygulamanın grafik arayuzunu oluşturan res\layout\activity_main.xml dosyasıdır. İkinci dosya ise; kullanıcı aktivitelerini işleyen ve tekrardan grafik arabirime dönütler gönderen, backend şeklinde tanımlanan MainActivity.java dosyasıdır.

2 Mobil Ugulama Ders Notları 1-Merhaba Dünya Uygulaması Ekran Görüntüsü 3.2-MerhabaDunya Build apk res\layout\activity_main.xml Dosyasi <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="net.sevketkeser.merhabadunya.mainactivity"> android:text="hello World!" /> </RelativeLayout> MainActivity.java public class MainActivity extends AppCompatActivity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Build -> Generate Signed Apk -> Key oluşturulur, ardindan apk dosyasının kaydedileceği yer gösterilir. 4-Android İşletim Sistemi Mimarisi 4.1-Uygulama aslında nerede çalışıyor? 4.2-JVM / Dalvik ve ART Java nın Gücü Nereden Geliyor? Java Platform Bağımsızdır.Java uygulamaları derlendirkten sonra diğer bilindik uygulamaların aksine direkt bilgisayarın işlemcisinden çalışmak yerine Java Sanal makinasında çalışırlar.bu nedenler geliştirdiğiniz uygulamları 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. PC mimarisinde Java Sanal Makinası kullanılmaktadır.android ise Dalvik ile başlayan yolcuğuna Android 4.4 Kitkat 4.4 sürümünden sonra ART ile devam etmektedir. Android'deki uygulamalar daha önce Dalvik adı verilen Java emülatöründe çalıştırılıyordu. Java dilinde yazılan bu uygulamalar, Dalvik ile makine diline çevirilip donanıma aktarılıyordu. Bu da performansı etkiliyordu. ART(Android Run Time) yapısıyla beraber uygulama kurulurken derleme yapılıp önbelleğe alındığı için uygulamaları başlattığınızda derleme işlemi yapılmayacağından uygulamalar çok daha hızlı açılır.

3 Mobil Ugulama Ders Notları 5-Android Hayat Döngüsü http://kod5.org/activity-sinifi/ 6-Andriod Studio IDE 6.1-Geliştirme ortamı 6.2-Paletler 7-Kullanıcı Arayüz Tasarımı 7.1-View Nesneleri 7.2-match_parent / wrap_content match_parent :Yatay yada dikeyde en fazla genişliği kullan. wrap_content: Yatay yada dikeyde nesne içeriği kadar genişle. 7.3-LinearLayout 7.3.1-Layout_width / layout_height layout_width: Layout genişliği layout_height:layout yüksekliği

4 Mobil Ugulama Ders Notları 7.3.1.1-LinearLayout-uyg LinearLayout - Uygulaması res\layout\activity_main.xml Dosyasi <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:orientation="vertical" 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="net.sevketkeser.linearlayout.mainactivity"> <LinearLayout android:orientation="horizontal" > android:text="ad" android:id="@+id/textview" /> <EditText android:inputtype="textpersonname" android:id="@+id/edittext4" /> <LinearLayout android:orientation="horizontal" > android:id="@+id/textview2" android:text="soyad" /> <EditText android:inputtype="textpersonname" android:id="@+id/edittext5" /> <Button android:text="kaydet"

5 Mobil Ugulama Ders Notları android:id="@+id/button2" /> MainActivity.java public class MainActivity extends AppCompatActivity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); 7.3.2-layout_weight:dikey genişlik önceliği layout_weight:dikey genişlik önceliği, 0 ise öncelik yok, 1 ise layout içerisindeki tum dikey yada yatay alanı kaplar.bu durumda match_prent ezilir/geçersiz kılınır. 7.3.2.1-layout-weight-uyg LayoutWeight - Uygulaması res\layout\activity_main.xml Dosyasi <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="com.test.layoutweight.mainactivity" android:orientation="vertical"> android:text="kırmızı" android:id="@+id/textview3" android:background="#aa0000" android:layout_weight="1" /> android:text="mavi" android:background="#0000aa" android:id="@+id/textview2" android:layout_weight="1" /> android:text="yeşil" android:background="#00aa00" android:id="@+id/textview" android:layout_weight="1" />

6 Mobil Ugulama Ders Notları 7.3.3-layout_gravity layout_gravity:içinde bulununan layouta göre widget lerin yatay pozisyon belirleme 7.3.3.1-layot-gravity-uyg LayoutWeight - Uygulaması res\layout\activity_main.xml Dosyasi <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="com.test.layoutgravity.mainactivity" android:orientation="vertical"> android:text="lkırmızı" android:layout_gravity="center" android:id="@+id/textview3" android:background="#aa0000" android:layout_weight="0" /> android:text="mavi" android:layout_gravity="right" android:background="#0000aa" android:id="@+id/textview2" android:layout_weight="1" /> android:text="yeşil" android:background="#00aa00" android:id="@+id/textview" android:layout_weight="1" />

7 Mobil Ugulama Ders Notları 7.3.4-Gravity Gravity:nesnenin içindeki textin pozisyonunu belirleme 8-gravity-uyg Gravity - Uygulaması res\layout\activity_main.xml Dosyasi <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="com.test.gravity.mainactivity" android:orientation="vertical"> android:text="kırmızı" android:layout_gravity="center_horizontal" android:gravity="left" android:id="@+id/textview3" android:background="#aa0000" android:layout_weight="0" /> android:text="mavi" android:layout_gravity="center" android:gravity="right" android:background="#0000aa" android:id="@+id/textview2" android:layout_weight="1" /> android:text="yeşil" android:layout_gravity="right" android:gravity="right" android:background="#00aa00" android:id="@+id/textview" android:layout_weight="0" />

8 Mobil Ugulama Ders Notları 7.3.5-RelativeLayout Widget lerin konumlarını ; Birbirlerinin konumlarına göre ve içinde bulundukları Layout a göre belirlememizi sağlar.not : Layuot a eklenen widget lere ID verilmelidir!! Relavite türkçe karşılığı görecelidir.verilen ID ye göre layout dosyasi içindeki widget lere MainActivity.java dosyası içerisinden erişilir. Relative Layout un içine eklediğimiz öğeleri birbirlerinin sağına, soluna, aşağısına veya yukarısına geç diyebiliriz. android:layout_above android:layout_below android:layout_toleftof android:layout_torightof Hangi görsel öğenin id si verilmişse onun üstünde görünür Hangi görsel öğenin id si verilmişse onun altında görünür Hangi görsel öğenin id si verilmişse onun solunda görünür Hangi görsel öğenin id si verilmişse onun sağında görünür Relative Layout un içine koyduğumuz öğerleri birbirlerine göre veya içine koyulan layout a göre hizalayabiliriz. Aşağıda en çok kullanılan hizalama metotlarını bulabilirsiniz. android:layout_alignbottom android:layout_alignleft android:layout_aligntop android:layout_alignright android:layout_alignparentbottom android:layout_alignparentleft android:layout_alignparentright android:layout_alignparenttop 7.3.5.1-RelativeLayout-uyg RelativeLayout - Uygulaması Id si verilen öğenin altını referans altını referans alarak hizalama yapar. Kendi alt bölümünü buna göre genişletir veya daraltır. Id si verilen öğenin solundan referans alarak hizalama yapar. Kendi sol bölümünü buna göre genişletir veya daraltır. Id si verilen öğenin üstünden referans alarak hizalama yapar. Kendi üst bölümünü buna göre genişletir veya daraltır. Id si verilen öğenin sağından referans alarak hizalama yapar. Kendi sağ bölümünü buna göre genişletir veya daraltır. İçine koyulduğu layout un en altına yerleşmesine yarar. İçine koyulduğu layout un en soluna yerleşmesine yarar. İçine koyulduğu layout un en sağına yerleşmesine yarar. İçine koyulduğu layout un en üstüne yerleşmesine yarar.

9 Mobil Ugulama Ders Notları res\layout\activity_main.xml Dosyasi <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="com.test.relativelayout.mainactivity"> <EditText android:layout_alignparenttop="true" android:inputtype="textpersonname" android:text="mesaj" android:id="@+id/mesaj" /> <Button android:text="kaydet" android:layout_alignparentleft="true" android:layout_below="@id/mesaj" android:id="@+id/buton1" /> <Button android:text="temizle" android:layout_torightof="@id/buton1" android:layout_aligntop="@id/buton1" android:id="@+id/buton2" /> </RelativeLayout> 8-Resource(Kaynak) Dosyaları 8.1-String tanımlama 8.1.1-merhaba-dunya-string:uyg Temelde çoklu dil desteğini sağlamak için uygulama içinde kullanılan metinler strings.xml içinde değişken olarak tanımlanır.uygulama LinearLayout kullanılarak yapılmıştır. 2-String Tanımlama Uygulaması Ekran Görüntüsü app\src\main\res\values\strings.xml <resources> <string name="app_name">merhaba Dunya String</string> <string name="ad">ad : </string> <string name="soyad">soyad :</string> <string name="gonder">gönder</string> </resources> MainActivity.java public class MainActivity extends AppCompatActivity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main);

10 Mobil Ugulama Ders Notları res\layout\activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="com.test.merhabadunyastring.mainactivity" android:orientation="vertical"> <LinearLayout android:orientation="horizontal" > android:text="@string/ad" android:id="@+id/textview" /> <EditText android:inputtype="textpersonname" android:id="@+id/edittext" /> <LinearLayout android:orientation="horizontal" > android:text="@string/soyad" android:id="@+id/textview2" /> <EditText android:inputtype="textpersonname" android:id="@+id/edittext2" /> <Button android:text="@string/gonder" android:id="@+id/button" />

11 Mobil Ugulama Ders Notları 9-Temel Uygulamlar 9.1-Kullanıcıdan veri alma ve Toast ile gösterme Ad/Soyad/Göster Butonu-3-Toast-uyg Toast Mesaj Göster Uygulaması app\src\main\res\values\strings.xml <resources> <string name="app_name">linearlayout</string> <string name="ad">ad</string> <string name="soyad">soyad</string> <string name="buton">goster</string> </resources> MainActivity.java public class MainActivity extends AppCompatActivity { //Uygulamayı çalıştıran metod,activity_main adlı layout u ekrana yüklüyor. protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); //Layout'daki butona id'si üzerinden erişilip button turunde gosterbuton adlı nesne tanimlaniyor. Button gosterbuton = (Button) findviewbyid(r.id.gosterbuton); //Layout'daki EditText lere id'leri üzerinden erişilip EditText türünde nesneler tanımlanıyor. final EditText ad = (EditText) findviewbyid(r.id.adtext); final EditText soyad = (EditText) findviewbyid(r.id.soyadtext); //göster butonuna tıklanmasını dinleyen metod. gosterbuton.setonclicklistener(new View.OnClickListener() { /göster butonuna tıklandığında çalışan kodlar public void onclick(view v) { //ad ve soyad nesnelerinden gelen text değerler alınıp string veri türündeki değişkenlere atanıyor. String adgelen = ad.gettext().tostring(); String soyadgelen = soyad.gettext().tostring(); //Toast içersinde ekrana yazırılacak text mesaj Ekran Görüntüsü hazırlanıyor String mesaj = "Merhaba " + adgelen + " " + soyadgelen + "!"; //Toast mesajını ekranda gösteren kod.length_long parametresiyle açilan baloncuğun ekranda uzun süre kalması sağlanıyor. Toast.makeText(MainActivity.this, mesaj, Toast.LENGTH_LONG).show(); ); res\layout\activity_main.xml Dosyasi <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:orientation="vertical" 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="net.sevketkeser.linearlayout.mainactivity"> <LinearLayout android:orientation="horizontal"

12 Mobil Ugulama Ders Notları > android:text="ad" android:id="@+id/textview" /> <EditText android:inputtype="textpersonname" android:id="@+id/adtext" /> <LinearLayout android:orientation="horizontal" > android:id="@+id/textview2" android:text="soyad" /> <EditText android:inputtype="textpersonname" android:id="@+id/soyadtext" /> <Button android:text="kaydet" android:id="@+id/gosterbuton" /> 9.2-Basit Hesap Makinası HesapMakinasi-uygulama HesapMakinasi- Uygulaması app\src\main\res\values\strings.xml <resources> <string name="app_name">hesap Makinasi</string> <string name="sayi1">sayı 1</string> <string name="sayi2">sayı 2</string> <string name="toplabuton">+</string> <string name="cikarbuton">-</string> <string name="carpbuton">*</string> <string name="bolbuton">/</string> <string name="sonuctext">işlem Sonucu</string> </resources>

13 Mobil Ugulama Ders Notları res\layout\activity_main.xml Dosyasi <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="net.sevketkeser.hesapmakinasi.mainactivity"> <LinearLayout android:orientation="vertical" android:layout_height="match_parent"> <LinearLayout android:orientation="horizontal" > android:text="@string/sayi1" android:id="@+id/textview" android:layout_weight="1" /> <EditText android:inputtype="number" android:ems="10" android:id="@+id/sayi1text" android:layout_weight="1" /> <LinearLayout android:orientation="horizontal" > android:text="@string/sayi2" android:id="@+id/textview2" android:layout_weight="1" /> <EditText android:inputtype="number" android:ems="10" android:id="@+id/sayi2text" android:layout_weight="1" /> <LinearLayout android:orientation="horizontal" > android:text="@string/sonuctext" android:layout_width="94dp" android:id="@+id/textview3" /> android:id="@+id/sonuctext" android:layout_weight="1" /> <LinearLayout android:orientation="horizontal" > <Button android:text="@string/toplabuton"

14 Mobil Ugulama Ders Notları android:id="@+id/toplabuton" android:layout_weight="1" /> <Button android:text="@string/cikarbuton" android:id="@+id/cikarbuton" android:layout_weight="1" /> <Button android:text="@string/bolbuton" android:id="@+id/bolbuton" android:layout_weight="1" /> <Button android:text="@string/carpbuton" android:id="@+id/carpbuton" android:layout_weight="1" /> MainActivity.java public class MainActivity extends AppCompatActivity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); // Layout'daki butonlara id'ler üzerinden erişilip button turunde nesneler tanimlaniyor. Button toplabuton = (Button) findviewbyid(r.id.toplabuton); Button cikarbuton = (Button) findviewbyid(r.id.cikarbuton); final Button bolbuton = (Button) findviewbyid(r.id.bolbuton); Button carpbuton = (Button) findviewbyid(r.id.carpbuton); final EditText say1text = (EditText) findviewbyid(r.id.sayi1text); final EditText say2text = (EditText) findviewbyid(r.id.sayi2text); toplabuton.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { Integer say1 = Integer.parseInt(say1Text.getText().toString()); Integer say2 = Integer.parseInt(say2Text.getText().toString()); Integer toplam = say1 + say2; final TextView sonuctext = (TextView) findviewbyid(r.id.sonuctext); //sonuctext.settext(string.format("%d", toplam)); sonuctext.settext(integer.tostring(toplam)); ); // cikarbuton cikarbuton.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { Integer say1 = Integer.parseInt(say1Text.getText().toString()); Integer say2 = Integer.parseInt(say2Text.getText().toString()); Integer fark; fark = say1-say2; final TextView sonuctext = (TextView) findviewbyid(r.id.sonuctext); sonuctext.settext(integer.tostring(fark)); ); // bolbuton bolbuton.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { Integer say1 = Integer.parseInt(say1Text.getText().toString()); Integer say2 = Integer.parseInt(say2Text.getText().toString());

15 Mobil Ugulama Ders Notları float bolum; bolum = say1 / say2; final TextView sonuctext = (TextView) findviewbyid(r.id.sonuctext); sonuctext.settext(string.valueof(bolum)); ); // carpbuton carpbuton.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { Integer say1 = Integer.parseInt(say1Text.getText().toString()); Integer say2 = Integer.parseInt(say2Text.getText().toString()); float carpim; carpim = say1*say2; final TextView sonuctext = (TextView) findviewbyid(r.id.sonuctext); sonuctext.settext(float.tostring(carpim)); ); 9.3-Menu 9.3.1-Context Menu:view elemanlarına uzun süre basıldığında. 11-ContextMenu-uyg ContextMenu Uygulaması Ekran Görüntüsü res\layout\activity_main.xml Dosyasi <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="com.test.contextmenu.mainactivity" android:orientation="vertical"> <LinearLayout android:orientation="horizontal" >

16 Mobil Ugulama Ders Notları android:text="seçim Sonucu : " android:id="@+id/secimsonucinfotext" /> android:id="@+id/durum" android:text="durum" /> <LinearLayout android:orientation="vertical" > <ListView android:layout_height="match_parent" android:id="@+id/listview"> </ListView> res\values\strings.xml <resources> <string name="app_name">context Menu</string> <string-array name="kullanicilar"> <item>ahmet Aslan</item> <item>mehmet Kaplan</item> <item>ali Kuş</item> <item>ayşe Doğru</item> <item>burak Doğan</item> <item>aslı Şahin</item> </string-array> </resources> res\layout\list_item.xml <?xml version="1.0" encoding="utf-8"?> xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:textsize="16sp" android:padding="10dp" android:background="#cccccc" > </TextView> res\menu\menu_context.xml Dosyasi <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/duzenle" android:orderincategory="100" android:showasaction="never" android:title="düzenle" /> <item android:id="@+id/sil" android:orderincategory="100" android:showasaction="never" android:title="sil" /> <item android:id="@+id/paylas" android:orderincategory="100" android:showasaction="never" android:title="paylaş" /> </menu> app\src\main\java\com\test\contextmenu\mainactivity.java public class MainActivity extends AppCompatActivity { //asagidaki nesneler metodlardan erismek icin burada tanimlaniyor. ListView liste; // ListView türünde liste adli nesne tanimlaniyor. Adapter adapter; // adapter adli Adapter veri turunden nesne tanimlaniyor. /* * 3 adet metod tanimlaniyor; * 1-onCreate : program calistiginda calisan metod, activity_main.xml'i ekrana basar. * 2-onCreateContextMenu: ContextMenu'yu ekrana basan metod. * 3-onContextItemSelected: ContextMenu'den eleman(item) secildiginde calisan metod. */ protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main);

17 Mobil Ugulama Ders Notları String kullanicilar[]; // kullanicilar adlı dizi tanımlaniyor. kullanicilar = getresources().getstringarray(r.array.kullanicilar); // kullanicilar dizisinin içersine string.xml dosyasinda tanımlanan kullanicilar dizisi ataniyor. liste = (ListView) findviewbyid(r.id.listview); // activity_main.xml içindeki ListView nesnesine erişiliyor. adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.list_item,kullanicilar); // kullanicilar dizisinin elemanlari, list_item.xml icindeki TextView'lere aranip adapter nesnesine doldurulyor. liste.setadapter((listadapter) adapter); // liste'nin icine adapter nesnesi ataniyor. registerforcontextmenu(liste);// menu, liste nesnesiyle olusturuluyor, ekrana basiliyor. /* * ContextMenu oluşturan metod */ public void oncreatecontextmenu (ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuinfo) { super.oncreatecontextmenu(menu, v, menuinfo); MenuInflater inflater = getmenuinflater(); inflater.inflate(r.menu.menu_context, menu); /* * ContextMenu'den item(bilesen) secildiginde calisan metod * return boolean veri turunde. */ public boolean oncontextitemselected(menuitem item){ AdapterView.AdapterContextMenuInfo menuinfo = (AdapterView.AdapterContextMenuInfo) item.getmenuinfo(); switch (item.getitemid()) { case R.id.duzenle: // duzenle secildiginde calisan kodlar. TextView tv = (TextView) menuinfo.targetview; // secilen TextView'e erişiliyor. Toast.makeText(getApplicationContext(), "Duzenleme için Seçilen kişi :" + tv.gettext().tostring(), Toast.LENGTH_LONG).show(); // secilen TextView'in text i toast icinde ekrana basiliyor. return true; case R.id.paylas: // paylas secildiginde calisan kodlar. TextView tv1 = (TextView) menuinfo.targetview; // secilen TextView'e erişiliyor. Toast.makeText(getApplicationContext(), "Paylaşmak için seçilen kişi :" + tv1.gettext().tostring(), Toast.LENGTH_LONG).show(); // secilen TextView'in text i toast icinde ekrana basiliyor. return true; case R.id.sil: // sil secildiginde calisan kodlar. TextView tv2 = (TextView) menuinfo.targetview; // secilen TextView'e erişiliyor. Toast.makeText(getApplicationContext(), "Silmek için seçilen kişi :" + tv2.gettext().tostring(), Toast.LENGTH_LONG).show(); // secilen TextView'in text i toast icinde ekrana basiliyor. return true; return super.oncontextitemselected(item);

18 Mobil Ugulama Ders Notları 10-Activity Nedir? Cevap : 10.1-Activiteler Arasi Basit Geçiş-Uygulama 10.1-Activiteler Arasi Basit Geçiş-Uygulama Ekran Görüntüsü res\layout\activity_main.xml Dosyasi <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="net.sevketkeser.activitegecisbasit.mainactivity"> <Button android:text="activite Başlat" android:id="@+id/baslatbuton" android:layout_weight="1" /> res\layout\activity_second.xml Dosyasi <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_height="match_parent"> <Button android:text="main Activite 'ye Geri Dön" android:id="@+id/geributon" /> app\manifests\androidmanifest.xml Dosyası <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.sevketkeser.activitegecisbasit"> <application android:allowbackup="true"

19 Mobil Ugulama Ders Notları android:icon="@mipmap/ic_launcher" android:supportsrtl="true" android:theme="@style/apptheme"> <activity android:name=".mainactivity" android:label="main Activity"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <!!- Butona basildiğinda SecondActivity nin çalışabilmesi bildirim yapılıyor.. -> <activity android:name=".secondactivity" android:label="second Activity"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> app\src\main\java\com\test\contextmenu\mainactivity.java package net.sevketkeser.activitegecisbasit; import android.content.intent; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.view.view; import android.widget.button; public class MainActivity extends AppCompatActivity { Button baslatbuton; private Intent intent;//activiteler arasi gecisi yapan intent nsnesi tanimlaniyor. protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); baslatbuton = (Button) findviewbyid(r.id.baslatbuton); baslatbuton.setonclicklistener(new View.OnClickListener() { public void onclick(view view) { //MainActivty -> SecondActivity gecisini saglayan intent olusturuluyor intent = new Intent(MainActivity.this, SecondActivity.class); startactivity(intent);//yukarida hazirlanan intent start ediliyor. ); app\src\main\java\com\test\contextmenu\secondactivity.java package net.sevketkeser.activitegecisbasit; import android.content.intent; import android.os.bundle; import android.support.v7.app.appcompatactivity; import android.view.view; import android.widget.button; public class SecondActivity extends AppCompatActivity { Button geributon; private Intent geriintent; //Activiteler arasi gecisi yapan intent nsnesi tanimlaniyor.

20 Mobil Ugulama Ders Notları protected void oncreate(bundle savedinstancestate){ super.oncreate(savedinstancestate); setcontentview(r.layout.activity_second); geributon = (Button) findviewbyid(r.id.geributon); geributon.setonclicklistener(new View.OnClickListener() { public void onclick(view view) { //MainActivty -> SecondActivity gecisini saglayan intent olusturuluyor geriintent = new Intent(SecondActivity.this, MainActivity.class); startactivity(geriintent); //yukarida hazirlanan intent start ediliyor. ); 10.2- Activiteler Arasi Parametreli Geçiş-Uygulama 10.2.1-Bundle Nesnesi Activity ler arasinda veri taşımak istediğimizde kullanılan nesnedir.aşağıdaki örnekte; Text e girilen veri MainActivity de bundle nesnesine atanir, ardindan Gönder butonuna basıldığında SecondActivity çağırılır.secondactivity içersinde MainActivty den doldurulan Bundle nesnesi tekrar çağırılarak veriye ulaşılır.ulaşılan veri SecondActivity içerisinde EditText e set edilir. Tüm bu işlemlerin olabilmesi için; AndroidManifest.xml dosyasinda SecondActivty adlı activitenin bildiriminin yapılması gereklidir.eğer Bildirimi yapmazsanız kodlarınız duzgün bile çalışsa MainActivity içindeki GÖNDER butonuna basildiğinda herhangi bir aksiyon alınmaz. Nedir? 10.2- Activiteler Arasi Parametreli Geçiş-Uygulama Ekran Görüntüsü res\layout\activity_main.xml Dosyasi <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="net.sevketkeser.activitelerarasigecis2.mainactivity" android:orientation="vertical">

21 Mobil Ugulama Ders Notları <LinearLayout android:orientation="vertical" > android:text="sayi Girin:" android:id="@+id/sayitext" /> <EditText android:id="@+id/sayiedittext" /> <Button android:text="gonder" android:id="@+id/sayigonder" /> res\layout\activity_second.xml Dosyasi <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_second" android:orientation="vertical" android:layout_height="match_parent"> android:text="gelen Sayi : " android:id="@+id/gelensayitext" /> <EditText android:inputtype="textpersonname" android:ems="10" android:id="@+id/gelensayiedittext" /> <Button android:text="onceki Activiteye Geri Don" android:id="@+id/geributon" /> app\manifests\androidmanifest.xml Dosyası <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.sevketkeser.activitelerarasigecis2"> <application android:allowbackup="true" android:icon="@mipmap/ic_launcher" android:supportsrtl="true" android:theme="@style/apptheme"> <activity android:name=".mainactivity" android:label="main Activity"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter>

22 Mobil Ugulama Ders Notları </activity> <!!- Butona basildiğinda SecondActivity nin çalışabilmesi bildirim yapılıyor.. -> <activity android:name=".secondactivity" android:label="second Activity"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> app\src\main\java\com\test\contextmenu\mainactivity.java package net.sevketkeser.activitelerarasigecis2; import android.content.intent; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.edittext; public class MainActivity extends AppCompatActivity { // gerekli nesneler tanimlaniyor. EditText sayiedittext; Button sayigonder; private Intent intent; private Bundle bundle; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); sayiedittext = (EditText) findviewbyid(r.id.sayiedittext); sayigonder = (Button) findviewbyid(r.id.sayigonder); sayigonder.setonclicklistener(new View.OnClickListener() { public void onclick(view view) { // intent nesnesi olusturuluyor. intent = new Intent(MainActivity.this, SecondActivity.class); bundle = new Bundle();// Bundle nesnesi oluşturuluyor. // bundle adli, bundle nesnesinin sayi parametresine edittexden gelen değer ataniyor. bundle.putstring("sayi", sayiedittext.gettext().tostring()); intent.putextras(bundle); // bundle intent e bağlaniyor. startactivity(intent); // intent start ediliyor. ); app\src\main\java\com\test\contextmenu\secondactivity.java package net.sevketkeser.activitelerarasigecis2; import android.content.intent; import android.os.bundle; import android.support.v7.app.appcompatactivity; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.textview; public class SecondActivity extends AppCompatActivity {

23 Mobil Ugulama Ders Notları EditText gelensayiedittext; Button geributon; protected void oncreate (Bundle savedinstancestate){ super.oncreate(savedinstancestate); setcontentview(r.layout.activity_second); // ID lerine göre layout daki butonlara erişiliyor. gelensayiedittext = (EditText) findviewbyid(r.id.gelensayiedittext); geributon = (Button) findviewbyid(r.id.geributon); //intent içindeki bundle a geri erişiliyor, ardindan sayi parametesinin tuttuğu bir onceki activiteden gelen değer edittext e set ediliyor. Bundle data = getintent().getextras(); gelensayiedittext.settext(data.getstring("sayi")); // Main Activiy'e geri donulmesini saglayan butonun kodlari geributon.setonclicklistener(new View.OnClickListener() { public void onclick(view view) { // burada kaynak -> hedef olayina dikkat. Secondactivity den MainActivity e gecis!!! Intent geriintent = new Intent(SecondActivity.this, MainActivity.class); startactivity(geriintent); // activite start ediliyor. );... 12-Veri tabanı işlmeleri - SQL İnsert select Delete Update 12.1-SQL Uygulama Sözlük Uygulaması 12.1-SQL Uygulama Sözlük Uygulaması Ekran Görüntüsü res\layout\activity_main.xml Dosyasi <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >

24 Mobil Ugulama Ders Notları <EditText android:id="@+id/adedittext" android:hint="@string/titlead" > </EditText> <EditText android:id="@+id/aciklamaedittext" android:hint="@string/titleaciklama" > </EditText> <LinearLayout android:orientation="horizontal"> <Button android:id="@+id/kaydetbutton" android:layout_weight=".33" android:text="@string/kaydetbutton" /> <Button android:id="@+id/guncellebutton" android:layout_weight=".33" android:text="@string/guncellebutton" /> <Button android:id="@+id/silbutton" android:layout_weight=".33" android:text="@string/silbutton" /> <ListView android:id="@+id/sozluklistview" android:choicemode="multiplechoice"> </ListView> res\layout\list_item.xml Dosyasi <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > android:id="@+id/adlistitemtextview" android:textsize="20sp" /> android:textsize="20sp" android:text=":"/> android:id="@+id/aciklamalistitemtextview" android:textcolor="#888" android:textsize="20sp" /> strings.xml

25 Mobil Ugulama Ders Notları <resources> <string name="app_name">dictionary</string> <string name="titlead">ad</string> <string name="titleaciklama">açıklama</string> <string name="kaydetbutton">kaydet</string> <string name="guncellebutton">güncelle</string> <string name="silbutton">sil</string> </resources> MainActivity.java Dosyası import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.app.activity; import android.content.contentvalues; import android.database.cursor; import android.database.sqlite.sqlitedatabase; import android.os.bundle; import android.view.view; import android.widget.adapter; import android.widget.adapterview; import android.widget.adapterview.onitemclicklistener; import android.widget.button; import android.widget.edittext; import android.widget.listview; import android.widget.simplecursoradapter; import android.widget.toast; public class MainActivity extends AppCompatActivity { private DatabaseHelper helper; private SimpleCursorAdapter adapter; private Cursor kelimelistesicursor; private String[] projection = new String[] { DictionaryContract.Kelime._ID, DictionaryContract.Kelime.COLUMN_AD, DictionaryContract.Kelime.COLUMN_ACIKLAMA ; private String[] from = new String[] { DictionaryContract.Kelime.COLUMN_AD, DictionaryContract.Kelime.COLUMN_ACIKLAMA ; private int [] to = new int[] { R.id.adListItemTextView, R.id.aciklamaListItemTextView ; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); ekrankontrolleriniolustur(); private void ekrankontrolleriniolustur() { helper = new DatabaseHelper(this); SQLiteDatabase db = helper.getreadabledatabase(); kelimelistesicursor = butunkelimelerisorgula(); adapter = new SimpleCursorAdapter(this,R.layout.list_item, kelimelistesicursor, from, to, 0);

26 Mobil Ugulama Ders Notları final EditText adedittext = (EditText) findviewbyid(r.id.adedittext); final EditText aciklamaedittext = (EditText) findviewbyid(r.id.aciklamaedittext); Button kaydetbutton = (Button) findviewbyid(r.id.kaydetbutton); kaydetbutton.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { String ad = adedittext.gettext().tostring(); String aciklama = aciklamaedittext.gettext().tostring(); kelimeekle(ad, aciklama); ); Button guncellebutton = (Button) findviewbyid(r.id.guncellebutton); guncellebutton.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { String ad = adedittext.gettext().tostring(); String aciklama = aciklamaedittext.gettext().tostring(); kelimeguncelle(ad, aciklama); ); Button silbutton = (Button) findviewbyid(r.id.silbutton); silbutton.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { String ad = adedittext.gettext().tostring(); kelimesil(ad); ); ListView sozluklistview = (ListView) findviewbyid(r.id.sozluklistview); sozluklistview.setadapter(adapter); sozluklistview.setonitemclicklistener(new OnItemClickListener() { public void onitemclick(adapterview arg0, View view, int position, long id) { //adapter.setselectedposition(position); edittextguncelle(kelimelistesicursor, position, adedittext, aciklamaedittext); ); private int getkelimeid(string ad) { Cursor cursor = kelimesorgula(ad); if(cursor == null) return -1; int count = cursor.getcount(); if(count!= 1) return -1; cursor.movetonext(); int idindex = cursor.getcolumnindex(dictionarycontract.kelime._id); return cursor.getint(idindex); private Cursor kelimesorgula(string ad) { if(ad == null) throw new RuntimeException("Kelime adý sorgulama iþlemi için boþ býrakýlamaz"); String where = DictionaryContract.Kelime.COLUMN_AD + "=?";

27 Mobil Ugulama Ders Notları String [] whereargs = new String [] {ad; SQLiteDatabase db = helper.getreadabledatabase(); Cursor cursor = db.query(dictionarycontract.table_name, projection, where, whereargs, null, null, null); return cursor; private long kelimeekle(string ad, String aciklama) { int kelimeid = getkelimeid(ad); if(kelimeid!= -1) { Toast.makeText(getApplicationContext(), "Bu kelime daha önce eklenmiþtir", Toast.LENGTH_LONG).show(); return -1; ContentValues satir = new ContentValues(); satir.put("ad", ad); satir.put("aciklama", aciklama); SQLiteDatabase db = helper.getwritabledatabase(); long eklenenkelimeid = db.insert(dictionarycontract.table_name, null, satir); listeguncelle(); return eklenenkelimeid; private void kelimeguncelle(string ad, String aciklama) { ContentValues guncelsatir = new ContentValues(); guncelsatir.put("ad", ad); guncelsatir.put("aciklama", aciklama); int kelimeid = getkelimeid(ad); if(kelimeid == -1) { Toast.makeText(getApplicationContext(), "Güncellenecek kelime bulunamadý", Toast.LENGTH_LONG).show(); return; SQLiteDatabase db = helper.getwritabledatabase(); String where = DictionaryContract.Kelime._ID + "=" + kelimeid; db.update(dictionarycontract.table_name, guncelsatir, where, null); listeguncelle(); private void kelimesil(string ad) { int kelimeid = getkelimeid(ad); if(kelimeid == -1) { Toast.makeText(getApplicationContext(), "Silinecek kelime bulunamadý", Toast.LENGTH_LONG).show(); return; SQLiteDatabase db = helper.getwritabledatabase(); String where = DictionaryContract.Kelime._ID + "=" + kelimeid; db.delete(dictionarycontract.table_name, where, null); listeguncelle();

28 Mobil Ugulama Ders Notları private void edittextguncelle(cursor cursor, int position, EditText adedittext, EditText aciklamaedittext) { cursor.movetoposition(position); int adindex = cursor.getcolumnindex(dictionarycontract.kelime.column_ad); int aciklamaindex = cursor.getcolumnindex(dictionarycontract.kelime.column_aciklama); String ad = cursor.getstring(adindex); String aciklama = cursor.getstring(aciklamaindex); adedittext.settext(ad); aciklamaedittext.settext(aciklama); private void listeguncelle() { kelimelistesicursor.requery(); adapter.notifydatasetchanged(); private Cursor butunkelimelerisorgula() { SQLiteDatabase db = helper.getreadabledatabase(); return db.query(dictionarycontract.table_name, projection, null, null, null, null, null); DictionaryContact.java import android.net.uri; import android.provider.basecolumns; public final class DictionaryContract { public static final String AUTHORITY = "com.kodlab.dictionary.provider.dictionaryprovider"; public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY); public static final String DATABASE_NAME = "sozluk"; public static final String TABLE_NAME = "kelime"; public static final int DATABASE_VERSION = 1; public static class Kelime implements BaseColumns { private Kelime() { public static final Uri CONTENT_URI = Uri.withAppendedPath(AUTHORITY_URI, "kelime"); public static final String CONTENT_TYPE = "vnd.android.cursor.dir/net.sevketkeser.sozluk.provider.dictionaryprovider.kelime"; public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/net.sevketkeser.sozluk.provider.dictionaryprovider.kelime"; public static final String COLUMN_AD = "ad"; public static final String COLUMN_ACIKLAMA = "aciklama"; public static final String DEFAULT_SORT_ORDER = "ad ASC";

29 Mobil Ugulama Ders Notları public static final String[] FULL_PROJECTION = new String[] {_ID, COLUMN_AD, COLUMN_ACIKLAMA; DatabaseHelper.java import android.database.sqlite.sqliteopenhelper; import android.content.context; import android.database.sqlite.sqlitedatabase; import android.util.log; public class DatabaseHelper extends SQLiteOpenHelper { public static final String DATABASE_CREATE = "CREATE TABLE " + DictionaryContract.TABLE_NAME + " (" + DictionaryContract.Kelime._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + DictionaryContract.Kelime.COLUMN_AD + " TEXT NOT NULL, " + DictionaryContract.Kelime.COLUMN_ACIKLAMA + " TEXT);"; public static final String DATABASE_DROP = "DROP TABLE IF EXISTS " + DictionaryContract.TABLE_NAME; public DatabaseHelper(Context context) { super(context, DictionaryContract.DATABASE_NAME, null, DictionaryContract.DATABASE_VERSION); public void oncreate(sqlitedatabase db) { db.execsql(database_create); public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { Log.w("DatabaseHelper", "Veritabani " + oldversion + "\'dan" + newversion + "\'a guncelleniyor"); db.execsql(database_drop); oncreate(db);

30 Mobil Ugulama Ders Notları 13-Sensörler Android cihazlarda bulunan başlıca sensörler aşağıda listelenmiştir. No Sensör Adı İşlev 1 TYPE_ACCELEROMETER İvme Ölçer 2 TYPE_AMBIENT_TEMPERATURE Ortam Sıcaklığı 3 TYPE_GRAVITY Yerçekimi 4 TYPE_GYROSCOPE Denge 5 TYPE_LIGHT Işık 6 TYPE_LINEAR_ACCELERATION Doğrusal İvme 7 TYPE_MAGNETIC_FIELD Manyetik Alan 8 TYPE_ORIENTATION Yön Belirleme 9 TYPE_PRESSURE Basınç 10 TYPE_PROXIMITY Yakınlık 11 TYPE_RELATIVE_HUMIDITY Nem 12 TYPE_ROTATION_VECTOR Dönme Vektörü 13 TYPE_TEMPERATURE Sıcaklık 13.1-Sensör Listesi Uygulaması:Cihazda bulunan sensörleri listeler. 13.1-Sensör Listesi Ekran Görüntüsü res\layout\activity_main.xml Dosyasi <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent" > android:id="@+id/sensorlisttextview" /> </ScrollView> MainActivity.java package net.sevketkeser.sensorlistesi; import android.content.context; import android.hardware.sensor; import android.hardware.sensormanager; import android.support.v7.app.appcompatactivity;

31 Mobil Ugulama Ders Notları import android.os.bundle; import android.widget.textview; import java.util.list; public class MainActivity extends AppCompatActivity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); // SensorManager nesnesi ile cihazdaki sensörlere erişiliyor. SensorManager sensormanager = (SensorManager) getsystemservice(context.sensor_service); // sensormanager nesnesinin getsensorlist metodu ile sensör listesi aliniyor. List<Sensor> sensorlist = sensormanager.getsensorlist(sensor.type_all); TextView sensorlisttextview = (TextView) findviewbyid(r.id.sensorlisttextview); StringBuilder stringbuilder = new StringBuilder(); // sensor listesi for dongusu icinde stringbuilder nesnesine dolduruluyor. for(sensor sensor : sensorlist) { "\n"); stringbuilder.append("ad : " + sensor.getname() + "\n"); stringbuilder.append("tip : " + sensor.gettype() + "\n"); stringbuilder.append("uretici : " + sensor.getvendor() + "\n"); stringbuilder.append("versiyon : " + sensor.getversion() + "\n"); stringbuilder.append("maksimum Aralýk : " + sensor.getmaximumrange() + stringbuilder.append("güç :" + sensor.getpower() + "\n"); stringbuilder.append("\n"); // string builder nesnesi textview icinde yazdırılıyor. sensorlisttextview.settext(stringbuilder.tostring()); 13.2-Hareket Sensörü - ivme ölçer, ivme nedir onu araştıralım. 13.2-Hareket Sensörü Ekran Görüntüsü

32 Mobil Ugulama Ders Notları res\layout\activity_main.xml Dosyasi <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_height="match_parent" > android:id="@+id/gercekivmetextview" android:textsize="14sp" android:layout_margin="5dp"/> android:id="@+id/lineerivmetextview" android:textsize="14sp" android:layout_margin="5dp"/> MainActivity.java Dosyasi package net.sevketkeser.hareketsensoru; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.app.activity; import android.content.context; import android.hardware.sensor; import android.hardware.sensorevent; import android.hardware.sensoreventlistener; import android.hardware.sensormanager; import android.os.bundle; import android.widget.textview; public class MainActivity extends Activity implements SensorEventListener { private static final float ALPHA = 0.9f; private SensorManager sensormanager; private Sensor accelerometersensor; private TextView gercekivmetextview; private TextView lineerivmetextview; private float[] gravity = new float[3]; private float[] linear_acceleration = new float[3]; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); // SensorManager nesnesi ile cihazdaki sensörlere erişiliyor. sensormanager = (SensorManager) getsystemservice(context.sensor_service); // ivme sensörüne erişiliyor. accelerometersensor = sensormanager.getdefaultsensor(sensor.type_accelerometer); gercekivmetextview = (TextView) findviewbyid(r.id.gercekivmetextview); lineerivmetextview = (TextView) findviewbyid(r.id.lineerivmetextview); public final void onaccuracychanged(sensor sensor, int accuracy) { // cihazdaki ivme sensörününden gelen veriler değiştikce değerleri ekrana yazdıran metod. public final void onsensorchanged(sensorevent event) {