Mobil Uygulama Ders Notları v0.5

Benzer belgeler
Mobil Uygulama Ders Notları v0.6

MOBİL UYGULAMA GELİŞTİRME

Android ile SQLLite Veri Tabanı

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

Android Kaynakları (Resources)

MOBİL UYGULAMA GELİŞTİRME

Bazı Akıllı Telefon Sensörleri

Proje 1. Arayüz Tasarımı

MOBİL UYGULAMA GELİŞTİRME

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

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

(09/05/2016)

Android Ders Notları

Android Cep Telefonu Programlama

Espresso ile Android Uygulama Testi

Android Database SQLLite

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

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?

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

Android Studio Dersleri

Activity Context.startActivity Activity, AndroidManifest

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

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

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

MOBİL UYGULAMA GELİŞTİRME

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

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

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

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

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

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

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.

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

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

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

İ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İ

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

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

CUSTOMSLİDİNG KULLANIMI

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

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

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

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

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

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

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

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

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

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.

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

C# ile NJ Simulatöre Bağlanmak

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

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

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI

HSancak Nesne Tabanlı Programlama I Ders Notları

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

Java Programlamaya Giriş

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

ECLIPSE PROGRAMININ ÇALIŞTIRILMASI

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

Java da İstemci Tarafı Uygulamalar

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

Android Platformunda Uygulama Geliştirme.

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

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ü

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

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

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

Görsel Programlama 1

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

Programlama Dillerinde Kullanılan Veri Tipleri

SINIF İÇİ UYGULAMA KODLARI

RoboGuice ve Android Annotations ile Verimli Android Uygulama Geliştirme Emrah Ayanoğlu, Onur Özcan, Alperen Eraslan. Inet-TR 12 9 Kasım 2012

Command Nesnelerini Kullanarak Tablolarda Değişiklik Yapmak:

Erişim konusunda iki taraf vardır:

ASP.NET ile Bir Web Sitesi Oluşturma

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

NESNEYE YÖNELİK PROGRAMLAMA

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

MOBİL UYGULAMA GELİŞTİRME

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

1 LK ANDROID YAZILIMIMIZ VE ÖN HAZIRLIKLAR

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

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

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi SERVİS BİLEŞENLERİ. 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.

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Veritabanı İşlemleri

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

Kullanıcı Dökümanı. Flash B2B. Versiyon 0.1

«BM364» Veritabanı Uygulamaları

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

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Windows Mobile İşletim Sistemleri İçin Veri Giriş Yazılımı

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

Java Programlama Giriş

Transkript:

İçindekiler Mobil Uygulama Ders Notları v0.5 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> <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; 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) { intent = new Intent(MainActivity.this, SecondActivity.class); startactivity(intent); ); 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; protected void oncreate(bundle savedinstancestate){ super.oncreate(savedinstancestate);

20 Mobil Ugulama Ders Notları setcontentview(r.layout.activity_second); geributon = (Button) findviewbyid(r.id.geributon); geributon.setonclicklistener(new View.OnClickListener() { public void onclick(view view) { geriintent = new Intent(SecondActivity.this, MainActivity.class); startactivity(geriintent); ); 10.2- Activiteler Arasi Parametreli Geçiş-Uygulama 10.2.1-Bundle Nesnesi 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"> <LinearLayout android:orientation="vertical" > android:text="sayi Girin:" android:id="@+id/sayitext" /> <EditText

21 Mobil Ugulama Ders Notları 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> </activity> <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>

22 Mobil Ugulama Ders Notları 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 { 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 = new Intent(MainActivity.this, SecondActivity.class); bundle = new Bundle(); bundle.putstring("sayi", sayiedittext.gettext().tostring()); intent.putextras(bundle); ); startactivity(intent); 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 { EditText gelensayiedittext; Button geributon; protected void oncreate (Bundle savedinstancestate){ super.oncreate(savedinstancestate); setcontentview(r.layout.activity_second); gelensayiedittext = (EditText) findviewbyid(r.id.gelensayiedittext); geributon = (Button) findviewbyid(r.id.geributon); Bundle data = getintent().getextras(); gelensayiedittext.settext(data.getstring("sayi"));

23 Mobil Ugulama Ders Notları // Main Activiy'e geri don. geributon.setonclicklistener(new View.OnClickListener() { public void onclick(view view) { Intent geriintent = new Intent(SecondActivity.this, MainActivity.class); startactivity(geriintent); );... 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" > <EditText android:id="@+id/adedittext" android:hint="@string/titlead" > </EditText> <EditText android:id="@+id/aciklamaedittext" android:hint="@string/titleaciklama" > </EditText> <LinearLayout

24 Mobil Ugulama Ders Notları 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 <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;

25 Mobil Ugulama Ders Notları 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); 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);

26 Mobil Ugulama Ders Notları ); 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() { id) { public void onitemclick(adapterview arg0, View view, int position, long //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 + "=?"; String [] whereargs = new String [] {ad; SQLiteDatabase db = helper.getreadabledatabase();

27 Mobil Ugulama Ders Notları 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"; public static final String[] FULL_PROJECTION = new String[] {_ID, COLUMN_AD, COLUMN_ACIKLAMA;

29 Mobil Ugulama Ders Notları 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 13.1-Sensör Listesi Ekran Görüntüsü 13.1-Sensör Listesi 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; 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 sensormanager = (SensorManager) getsystemservice(context.sensor_service); List<Sensor> sensorlist = sensormanager.getsensorlist(sensor.type_all); TextView sensorlisttextview = (TextView) findviewbyid(r.id.sensorlisttextview); StringBuilder stringbuilder = new StringBuilder();

31 Mobil Ugulama Ders Notları 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"); sensorlisttextview.settext(stringbuilder.tostring()); 13.2-Hareket Sensörü Ekran Görüntüsü 13.2-Hareket Sensörü 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"/>

32 Mobil Ugulama Ders Notları 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 = (SensorManager) getsystemservice(context.sensor_service); 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) { public final void onsensorchanged(sensorevent event) { gravity[0] = ALPHA * gravity[0] + (1 - ALPHA) * event.values[0]; gravity[1] = ALPHA * gravity[1] + (1 - ALPHA) * event.values[1]; gravity[2] = ALPHA * gravity[2] + (1 - ALPHA) * event.values[2]; linear_acceleration[0] = event.values[0] - gravity[0]; linear_acceleration[1] = event.values[1] - gravity[1]; linear_acceleration[2] = event.values[2] - gravity[2]; String gercekivme = String.format("Gerçek İvme:\nX: %8.3f\nY: %8.3f\nZ: %8.3f", event.values[0], event.values[1], event.values[2]); String lineerivme = String.format("Lineer İvme:\nX: %8.3f\nY: %8.3f\nZ: %8.3f", linear_acceleration[0], linear_acceleration[1], linear_acceleration[2]); gercekivmetextview.settext(gercekivme); lineerivmetextview.settext(lineerivme); protected void onresume() { super.onresume(); sensormanager.registerlistener(this, accelerometersensor,

33 Mobil Ugulama Ders Notları SensorManager.SENSOR_DELAY_NORMAL); protected void onpause() { super.onpause(); sensormanager.unregisterlistener(this); 13.3-Pozisyon Sensörü Ekran Görüntüsü 13.3-Pozisyon Sensörü 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/gercekorientationtextview" android:textsize="14sp" android:layout_margin="5dp"/> android:id="@+id/hesaplananorientationtextview" android:textsize="14sp" android:layout_margin="5dp"/> MainActivity.java import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.hardware.sensor; import android.hardware.sensorevent; import android.hardware.sensoreventlistener; import android.hardware.sensormanager; import android.os.bundle; import android.app.activity; import android.content.context; import android.widget.textview;

34 Mobil Ugulama Ders Notları public class MainActivity extends Activity implements SensorEventListener { private SensorManager sensormanager; private Sensor orientationsensor; private Sensor accelerometersensor; private Sensor magneticfieldsensor; private TextView gercekorientationtextview; private TextView hesaplananorientationtextview; private float [] orientationsensorvalues = new float[3]; private float [] accelerometersensorvalues = new float[3]; private float [] magneticfieldsensorvalues = new float[3]; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); sensormanager = (SensorManager) getsystemservice(context.sensor_service); orientationsensor = sensormanager.getdefaultsensor(sensor.type_orientation); accelerometersensor = sensormanager.getdefaultsensor(sensor.type_accelerometer); magneticfieldsensor = sensormanager.getdefaultsensor(sensor.type_magnetic_field); gercekorientationtextview = (TextView) findviewbyid(r.id.gercekorientationtextview); hesaplananorientationtextview = (TextView) findviewbyid(r.id.hesaplananorientationtextview); public final void onaccuracychanged(sensor sensor, int accuracy) { public final void onsensorchanged(sensorevent event) { if (event.sensor.gettype() == Sensor.TYPE_ORIENTATION) orientationsensorvalues = event.values; if (event.sensor.gettype() == Sensor.TYPE_ACCELEROMETER) accelerometersensorvalues= event.values; if (event.sensor.gettype() == Sensor.TYPE_MAGNETIC_FIELD) magneticfieldsensorvalues = event.values; String gercekorientationstr = String.format("Gerçek Orientation (Yönelim):\nAzimuth:%3.0f\nPitch: %3.0f\nRoll: %3.0f", orientationsensorvalues[0], orientationsensorvalues[1], orientationsensorvalues[2]); gercekorientationtextview.settext(gercekorientationstr); float [] hesaplananorientation = orientationhesapla(); String hesaplananorientationstr = String.format("Hesaplanan Orientation (Yönelim):\nAzimuth: %3.0f\nPitch: %3.0f\nRoll: %3.0f", hesaplananorientation[0], hesaplananorientation[1], hesaplananorientation[2]); hesaplananorientationtextview.settext(hesaplananorientationstr); private float [] orientationhesapla() { float[] values = new float[3]; float[] R = new float[9]; SensorManager.getRotationMatrix(R, null, accelerometersensorvalues, magneticfieldsensorvalues); SensorManager.getOrientation(R, values);

35 Mobil Ugulama Ders Notları values[0] = (float) Math.toDegrees(values[0]); values[1] = (float) Math.toDegrees(values[1]); values[2] = (float) Math.toDegrees(values[2]); return values; protected void onresume() { super.onresume(); sensormanager.registerlistener(this, orientationsensor, SensorManager.SENSOR_DELAY_NORMAL); sensormanager.registerlistener(this, accelerometersensor, SensorManager.SENSOR_DELAY_NORMAL); sensormanager.registerlistener(this, magneticfieldsensor, SensorManager.SENSOR_DELAY_NORMAL); protected void onpause() { super.onpause(); sensormanager.unregisterlistener(this); 13.4-Light Sensörü Empty-Uygulama Ekran Görüntüsü Empty res\layout\activity_main.xml Dosyasi <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent" android:keepscreenon="true"> android:id="@+id/isikmiktaritextview" android:layout_centerhorizontal="true" android:layout_centervertical="true" android:textsize="35sp" android:textcolor="#f00"/>

36 Mobil Ugulama Ders Notları </RelativeLayout> MainActivity.java Dosyasi import android.os.bundle; import java.util.timer; import java.util.timertask; 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.view.windowmanager; import android.widget.textview; public class MainActivity extends Activity implements SensorEventListener { private SensorManager sensormanager; private Sensor isiksensoru; private TextView isikmiktaritextview; private float isikmiktari; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); sensormanager = (SensorManager) getsystemservice(context.sensor_service); isiksensoru = sensormanager.getdefaultsensor(sensor.type_light); isikmiktaritextview = (TextView) findviewbyid(r.id.isikmiktaritextview); Timer timer = new Timer(); timer.scheduleatfixedrate(new TimerTask() { public void run() { ekranguncelle();, 0, 1000); public final void onaccuracychanged(sensor sensor, int accuracy) { public final void onsensorchanged(sensorevent event) { isikmiktari = event.values[0]; private void ekranguncelle() { runonuithread(new EkranGuncelleRunnable()); private class EkranGuncelleRunnable implements Runnable { public void run() { if(isikmiktari >= SensorManager.LIGHT_SUNLIGHT) { isikmiktaritextview.settext("güneþlý"); ekranparlaklikayarla(0.25f); else if(isikmiktari >= SensorManager.LIGHT_OVERCAST) { isikmiktaritextview.settext("kapali"); ekranparlaklikayarla(0.5f); else if(isikmiktari >= SensorManager.LIGHT_CLOUDY) { isikmiktaritextview.settext("bulutlu"); ekranparlaklikayarla(0.75f); else { isikmiktaritextview.settext("gece KARANLIÐI"); ekranparlaklikayarla(1.0f);

37 Mobil Ugulama Ders Notları private void ekranparlaklikayarla(float parlaklik) { WindowManager.LayoutParams layoutparams = getwindow().getattributes(); layoutparams.screenbrightness = parlaklik; getwindow().setattributes(layoutparams); protected void onresume() { super.onresume(); if(isiksensoru!= null) sensormanager.registerlistener(this, isiksensoru, SensorManager.SENSOR_DELAY_NORMAL); protected void onpause() { super.onpause(); sensormanager.unregisterlistener(this); ekranparlaklikayarla(-1.0f);.. etc Mobil Ugulama Dersi WWW Kaynakları Android https://denizkilinc.com/2013/07/02/android-isletim-sistemi-mimarisi-kernel-libraries-runtime-framework-dvm/ http://kod5.org/category/mobil/android/ Java https://www.mobilhanem.com/temel-java-egitimleri/