ANDROID PROGRAMLAMA. Android mimarisi, 1. Linux çekirdeği. 2. Kütüphaneler 3. Android çalışma zamanı (runtime), 4. Uygulama geliştirme çatısı



Benzer belgeler
EĞİTİMDE BİLGİSAYAR PROGRAMLAMA

ASP.NET ile Bir Web Sitesi Oluşturma

DORYA ROBOTİK. İçindekiler. Kitap Sayfa Sayısı: 80 Kitap Fiyatı: 24,00 TL

Android Ders Notları

Proje 1. Arayüz Tasarımı

Kodlama Paneli. Nazmiye Demirel Ortaokulu SCRATCH Scratch bir grafik programlama dilidir.

Kabuk Programlama (Bash)

HESAP MAKİNASI YAPIMI

App İnventor-Pide Sipariş Uygulaması

2 APP INVENTOR A ILK ADIM

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Testimizin ilk sayfası: bu kısımda kullanıcıdan adını girmesini ve teste başlamasını istiyoruz.

UYGULAMALAR. İkinci liste kutusu (List 2) Birinci liste Kutusu (List 1) Metin Kutusu

Mobil Programlamanın Önemi

YZM 2105 Nesneye Yönelik Programlama

İnternet,artık hayatımızın önemli bir parçası. Her gün interneti programlar aracılığı ile ya da internet siteleri aracılığı ile kullanıyoruz.

Dinamik Kodlama. [X] [X] Yeni Fonksiyon

Scratch 2.0 GOL OYUNU

APP İNVERTOR 2 PROJE RAPORU

YZM 2105 Nesneye Yönelik Programlama

Çözüm :RadioButtonList1 kontrolunuekliyoruz.enableautopostback iaktifleştiriyoruz..

RPMNET WOLVOX REPORTER

Bölüm 10: PHP ile Veritabanı Uygulamaları

24 Kasım 2011 / Perşembe

HSancak Nesne Tabanlı Programlama I Ders Notları

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

12 TBT / WEB TASARIM ve PROGRAMLAMA ( Not 3 )

Fatura Dinamik Kodlama İyileştirmeleri

KENDİ ÇİZİM PROGRAMIMIZI OLUŞTURALIM

PERKON PDKS Kurulum ve hızlı başlangıç rehberi

1 Aralık 2011 / Perşembe

KENDİ ÇİZİM PROGRAMIMIZI OLUŞTURALIM

Google Search API ile ajax arama

Response : Sunucunun istemciye veri yollamasını

Vsp Teknoloji Son sistem güvenlik duvarlarıyla korunmaktadır, Kullanıcı bilgilerini doğru girdiğinde giriş sayfasına bağlanacaktır.

MOBIL UYGULAMA GELIŞTIRME

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

SM 100 Terazi Ayarları. Digi SM 100. SM 100 Terazi Ayarları

Masa üstünde vt34.mdb dosyası var, onu projemize eklemek için, App_Data ya sağ tıkla Add Existing Item vt34.mdb adlı dosyayı seç Add

Mikro Ayarları. Mikro Programının kurulu olduğu veritabanı ve web servisi için bağlantı ayarlarının yapıldığı menüdür.

Öğr. Gör. Serkan AKSU 1

Kayan Yazı LED Tabela Kullanım Klavuzu

New Project. User guide

Kullanım Kılavuzu Milli Eğitim Bakanlığı 2010

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

PDF Dokümanlarının Kopyalanmaya ve Yazdırılmaya Karşı Korumalı Olarak Hazırlanması Hakkında Kullanım Kılavuzu

Kullanım Kılavuzu

T.C. istanbul ÜNiVERSiTESi ÖĞRENCi BiLGi SiSTEMi. ÖĞRETiM ELEMANI KULLANIM KILAVUZU

e-imzatr Kurulum Klavuzu

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

Şekil 2.1. Bu bölümde ASP.Net platformumuzu açtığımızda Toolbox penceresindeki Standart bölümündeki kontrollerden bahsedeceğiz.(şekil 2.2) Şekil 2.

VET ON KULLANIM KLAVUZU

Önce Access açıp,masaüstü ne, vt.mdb adlı veri tabanı dosyasını oluşturuyoruz. Kayıt türünü seçiyoruz

WEB TASARIM. CSS, IFRAME, TEMPLATE, SLICE, INCLUDE(php komutu) Tarık ÖZEL

TAKSİ-DURAK MÜŞTERİ TAKİP PROGRAMI

C# Form Uygulamaları. Nesne Tabanlı Programlama I (C#) Ders Notu. S.Ü.Akören A.R.E. Meslek Yüksekokulu C.ÖZCAN- F.SARAY

Flash ile Etkileşimli Öğretim Materyali Hazırlama Semineri

Başlangıç Ayarları.

KOD PARÇACIKLARI 1 / 5

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Bu gün dersimizde değişik web kontrollerinin kullanımını gösteren birkaç web sitesi hazırlayacağız. Önce Visual Studio 2005 i açalım.

Kullanmakta olduğunuz tarayıcınızın (internet explorer, firefox, chrome vs.) açınız ve adres çubuğunuza adresini yazınız.

Üst Düzey Programlama

Küresel personel takip programı bordro, mesai hesaplama sürenizi ve alacağınız raporları en kısa sürede almanız için hazırlanmıştır.

WAMP SERVER KURULUMU

JavaScript Örnekleri PDF

İdari Birimler Yönetim Paneli Kullanma Kılavuzu Bilgi İşlem Daire Başkanlığı Web Tasarım Ve Yazılım Birimi

Nevşehir Hacı Bektaş Veli Üniversitesi. Moodle Uzaktan Eğitim Sistemi. Öğretim Elemanı Bilgilendirme Kılavuzu

Data Structures Lab Güz

ILI9341 TFT Dokunmatik Ekranda Kalemle Çizim Yapmak için Visuino ile Arduino Programlama

DYNED SİSTEMİNİ AKTİF OLARAK KULLANMAK İÇİN ÖĞRETMEN OLARAK HANGİ İŞLEMLER YAPACAĞIZ AŞAĞIDA ADIM ADIM YAZILMIŞTIR

GÖRÜNÜM OLAYLAR KALEM

WEB FORM ELEMANLARI. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

<html> <head> <title>sayfa Başlığı</title> </head> <body> Bu benim ilk sayfam <b>bu metin koyu</b> </body> </html>

Analiz Raporu. Projenin amacının, konusunun, işlevinin ne olacağı, hangi yazılımlar kullanılacak gibi parametrelerin belirlenmesi.

Ecat 8. Hakbim Bilgi İşlem A.Ş. Versiyon

SAP Sisteme Kayıtlı Personel Fotoğrafını Dışarı Alma

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

GRAFİK TASARIM. ACTION SCRIPT 3.0 Ders1 YARD. DOÇ. DR. MEHTAP YALÇINKAYA

GÖRSEL PROGRAMLAMA ARAÇLARI APP INVENTOR ARŞ. GÖR. SERHAT ALTIOK KIRIKKALE ÜNİVERSİTESİ

4. Bölüm Programlamaya Giriş

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


Resim 1. Access açılış sayfası. Resim 2. Access veri tabanı düzenleme sayfası

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

İş Akış Yönetimi LOGO Kasım 2014

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

Samsun Çocuk Hizmetleri İ l Koordinasyon Sekretarya Birimi

HSancak Nesne Tabanlı Programlama I Ders Notları

Mobil Uygulama Kullanma Kılavuzu

KASIM 2016 MKYS ZİMMET ANDROID MOBİL UYGULAMASI STOK TAKİP VE ANALİZ DAİRE BAŞKANLIĞI T.C. SAĞLIK BAKANLIĞI

Kanal Ziyaret Sonuçlandırma Ekranı Kullanım Kılavuzu

Üst Düzey Programlama

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR

SHOP INGENICO DOKUMANI

T.C. MĠLLÎ EĞĠTĠM BAKANLIĞI EĞĠTĠM TEKNOLOJĠLERĠ GENEL MÜDÜRLÜĞÜ BĠLĠġĠM HĠZMETLERĠ DAĠRESĠ MEZUN ÖĞRENCĠ SORGULAMA MODÜLÜ KULLANIM KILAVUZU

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ü

SCRATCH KONU ANLATIM KAĞIDI BAY KODLAMA (baykodlama.blogspot.com)

2. HTML Temel Etiketleri

2. SCADA PROGRAMI. TEOS' un size sunduğu bir çok hizmet içerisinde en önemlilerini şöyle sıralayabiliriz:

Transkript:

ANDROID PROGRAMLAMA Android, mobil cihazlar için geliştirilmiş Linux tabanlı bir işletim sistemidir. Bu işletim sistemini ilk kez Andy Rubin ve ekibinin kurduğu Android Inc. şirketi üretmiştir. Ancak şirket 2005 yılında Google çatısı alına girerek bu yıldan itibaren Google adına Linux kernel tabanlı mobil işletim sistemini geliştirmeye başlamıştır.5 Kasım 2007 tarihine gelindiğinde Google başta olmak üzere birçok yazılım ve donanım firmasının birlikte kurdukları Open Handset Alliance grubunun amacı, açık ve standart bir platform oluşturmaktı. Bu topluluğun kurulmasıyla birlikte Android adında açık kaynak kodlu Linux kernel v2.6 tabanlı bir mobil işletim sistemi duyuruldu. Android platformunun desteklenen uygulama uzantısı.apk dir. Bu sistemin kütüphaneleri, ara yüzü ve API leri C diliyle yazılmıştır. Uygulama yazılımları ise, Apache harmony üzerine kurulu Java uyumlu kütüphaneleri içine alan uygulama iskeleti üzerinden çalışmaktadır. Android, derlenmiş Java kodunu çalıştırmak için dinamik çevirmeli (JIT) Dalvik sanal makinasını kullanır ve cihazların fonksiyonelliğini artıran uygulamaların geliştirilmesi için çalışan geniş bir programcı-geliştirici çevresine sahiptir. Android mimarisi, 1. Linux çekirdeği 2. Kütüphaneler 3. Android çalışma zamanı (runtime), 4. Uygulama geliştirme çatısı 5. Uygulamalar katmanlarından oluşur. 1

AppInventor a Giriş AppInventor ilk kez Google tarafından ortaya çıkarılmış ancak sonrasında MIT (Massachusetts Institute of Technology) tarafından geliştirilen çevrimiçi bir uygulama geliştirme arayüzüdür. Daha öncesinde programlama konusunda tecrübesi olmayan herkese, görsel olarak sunduğu hazır kod bloklarını kullandırarak eğlenceli ve basit bir şekilde Android uygulaması geliştirme imkanı sağlamaktadır. Bu arayüze ulaşmak için: appinventor.mit.edu adresini tarayıcımıza yazdığımızda; sayfası bizi karşılar. Bu sayfada yeni bir uygulama başlatabilmek için; Create apps! butonunu tıklarız. Ancak burada dikkat edilmesi gereken nokta önceden alınmış bir Google gmail hesabının olmasıdır. MIT, bu projeyi Google ile ortak yürüttüğü için aktif bir Google hesabına ihtiyaç duyulmaktadır. Gmail hesabımız ile oturum açtıktan sonra onay ekranını geçip Android uygulamalarını oluşturacağımız tasarım ekranına ulaşıyoruz. Karşımıza gelen ekranda yapacağımız ilk iş Start New Project butonunu tıklamak ve projemize bir isim vermek olmalıdır. Ancak proje ismini belirlerken Türkçe karakter kullanmamaya özen göstermeliyiz. 2

Bizi karşılayan bu çevrimiçi arayüz sayesinde geliştireceğimiz Android uygulamasının hem görsel tasarım kısmına (Designer) hem de görsel kodlama kısmına (Blocks) sağ üst köşedeki birer buton yardımıyla ulaşmak mümkün. AppInventor un arayüzü Palette, Viewer, Components, Properties alanlarından oluşmaktadır. Bu alanları kısaca tanıyalım : Palette : Kullanılabilecek bileşenlerin listesi bulunmaktadır. Oluşturulacak bir Andorid uygulamasının arayüzünde bulunması istenen tüm nesnelere buradan ulaşılabilir. Viewer : Anlık olarak ekrana koyduğumuz nesneleri görebileceğimiz mobil cihazımızın kullanıcı tarafından görünen ekranıdır. Geliştiricinin (yani bizim) ekrana sürükleyip bıraktığı her nesne bu alanda görünür. Components : Projemizin altına eklediğimiz tüm bileşenlerin listesini verir. Pallette den sürükleyip bıraktığımız her bir bileşenin listelendiği alandır. Properties : Projemize eklediğimiz bileşenin özelliklerinin listelendiği alandır. Bu alandan üzerinde o esnada çalıştığımız bileşenin özelliklerine erişebilir ve birtakım değişiklikler yapabiliriz. Buradan sonra her programlama dilinin ilk uygulaması olan Merhaba Dünya ya geçelim. 3

İÇİNDEKİLER 1. İlk Uygulamamızı yapıyoruz : Merhaba Dünya 2. Uygulama 2 : İlk basit oyun uygulamam 3. Uygulama 3 : Değişkenlerle Çalışmak 4. Uygulama 4: Prosedürlerle Çalışmak 5. Uygulama 5 : Animasyon oluşturmak 6. Uygulama 6 : Kontrol Yapıları Kullanmak 7. Uygulama 7: Listelerle Çalışmak 8. Uygulama 8 : Döngülerle Çalışmak 9. Uygulama 9 : Veritabanı ile Çalışmak 10. Uygulama 10 : Sözlük Uygulaması 4

İlk Uygulamamızı yapıyoruz : Merhaba Dünya Butona bastığımızda ekranda Merhaba Dünya yazan bir uygulama yapmak için tasarım alanını seçiyoruz. Öncelikle çalışma alanımıza ( Viewer ) bir buton ve bir label nesnesini sürükleyip bırakıyoruz. Viewer alanında her iki bileşenin de oluştuğunu görüyoruz. Seçili olan bileşenle ilgili bir özelliği değiştirmek için Properties alanından bir müdahelede bulunabiliriz. Çalışma alanımıza eklediğimiz butonun üzerindeki yazıyı değiştirip butona uygulamamızdaki işlevini açıklayıcı nitelikte bir isim veriyoruz. Properties alanından butonun text özelliğini GÖSTER olarak değiştirelim. Label nesnesinin uygulama ilk çalıştırıldığında ekranda görünmesine gerek olmadığından Label in properties alanından visible (görünür olma) özelliğinin kliğini kaldırıp pasif yapıyoruz. Bu aşamada uygulamamızın tasarım (Designer) kısmından kodlama (Blocks) kısmına geçiş yapıyoruz. Viewer e eklediğimiz bu bileşenlere bazı görevler vermeye hazırız. Butonun bu uygulamadaki görevi kliklendiğinde Label1 in görünür olmasını sağlamak ve Merhaba Dünya yazısını ekranda göstermesini sağlamak olduğundan; 5

Blocks Screen1 Button1 seçtiğimizde bu butona ait olay döngüleri Viewer alanında listelenir. Biz butona kliklendiğimizde bir işlem yapmasını istediğimizden When Button1.Click.. do döngüsünü seçiyoruz. Bu durumdan etkilenecek bileşenimiz Label1 in text özelliğini Merhaba Dünya ile değiştirmek için Blocks Label1 bileşenini seçiyoruz. Label1 e ait vereceğimiz kod blockları Viewer alanında listelenmektedir. Label1 in text özelliğini Merhaba Dünya olarak ayarlamamız gerektiğinden bu durum Label1 Text özelliğini to.. set etmemiz anlamına gelmektedir. Merhaba Dünya ise text türünde sabit bir değer olduğundan Blocks Text alanını seçerek Viewer de listelenen string bloğuna Merhaba Dünya yazıyoruz ve bu string ifadeyi Label1 text to.. set bloğunun sonuna ekliyoruz. 6

(String Block) Ancak butonumuz kliklense bile kullanıcı Label1 nesnesini halen göremez. Çünkü uygulamamızın başında Label1 nesnesinin visible özelliğinin kliğini kaldırarak bu özelliği pasifleştirmiş, yani Label1 i görünmez yapmıştık. Label1 in görünür hale gelmesini kodlamada yapacağımız küçük bir müdahele ile sağlayacağız. Label1 in visible özelliğine true değerini atamak için Blocks Logic alanından seçim yapıyoruz. 7

Böylece ilk uygulamamızı tamamlamış oluyoruz. Uygulamamızı derlemek ve apk uzantılı bir dosya haline dönüştürmek için Build App menüsünü kullanıyoruz. Derleme işleminin tamamlanması uygulamanın büyüklüğüne göre belirli bir sürede gerçekleşiyor. Derleme tamamlandığında uygulamaya ait bir QR Kod oluşturuluyor. Bu kod uygulama dosyasının ( yeni1.apk ) android cihaza indirilmesini sağlıyor. Ancak android cihazda QR kodun okunmasını sağlayacak bir QR kod okuyucu uygulamasına ihtiyaç var. Uygulamamızı çalıştırıp GÖSTER butonuna tıkladığımızda Merhaba Dünya yazısı ile karşılaşıyoruz. 8

Uygulama 2 : İlk basit oyun uygulamam 0-3 yaş çocukların çok ilgisini çekebilecek çeşitli hayvan resimlerine tıklandığında o hayvanın sesini çıkaran ilk basit eğitici oyun uygulamasını geliştiriyoruz. Şimdilik hayvan sayısını 4 ile sınırlandıralım. Sırasıyla kedi, köpek, kuş, kuzuya ait resim ve ses dosyalarını projemize upload (yükleme) etmemiz gerekiyor. Ekrana user Interface Button ve Media Sound bileşenlerinden 4 er tane ekliyoruz. Her bir butona bir hayvan resmi ekliyoruz. Button1 seçiliyken properties image upload file özelliğinden ekleyeceğimiz kedi.png resminin yerini tarayıcıya gösteriyoruz. Sırasıyla her bir buton için bu işlemi tekrarlıyoruz. Burada dikkat edilmesi gereken noktalardan biri butonların üzerinde default olarak bulunan yazının (Text for Button4) silinmesidir. Button4 seçiliyken Properties text özelliğinde yazan bu yazı silinmelidir. Her bir sound bileşenine sırasıyla o hayvana ait indirdiğimiz ses efekti dosyalarını (mp3,wav,flac, ) ekliyoruz. Sound1 bileşeni seçiliyken properties source özelliğinden ekleyeceğimiz kedi.mp3 ses dosyasının yerini tarayıcıya gösteriyoruz. 9

Uygulamamızı android ortamda temsil edecek diğer uygulamalardan ayıracak en önemli gösterge uygulamamıza ait ikon dosyasıdır. Her uygulama zihnimizde kendi ikonu ile canlandığından biz de uygulamamıza bir ikon dosyası ekleyeceğiz. Screen1 seçiliyken properties icon özelliğinden png uzantılı resim dosyasının yerini tarayıcıya gösteriyoruz. Tasarım ve varsayılan hazırlıklarımızı tamamladıktan sonra projemizin kodlama kısmına geçebiliriz. Öncelikle blocks kısmını seçiyoruz. Her bir butona tıklandığında ses dosyaları çalınacağından Button1 seçiliyken listeden ; bloğunu seçiyoruz. Ardından sound nesnesinin kaynağına önceden yüklediğimiz ses dosyasını çalmasını istediğimizden Sound1 seçiliyken listeden; Bloğunu seçiyoruz. Ancak burada görsel olarak tamamlayıcı nitelikte spesifik bir bağ olduğunu görmeliyiz. Yani Button1 kliklendiğinde sound1 bileşeninin çalması için; 10

bloklarını birleştiriyoruz. Bu kodlamayı diğer tüm bileşenler için uyguladığımızda; kod bloğunu oluşturuyoruz. Artık uygulamamız hazır. Uygulamamızı Build App (QR code for apk) şeklinde yapılandırdığımızda android cihazımıza ilgili linkten indirip kurabiliriz. 11

Uygulama 3 : Değişkenlerle Çalışmak Her programlama dilinde olduğu gibi AppInventor da da değişken tanımlama metodu kullanılır. Değişken kullanımı bellek işlemleri açısından son derece önem taşır. Seçilecek değişkenin türü programın RAM hafızasında kaplayacağı yer ile orantılıdır. Programın boyutu arttıkça işleme süresi artacağından hız azalır. Optimum bir seviye yakalamak için bellek kullanımını iyi tasarlamalıyız. Değişkenler 2 farklı yapıda olurlar: Local ve global. Lokal değişkenler yerel değişkenler anlamına gelirler ve sadece kullanıldıkları prosedürün içinde geçerlidirler. Ancak global değişkenler programın her yerinde aynı değeri korurlar. 12

Şimdi iki değişken türü arasındaki farka örnek olarak; her butona basıldığında Lable2 deki 0 sayısını 1 arttıracak bir uygulama yapalım. Ekrana 1 buton ve 2 label ekleyelim. Buton ve label lerde görünüme ait gerekli düzenlemeleri yaptıktan sonra aşağıdaki kod bloklarını oluşturalım. Her butona bastığımızda kod bloğu 1 değerini döndürüyor. Çıktısını alıyoruz. Lokal tanımlı değişkenler ilgili metodun altında her bir event ta yeniden tanımlanır ve değer alırlar. Lokal değişken, her butona basıldığında yeniden tanımlanıp sıfıra eşitlendiği için sadece 1 kez değeri artıyor. Sonuç 1 de sabit kalıyor. Aynı uygulamayı global değişken tanımlayarak yapsaydık; 13

Kod bloğunu yazardık. sayi isimli değişkeni global olarak tanımlar ve sonucun aşağıdaki gibi sürekli arttığını gözlemlerdik. Uygulama 4: Prosedürlerle Çalışmak Butona her bastığımızda ya da telefonu her salladığımızda ekranın arka plan rengini değiştiren bir uygulama tasarlayalım. Öncelikle ekrana RENKLENDİR isminde bir buton ekleyelim. Daha sonra blocks kısmına geçerek kodlamaya başlayalım. 14

Bilgisayar ortamında renklenme RGB (red-green-blue) metoduyla üretildiği için; 0-255 aralığında 3 bileşenden oluşan bir renk tonunu random metoduyla üretiyoruz. Global olarak tanımladığımız red,green ve blue değişkenlerine random olarak ürettiğimiz bu değerleri atıyoruz. Ancak henüz elde ettiğimiz renk tonunu Screen1 in background a uygulamadık. Kod bloğunu uyguladığımızda; Rastgele üretilen 3 renk tonunu make color make list metoduyla birleştirip tek bir renk tonuna dönüştürüyoruz. Ardından bu elde ettiğimiz renk tonunu Screen1 in background una atıyoruz. Aynı yöntemi telefon sallandığında da yapılmasını istediğimizden; 15

şeklinde kodluyoruz.telefonu salladığımızda Screen1 in background u; Renk üretmeye devam ediyor. Ancak yukarıdaki kodlamada tekrar eden blokları tekrar yazmak yerine renklerin üretildiği ve tek bir renk metoduna dönüştürüldükleri kod bloğu bir prosedür içerisinde ifade edilebilirdi. Uzun kod satırları içinde tekrar eden kod bloklarını prosedürler ile oluşturmak kodlayıcının kod takibini daha rahat yapmasını sağlar. Kodlama esnasında oluşabilecek sorunlara da daha oluşmadan önlem alınmış olur. Ayrıca uygulamanın daha az yer kaplamasını sağlar. Eğer prosedür e input metodu kullanarak değer girersek kod bloğumuzu; 16

şeklinde güncellememiz gerekir. Burada prosedür e sonradan eklediğimiz inputl ar sayesinde renk değerlerini yolluyoruz. Prosedür dışarıdan girilen parametreler yardımıyla bir renk tonu oluşturuyor. Prosedürlerle çalışırken bazen dışarıdan parametre göndermek gerektiğinde yukarıdaki metodu kullanıyoruz. Ayrıca bu uygulamamızda telefon sallandığında renk tonu olarak siyah üreten kod bloğunu oluşturmak için tasarım aşamasında Screen1 e AccelerometerSensor1 i de eklememiz gerekiyor. Bu sensör ivme sensörü olup telefonla bir sallama gerçekleştirdiğimizde shaking event ini devreye sokmuş oluyoruz. 17

Dolayısıyla uygulamamızın son haline göre butona tıklandığında renk tonu olarak beyaz, telefon sallandığında ise renk tonu olarak siyah üretilip bu değer Screen1 in background una renklendir prosedür ü yardımıyla uygulanıyor. Bazen prosedürlerin bir değer döndürmeleri gerektiğinde; result lu olanları tercih edilir. Yukarıdaki örnekte olduğu gibi renkdegeri prosedür ü bir renk kodu oluşturup oluşturduğu renk değerini başka bir prosedür de kullanmak üzere bir result üretiyor. Ayrıca renklendir prosedür ü içerinde renkdegeri prosedür ü çağrılarak Screen1 in background u bir renk tonu üretiyor. Böylece prosedür lerin iç içe kullanımına da bir örnek vermiş oluyoruz. Dışta bulunan prosedür ü farklı iki event içinde çağırarak kullanmış olduk. 18

Uygulama 5 : Animasyon oluşturmak Bu uygulamamızda ekrana eklediğimiz bir ball (top) nesnesine zamana bağlı olarak hareket yeteneği kazandıracağız. Bunun için tasarım aşamasında ekrana zamana bağlı olarak çalışan Clock1 nesnesini ekliyoruz. Üzerinde hareket edilebilecek Canvas1 nesnesini ekliyoruz. Canvas1 in yükselik ve genişliğini Screen1 in boyutuna eşitlemek için Properties Height Fill Parent ve Properties Width Fill Parent olarak ayarlıyoruz. Son olarak ekrana Ball nesnesini ekliyoruz. Ball nesnesinin radius özelliğini 30 olarak değiştiriyoruz. 19

için; Sürekli farklı noktalardan erkanın en üstünden en altına doğru düşen bir top olması kodlamasını yapıyoruz. Screen1 in ilk yüklenmesi esnasında 1 kez çalışan Initialize event ini random x_deger i üretmek için kullanıyoruz. Burada dikkat edilmesi gereken nokta x_deger i üretirken Canvas1 in genişliğinin içerisinde ve topun genişliğinden de eksik bir değer üretebilmek. Eğer bu işlemi yapmazsak topun bir kısmı veya tamamı ekranın dışında oluşabilir. Bu kontrolü Canvas1 in genişliğinden topun genişliğini çıkararak elde ediyoruz. Clock1 nesnesinin her bir clock sinyalinde Ball1 nesnesi; ekranın rastgele üretilen x değerinde y=0 noktasından başlayarak aşağıya doğru düşüyor gibi görünür. Ball1 nesnesi herhangi bir kenara geldiğinde EdgeReached event i çalışır. Yeni bir x_deger i üreterek y=0 noktasından tekrar düşme hareketi başlar. İstenilen yönde bu hareketi vererek hayal dünyanızın izin verdiği ölçüde animasyonlar oluşturabilir, hareketli oyunlar tasarlayabilirsiniz. 20

Uygulama 6 : Kontrol Yapıları Kullanmak Bu uygulamamızda kontrol yapılarından if-then yapısını inceleyeceğiz. Balon yakalama oyununu geliştirirken if-then yapısının nasıl kullanıldığını da öğreneceğiz. Öncelikle bu uygulamamız için tasarım ekranındayken Screen1 e bir Canvas nesnesi ekliyoruz. Canvas nesnesi üzerinde animasyon oluşturabileceğimiz bir nesnedir. Canvas ın genişliğini Properties penceresinden Full Parent olarak seçiyoruz. Yüksekliğini ise 300px seçiyoruz. Ekrana Label nesnesi ekleyerek yakalanan balon sayısını bu label da göstereceğiz. Balonun zamana bağlı olarak hareket etmesini istediğimiz için Clock nesnesini de projemize eklememiz gerekiyor. Canvas alanının üzerinde hareketli bir resim tutucu olarak ImageSprite nesnesini de Canvas1 in altına eklememiz gerekiyor. ImageSprite1 nesnesinin picture özelliğine; daha önceden bilgisayarımıza indirdiğimiz balon.png resmini ekliyoruz. Uygulamamızı kodlamaya başlayabiliriz. İlk olarak yakalanan balon sayısını saklamak üzere global yakalanan_sayisi isminde bir değişken oluşturuyoruz. İlk değer olarak 0 atamasını yapıyoruz. 21

Her defasında ekranın herhangi bir yerine balonu rastgele taşımak için balonu_tasi isminde bir prosedür oluşturuyoruz. Bu prosedür x ve y koordinatlarını random metodu ile üretmektedir ve balonu bu koordinatlara taşımaktadır. Ekran ilk kez yüklendiğinde balonu_tasi prosedürünü çağırmak için Screen1 in Initialize event ını kullanıyoruz. Ardından zamana bağlı olarak balonun yerinin rastgele oluşması için Clock1 nesnesinin timer ında balonu_tasi prosedürünü çağırıyoruz. Canvas1 in üzerine dokunulduğunda aktif hale gelen Canvas1.Touched event ı sayesinde dokunulan noktaya ait x,y koordinat bilgisini ve üzerindeki resime dokunulup dokunulmadığı bilgisini öğrenebiliriz. Canvas1 in üzerindeki resime dokunulduysa yakalanan_sayisi ni bir arttırmak için; 22

Bloğunu kullanmamız gerekir. İf blokları düz bir akışa sahip olan program bloklarının dallanmalarına yol açarlar. Program if bloğunun kullanıldığı noktada bir kırılmaya uğrar. İf bloğunda belirtilen şart sağlanırsa then bloğundaki satılar yerine getirilirken şart sağlanmazsa then bloğundaki satırlar ihmal edilir. Yukarıdaki kod bloğunda Eğer resime tıklandıysa ( if ( get (touchedanysprite) ) ise then bloğunun içerisindeki satırlar yürütürlür. Yani yakalanan_sayisi global değişkeninin değeri 1 arttırılır. Ancak Canvas1 in üzerindeki herhangi bir nokta tıklandıysa ve bu balon resmi değilse if bloğunun şartı sağlanmadığından then satırları işletime alınmaz. Uygulamamıza yeni bir kontrol daha ekleyelim. Örneğin, Canvas1 e tıklandığında ama resme denk getirilemediğinde de Boşa tıklanan diye başka bir sayacı aktif edelim. Burada if bloğumuz, 23

yapısında karşımıza çıkıyor. Bu yapıda ilk olarak 1.şart sağlanırsa yani Canvas1 in üzerindeki resim tıklandığında yakalanan_sayisi 1 arttırılırken, Canvas1 tıklandığında fakat resme denk gelmediğinde 2.şart sağlanmış oluyor. Bu durumda 2. then bloğundaki kodlar çalıştırılıyor. Yani boşa_tiklanan değişkeninin sayısı 1 arttırılıyor. Uygulama 7: Listelerle Çalışmak ListView nesnesi projelerimizde listeler oluşturmak, bu listeleri yeni bilgiler girmek, listeden bir bilgiyi seçmek, listeden bir bilgiyi silmek amacıyla kullanılır. Bu uygulamamızda örnek bir sınav hazırlayacağız. Öncelikle işimize yarayacak 3 tane liste oluşturuyoruz. Resim listesi, soru listesi ve cevap listesi. Aynı soruya karşılık gelen resim ve cevap ilgili listelerin aynı indeksine sahip olmalıdırlar. 24

Listelerin içine bilgiler make a list metodu ile girildikten sonra Screen1 in ilk yüklenmesinde çalışan Initialize event inde listelerden 1. Soru ve 1.resmi yüklüyoruz. Bu haliyle ilk soru ve ilk resim ekranda görüntülenmelidir. İlk soru ve resmin ardından Cevapla butonunun Click olayında TextBox a hiçbir değer girilmezse bir uyarı mesajı verdirip eğer kullanıcının girdiği texbox ın içindeki değer ile cevap listesinin içindeki değer aynı ise ekrana Tebrikler mesajı verecek, değilse Üzgünüm mesajı verecektir. 25

Sıradaki soru butonuna tıklandığında ise; bir önceki soruya ait cevabın silinmesi, doğru yanlış mesajının verildiği label ın text inin silinmesi, soru numarasının bir arttırılması, soru numarası listenin eleman sayısından fazla olduysa tekrar 1. Soruya dönülmesinin sağlanması ve soru ve soruya ait resmin sürekli getirilmesi gerekmektedir. Aşağıdaki kod bloğu bu amaçla yazılmıştır. Listelerde aşağıdaki metodlar kullanılır : 1) Listeye item lerini girerek Liste yi oluşturmak için kullanılır. 26

2) Index numarası girilen Listenin ilgili item indeki bilgiyi almak için kullanılır. 3) Listedeki toplam eleman sayısını verir. 4) Yeni boş bir liste oluşturmak için kullanılır. 5) Liste adı verilen listenin ilgili indeksine yeni bir eleman eklemek için kullanılır. 6) Listenin ilgili indeksindeki elemanı siler. 7) List2 yi List1 e eklemek için kullanılır. Uygulama 8 : Döngülerle Çalışmak Her programlama dilinin olmazsa olmaz metodlarının başında döngüler gelir. Rutin işlerin hızlıca yapılmasında, kontrol bloklarının birden fazla durum ve 27

elemanda test edilmesinde, şartlara bağlı olarak sonlu ya da sonsuz tekrarların oluşturulmasında kullanılırlar. Bu uygulamamızda For each metodu ile 1-100 arası rastgele ürettiğimiz 5 sayıyı ListView e ekleyip ekranda göstereceğiz. İlk önce tasarım modunda ekrana 1 label, 1 buton bir de ListView ekliyoruz. Tüm kodlar buton un klik olayı ile gerçekleşeceği için Button1.Click event ine kodlarımızı yazıyoruz. Rastgele 5 adet sayı üretmemiz gerekiyor. Öncelikle bunun için; For each döngüsünü tanıyalım : For each ; başlangıç ve bitiş değeri ile artış miktarını baştan tanımladığımız bir döngü çeşididir. Başlangıç bitiş değerleri arasındaki miktar kadar döner. Do bloğuna yazılan kodları bu sayıda gerçekleştirir. Boş olarak oluşturduğumuz listeye 1-100 arası random metoduyla rastgele sayı oluşturup, döngünün her dönüşünde number değerine karşılık gelen index numarasına yeni bir eleman olarak kaydediyoruz. Ürettiğimiz sayıları ListView in içerisine Elements to.. metodu ile sırayla ekliyoruz. 28

Uygulamamızın çalıştırıldıktan sonra ÜRET butonuna tıklanmasıyla oluşan erkan çıktısı yukarıdaki gibidir. Aynı örneği While Do döngüsü ile yapmak istersek; şeklinde kodlarız. While -Do döngüsündeki farklılıklara bir göz atalım. Öncelikle şart sağlanırsa döngünün içine girer. Bu örnekte başlangıç şartı sayaç ın 6 dan farklı olmasıdır. Sayaç isimli lokal değişkenin ilk değerini 1 olarak atadığımız için akış while döngüsünün içine girer. Liste nin sayaç ile belirlediğimiz indeksine rastgele ürettiği sayıyı ekler. Sayaç değişkenini 1 arttırır. Tekrar şart bloğuna geri döner. Burada tekrar şart kontrol edilir. Şart sağlandığı sürece do bloğundaki tüm komutlar sırasıyla işletilir., Uygulama 9 : Veritabanı ile Çalışmak 29

Veritabanı, uygulama içi verilerin kalıcı olarak saklanmasını sağlayan, istenildiğinde kaydedilen bu bilgileri ulaşılmasını sağlayan, bilgilerin silinmesini, güncellenmesini sağlayan yapıdır. AppInventor da 2 türlü kullanılırlar. Verileri telefonda saklayarak, yada Web Teknolojileri üzerinden bir Server da saklayarak kullanılırlar. Bizim bu uygulamamızda bir kişiye ait isim ve telefon bilgilerini öncelikle bir listeye ekleyeceğiz. Ardından telefonda oluşturacağımız lokal bir veritabanında saklayacağız. Uygulamamızın ekran çıktısı aşağıdaki gibidir. Kaydet butonuna tıklandığında ilk olarak veritabanına bir bağlantı oluşturuyoruz. TextBox lara girilen değerleri veritabanına kaydediyoruz. Veritabanında tag değeri genellikle bir index değerine karşılık gelir. Ancak bu uygulamada direkt olarak TextBox1 e girilen text bilgisine eşittir. 30

İsim bilgisine karşılık gelen telefon numarası, veritabanına kayıt yapıldıktan sonra liste türündeki değişkene atama yapılıp ListView e isim bilgisi ekleniyor. ListView den bir seçim yapıldığında bu isim bilgisini veritabanında arayıp varsa isim bilgisine karşılık gelen telefon numarasını Label3 te yazdırıyor. Veritabanına bilgi kaydetmek için kullanılır. Veritabanınan bilgi okumak için kullanılır. Veritabanını temizlemek için kullanılır. Tag değerlerini okumak için kullanılır. 31

Uygulama 10 : Sözlük Uygulaması Kullanıcının girdiği bir kelimeyi öncelikle ListView a aktaran, listeden seçilen kelimeyi istenilen dile çeviren ve çevrilen sözcüğü dilinde seslendiren bir uygulama yapacağız. TexBox ın boş olmama kontrolünü yaptıktan sonra TextBox a girilen değerleri ListView in içine aktarmaktadır ve içini temizlemektedir. ListView de bir kayıt seçildikten sonra seçilen kelime Türkçe den İngilizce ye çevrilecektir. 32

Kaynakça 1) http://www.iztim.com/blog/yazilimteknolojisi/android 2) http://webrazzi.com/2011/07/27/android-tarihi-infografik/ 3) http://shiftdelete.net/androidin-dunden-bugune-gelisimi-59537#p=1 4) http://www.tugayarslan.com/blog/androide-giris-android-nedir/ 5) http://mobilecoder.net/android-tarihcesi/ 6) https://tr.wikipedia.org/wiki/android_(i%c5%9fletim_sistemi) 7) https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-201/androidcihazlar-ve-android-isletim-sistemi-uzerine-genel-bilgiler 33