SlideShare una empresa de Scribd logo
1 de 100
Muharrem Taç
 M2 Bilişim
Gelecekonline
Android Nedir
Android Nedir ?
Google’ın 5 Kasım 2007’de 34 şirket ile birlik olarak
çalışmalarına başladığı mobil işletim sistemi projesidir. Şu
an 65 şirket bu birliktedir.

Bu birliğin adı Open Handset Alliance’dır ve web sitesi :
http://www.openhandsetalliance.com

Android sadece bir işletim sistemi değildir.

Yazılım geliştirme platformu, SDK’sı, Eclipse Plugini,
API’si ve Android Market ile birlikte dev bir ekosistemdir.
Open Handset Alliance
                        Android Nedir ?
Android Nedir ?



Pek çok cihaz, donanım,
Pek çok sensör,
Pek çok farklılaşmış sürüm,
Pek çok AR-GE projesi,
Pek çok uygulama mağazası,
Pek çok geliştirme ortamı, dili ve teknolojisi,
İçeren bir EKOSİSTEMDİR.
Android’in Özellikleri
Linux kerneli
Uygulama çatısı
Dalvik Virtual Machine (Java)
Webkit tabanlı dahili internet tarayıcısı
SQL Lite veritabanı
Video-Ses desteği (MPEG4, H.264, MP3, AAC, AMR, JPG,
PNG, GIF)
GSM telefon desteği
3B ve 2B gelişmiş grafikler, LG Real 3D ile 3 boyutlu
cihazlar,
Bluetooth, NFC, EDGE, 3G, ve WiFi (donanıma bağımlı)
Ön ve arka kamera, GPS, pusula ve akselerometre
(ivmeölçer) (donanıma bağımlı)
Zengin uygulama geliştirme ortamı (emülatör, Eclipse
plugin)
Android Market
Multitasking
Widget
Notification
Android’in Özellikleri
Handset layouts
   The platform is adaptable to larger, VGA, 2D graphics library, 3D graphics library based on
   OpenGL ES 2.0 specifications, and traditional smartphone layouts.
Storage
   SQLite, a lightweight relational database, is used for data storage purposes.
Connectivity
   Android supports connectivity technologies including GSM/EDGE, IDEN, CDMA, EV-DO,
   UMTS, Bluetooth, Wi-Fi, LTE, NFC and WiMAX.
Messaging
   SMS and MMS are available forms of messaging, including threaded text messaging and
   now Android Cloud To Device Messaging (C2DM) is also a part of Android Push Messaging
   service.
Multiple language support
   Android supports multiple languages.[41]
Web browser
   The web browser available in Android is based on the open-source WebKit layout engine,
   coupled with Chrome's V8 JavaScript engine. The browser scores 100/100 on the Acid3
   test on Android 4.0, however does have some rendering issues.
Android’in Özellikleri
Java support
   While most Android applications are written in Java, there is no Java Virtual Machine in the
   platform and Java byte code is not executed. Java classes are compiled into Dalvik
   executables and run on Dalvik, a specialized virtual machine designed specifically for
   Android and optimized for battery-powered mobile devices with limited memory and CPU.
   J2ME support can be provided via third-party applications.
Media support
   Android supports the following audio/video/still media formats: WebM, H.263, H.264 (in
   3GP or MP4 container), MPEG-4 SP, AMR, AMR-WB (in 3GP container), AAC, HE-AAC (in
   MP4 or 3GP container), MP3, MIDI, Ogg Vorbis, FLAC, WAV, JPEG, PNG, GIF, BMP.[78]
Streaming media support
   RTP/RTSP streaming (3GPP PSS, ISMA), HTML progressive download (HTML5 <video>
   tag). Adobe Flash Streaming (RTMP) and HTTP Dynamic Streaming are supported by the
   Flash plugin.[79] Apple HTTP Live Streaming is supported by RealPlayer for Mobile,[80]
   and by the operating system in Android 3.0 (Honeycomb).[45]
Additional hardware support
   Android can use video/still cameras, touchscreens, GPS, accelerometers, gyroscopes,
   barometers, magnetometers, dedicated gaming controls, proximity and pressure sensors,
   thermometers, accelerated 2D bit blits (with hardware orientation, scaling, pixel format
   conversion) and accelerated 3D graphics.
Android’in Özellikleri
Multi-touch
   Android has native support for multi-touch which was initially made available in handsets
   such as the HTC Hero. The feature was originally disabled at the kernel level (possibly to
   avoid infringing Apple's patents on touch-screen technology at the time).[81] Google has
   since released an update for the Nexus One and the Motorola Droid which enables multi-
   touch natively.[82]
Bluetooth
   Supports A2DP, AVRCP, sending files (OPP), accessing the phone book (PBAP), voice
   dialing and sending contacts between phones. Keyboard, mouse and joystick (HID)
   support is available in Android 3.1+, and in earlier versions through manufacturer
   customizations and third-party applications.[83]
Video calling
   Android does not support native video calling, but some handsets have a customized
   version of the operating system that supports it, either via the UMTS network (like the
   Samsung Galaxy S) or over IP. Video calling through Google Talk is available in Android
   2.3.4 and later. Gingerbread allows Nexus S to place Internet calls with a SIP account. This
   allows for enhanced VoIP dialing to other SIP accounts and even phone numbers. Skype
   2.1 offers video calling in Android 2.3, including front camera support.
Android’in Özellikleri
Multitasking
   Multitasking of applications is available.[84]
   Voice based features
   Google search through voice has been available since initial release.[85] Voice actions for
   calling, texting, navigation, etc. are supported on Android 2.2 onwards.[86]
Tethering
   Android supports tethering, which allows a phone to be used as a wireless/wired Wi-Fi
   hotspot. Before Android 2.2 this was supported by third-party applications or manufacturer
   customizations.[87]
Screen capture
   Android natively supports the ability to capture a screenshot by method of pressing both
   the power and volume-down buttons at the same time on an Android device. This native
   support was first included within the Android 4.0 (Ice Cream Sandwich) update, which is
   first seen on the Galaxy Nexus smartphone.[88] Previously, Android did not feature native
   support for screen capturing which would have likely been due to security concerns.
   Furthermore, prior manufacturer and third-party customizations as well as using a PC
   connection (DDMS developer's tool) were the only known methods of capturing a
   screenshot on Android.
Android’in Özellikleri
System C library - a BSD-derived implementation of the standard C
system library (libc), tuned for embedded Linux-based devices
Media Libraries - based on PacketVideo's OpenCORE; the libraries
support playback and recording of many popular audio and video
formats, as well as static image files, including MPEG4, H.264, MP3, AAC,
AMR, JPG, and PNG
Surface Manager - manages access to the display subsystem and
seamlessly composites 2D and 3D graphic layers from multiple
applications
LibWebCore - a modern web browser engine which powers both the
Android browser and an embeddable web view
SGL - the underlying 2D graphics engine
3D libraries - an implementation based on OpenGL ES 1.0 APIs; the
libraries use either hardware 3D acceleration (where available) or the
included, highly optimized 3D software rasterizer
FreeType - bitmap and vector font rendering
SQLite - a powerful and lightweight relational database engine available
to all applications
Android Mimarisi
Versiyonlar
Versiyonlar
Versiyon 1 ve 1.1 ilk sürümler (Astro ve Bender ile
başlıyor)

Versiyon 1.5 Cupcake

Versiyon 1.6 Donut

Versiyon 2.X (2.0, 2.1) Eclair

Versiyon 2.2 Froyo

Versiyon 2.3.X (2.3.1 - 2.3.7) Gingerbread

Versiyon 3.X (3.1,3,2) Honeycomb

Versiyon 4.X (4.0.1 - 4.0.3) Ice Cream Sandwich

4.1 Jelly Bean
Versiyonlar




http://developer.android.com/resources/dashboard/platform-versions.html
Versiyonlar




Android 1.1 Bender   Android 1.5 Cupcake
Versiyonlar




                    Android 2.0 ve 2.1
Android 1.6 Donut
                         Eclair
Versiyonlar




                    Android 2.3 Gingerbread
Android 2.2 Froyo
Versiyonlar




Android 3.0 Honeycomb
Versiyonlar




Android 4.0 Ice Cream Sandwich   Android 4.1 Jelly Bean
Enteresan Uygulamalar
Enteresan Uygulamalar

Android’in ve donanımın desteklediği özelliklere göre
pusula, akseloremetre, GPS gibi özellikleri kullanan
uygulamalar yaygınlaşmaktadır.

Özellikle “Layar” Augmented Reality konseptiyle bakılan
yer hakkında görsel bilgiler vermektedir.

Bunun yanında pusulalar, Panoramio gibi konum bilgisine
dayalı fotoğrafçılık uygulamaları, Google Maps API
kullanan uygulamalar, Jedi ışın kılıcı, Zippo çakmak, her
türden harekete duyarlı oyunlar vs. Android üzerinde
çalışmakta ve geliştirilmektedir.

Sosyal ağ uygulamaları (Google Plus, Twitter, Facebook,
Foursquare)
Enteresan Uygulamalar
        Layar
Android Uygulama Mağazaları
Android Uygulama Mağazaları
Google Play            Android Pazarı
Android Uygulama Mağazaları
Turkcell Uygulamalar
                               Samsung S-Andoid
Android cihazları
Google telefonları
Android Arayüzleri
HTC Sense   Samsung Touchwiz    Sony Timescape
3D API’ler
HTC 3D   LG 3D
Android Yazılım Geliştirme
Android Yazılım Geliştirme
Java ile Yazılım Geliştirme:
Google tarafından önerilen altyapıdır, Android’in içerisindeki uygulamaların
pekçoğu Java ile yazılmıştır, Eclipse, Netbeans, IntelliJ Idea IDE’leri kullanılabilir,

HTML5 ile Yazılım Geliştirme:
Phonegap gibi sistemlerle uygulama içersinde HTML5 çalıştırmak mümkündür.
Apache Cordova (Phonegap)

Adobe Flex ile Yazılım Geliştirme:
Adobe’nin Flash Builder aracı ile ActionScript kullanarak yazılım geliştirilebilir.

Mono for Android ile Yazılım Geliştirme:
.NET altyapısı ile C# dilinde yazılım geliştirilebilir.
Android SDK
Eclipse Android Plugin
Android SDK İçeriği

Emülatörler,

Dökümanlar,

Örnek kodlar,

USB sürücüleri (usb_driver/android_winusb.inf),

Versiyonlar,

Güncelleme sihirbazı,

Araçlar…
Android SDK İçeriği
    Virtual Devices
Android SDK İçeriği
Virtual Devices Emulator 1.1
Android SDK İçeriği
Virtual Devices Emulator 1.5
Android SDK İçeriği
Virtual Devices Emulator 1.6
Android SDK İçeriği
Virtual Devices Emulator 2.0
Android SDK İçeriği
Virtual Devices Emulator 2.1
Android SDK İçeriği
Virtual Devices Emulator 2.2
Android SDK İçeriği
Virtual Devices Emulator 2.3
Android SDK İçeriği
 Installed Packages
Android SDK İçeriği
Available Packages
Android SDK İçeriği
          Settings
Android SDK İçeriği
            About
Android Eclipse Plugin
Android Eclipse Plugin

Eclipse ile Android üzerinde yazılım geliştirme,
development, debugging , test ve deployment yapılmasına
imkan veren plugindir.

Eclipse Help-> Install New Software yolu ile giderek
aşağıdaki adres eklenir:

https://dl-ssl.google.com/android/eclipse/
Android Eclipse Plugin
Android Eclipse Plugin

Eclipse Android plugin şunları sağlar :

Dalvik Debug Monitor Server (DDMS) perspective,
Eclipse içinden Android SDK and AVD Manager bağlantısı,
Allocation Tracker view,
Devices view,
Emulator control view,
File Explorer view,
Heap view,
LogCat view,
Resource Explorer view,
Threads view ,
New Android Project Menu
Android Eclipse Plugin
Dalvik Debug Monitor Server (DDMS) Perspective
Android Eclipse Plugin
Eclipse’e Android Plugin yüklenince workspace’de SDK tanımlaması
yapılmadıysa bir ekran geliyor.
Yeni Android Projesi
Eclipse File -> New -> Other… Android -> Android Project
Yeni Android Projesi
Application Name : Android’in uygulamayı göreceği isim.

Package name : Uygulamanın kullanacağı paketlendirme,
mecburi alan.

Build SDK : Uygulamayı derleyecek Android SDK

Minimum Required SDK: Uygulamanın çalışabileceği minimum
Android versiyonu
Yeni Android Projesi
Yeni ADT ile yeni uygulama
oluşturma ekranları çok değişti.

Application Name:
UygulamaIsmi
Project name : ProjeIsmi
Package name :
com.sirketadi.uygulamaIsmi
Build SDK: Android 4.1
Minimum Required SDK:
Android 2.2
Yeni Android Projesi
Icon ayarlama ekranları
Yeni Android Projesi
Boş bir Activity veya
MasterDetailFlow olarak iki
öneri sunuyor
Yeni Android Projesi

Projemiz yaratıldı.
Klasörler şöyle :
src,
gen,
res.
----------------------------------------------
AndroidManifest.xml
ve
default.properties adında iki dosya
var.
Yeni Android Projesi
Proje içerisinde bir de çalışmaya hazır Activity var. Bu haliyle
çalıştırabiliriz.
Yeni Android Projesi
Proje üzerinde sağ tuş -> Run As -> Android Application
Yeni Android Projesi
Projemizin çalışır hali. Tabii ki “Hello World”
Projedeki Önemli Dosyalar
AndroidManifest.xml
Activity adını verdiğimiz ekranların bilgisini, uygulama bazlı global bilgileri tutar.
Uygulamamızın isteyeceği ayrıcalıklar da buradan tanımlanır.
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.m2bilisim.android"
   android:versionCode="1"
   android:versionName="1.0" >
   <uses-sdk android:minSdkVersion="10" />
   <application
     android:icon="@drawable/ic_launcher"
     android:label="@string/app_name" >
     <activity
        android:label="@string/app_name"
        android:name=".MainActivity" >
        <intent-filter >
           <action android:name="android.intent.action.MAIN" />
           <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
     </activity>
   </application>
 </manifest>
Projedeki Önemli Dosyalar
res/layout/main.xml
Her bir Activity için görsel tasarım öğelerini içerir.

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
  </LinearLayout>
Projedeki Önemli Dosyalar
res/values/strings.xml
Mesaj metinlerinin tutulduğu dosyadır.
Activity’ler için düzenlenen xml’lerden android:text=“@string/hello” şeklinde
kullanılabilir.
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
    <string name="hello">Hello World, StartUp!</string>
    <string name="app_name">tbd</string>
 </resources>
res/values/ dizininde başka xml dosyaları tutarak iş bölümü yapabiliriz.
res/values/color.xml

 <?xml version="1.0" encoding="utf-8"?>
 <resources>
      <color name="white">#fff</color>
      <color name="black">#000</color>
      <color name="gelecekonline_red">#d11517</color>
      <color name="gelecekonline_gray">#323232</color>
      <color name="gelecekonline_light_gray">#efefef</color>
 </resources>
Android Yazılımlarında Bileşenler

Aktiviteler(Activities):
Aktiviteler çalıştırılabilir kodun belirli kısımlarını oluşturan ve zamanın belirli
bölgelerinde kullanıcı ile ve sistemle etkileşime geçerek gerekli veriyi sağlayan,
sonunda da kullanılmadıkları zaman sistem tarafından sonlandırılan parçalardır.


Servisler (Services):
Servisler bilgisayarlardan da tanıdık olduğumuz arkaplanda çalışan ve
uygulamanın bir parçası olan kısımlardır. Aygıt kapanana kadar arkaplanda hazır
olarak çalışırlar.Genellikle kullanıcı arayüzü olarak sunulmazlar. Uygulamaların
ihtiyacı olan verilerin ve hizmetlerin sağlanmasında kullanılırlar.




Kaynak : http://androidgelistir.blogspot.com/2010/07/android-ile-uygulamasnn-bilesenleri-
ve.html
Android Yazılımlarında Bileşenler
Broacast and Intent Receivers:
Broadcast bilinen broadcast uygulamaları gibi aygıtın temel mesajlarını algılayan
kısımlardır. Düşük pil uyarısı yada zaman dilimi değiştirilmesi gibi olaylarda aygıt,
uygulamaların tümünü bu durumlardan haberdar eder. Intent receivers ise belirli
bir amaca göre bazı varolan uygulamalardan ve servislerden bilgi toplanmasıdır.
Varolan bir uygulamayı kullanarak uygulama geliştirildiğinde bu tür olay
yakalayıcılar kullanılır.

İçerik Sağlayıcılar(Content Provider):
Aygıt üzerindeki uygulamalar dosya sisteminde yada dosya sistemi üzerindeki
SQLite veritabanı üzerinde uygulamaya ait verileri saklarlar. Diğer uygulamaların
da belirli veri tiplerine uygun olarak bu verileri kullanabilmesi Content Provider ile
sağlanır. Content provider uygulamalara bu verilere erişim için bazı metodlar
sunar.




Kaynak : http://androidgelistir.blogspot.com/2010/07/android-ile-uygulamasnn-bilesenleri-
ve.html
Activity
Bir aktivite 3 duruma sahip olabilir :

•Aktif ya da çalışır durumda uygulama kullanıcıya odaklanmıştır
ve kullanıcıdan gelecek verilere göre sonuçlar üretilir,

•Bekleme modunda başka bir uygulama çalışmaya başlamış,
uygulama arkaplana itilmiş fakat aynı şekilde çalışmaya devam
etmektedir. Uygulama bekleme modunda düşük bellek
durumlarında sistem tarafından yokedilebilir,

•Durdurulmuş durumda uygulama tamamen çalışmaz durumdadır
buna rağmen en son verilere sahiptir. Uygulamaya ayrılmış bellek
sistem tarafından gerektiğinde kullanılabilir.


 Kaynak : http://androidgelistir.blogspot.com/2010/07/android-ile-uygulamasnn-bilesenleri-
 ve.html
Activity
Aktivite bir durumdan diğer duruma geçerken aşağıdaki metodları
çalıştırır.

void    onCreate(Bundle savedInstanceState)
void    onStart()
void    onRestart()
void    onResume()
void    onPause()
void    onStop()
void    onDestroy()




 Kaynak : http://androidgelistir.blogspot.com/2010/07/android-ile-uygulamasnn-bilesenleri-
 ve.html
Activity
Activity
Android ekranlarının her biri bir android.app.Activity sınıfından extend olmak
zorundadır.

Event handling için Listener interface’lerini implemente etmeleri gerekir.

public class MainActivity extends Activity implements OnClickListener
Activity
Android ekranlarının her biri için layout tanımlamak gerekir.

Örnek :
res/layout/nextactivity.xml

Bir Activity’den diğer Activity’ye erişmek için, örneğin bir click eventi içerisinden:


public void onClick(View v) {
     Intent itemintent = new Intent(this, NextActivity.class);
     startActivity(itemintent);
}
Intent
Intent kelime anlamı olarak niyet demektir. Android’de işler Intent’ler üzerinden
yürür diyebiliriz. Bir Activity başlatmak, bir servis çalıştırmak, bir sisteme
broadcast yapmak, broadcast dinlemek gibi işlemler için önce Intent oluşturulmalı
daha sonra bu Intent başlatılmalıdır.

//Yeni activity acmak
Intent activityIntent = new Intent(getApplicationContext(),
YeniActivity.class);
startActivity(activityIntent);

//Bir numara cevirmek
Intent telefonIntent = new Intent(Intent.ACTION_DIAL,
Uri.parse("tel:05051110011"));
startActivity(telefonIntent);

//Web site baslatmak
Intent webIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://gomobil.in"));
startActivity(webIntent);
Layout
Layout dosyaları, Activity veya görsel elemanlar (View’lar) içersinde öğelerin
nerede ve nasıl durması gerektiğini belirleyen şemalar gibi düşünülebilir.
Activity’nin ne şekilde duracağı, içerisinde ne gibi öğelerin olacağı bilgisi xml
dosyalarıyla belirlenir. Projedeki res dizini altında bulunan layout dizini içerisinde
Activity veya View’lar için xml uzantılı dosyalar düzenlenir. Bu dosyaların
içerisindeki bilgi Android tarafından okunarak Activity’ler veya View’lar üzerine
yüklenir.

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
}

Buradaki main aslında layout dizinindeki main.xml adlı layout dosyasına karşılık gelir.

Activity’ler içerisinde çeşitli View’lar olabileceği gibi yazılımcı tarafından
geliştirilmiş özel View’lar da Layout dosyalarında düzenlenebilir.
Layout
gen dizininde bulunan R.java
dosyası; res dizininde bulunan
layout dizinine eklenen her
xml dosyasını otomatik olarak
kendi içerisinde
yaratmaktadır. Bu yöntem ile
xml tasarım şema (layout)
dosyalarına Java sınıflarından
erişim mümkün olmaktadır.
Layout
AbsoluteLayout : Ekran üzerinde hangi görsel elemanın nerede duracağını piksel
piksel sabitler. Örneğin bir butonun soldan 20 piksel, üstten 20 piksel
koordinatlarında durmasını istersek AbsoluteLayout kullanmalıyız.

LinearLayout : Bütün eklenen görsel elemanları alt alta veya yan yana çizgisel
olarak dizer.

RelativeLayout : Görsel öğelerin ekranda üst-sol, üst-sağ, üst-orta, dikey-orta,
yatay -orta, taban-sol, taban-orta, taban-sol gibi ekran boyununa bağlı olmaksızın
ayarlanmasını sağlar.

TableLayout : Ekran öğelerini tablolar halinde göstermek için kullanılabilen
layouttur. Herbir TableLayout içerisinde TableRow’lar halinde tablo satırları
oluşturulabilir.

FrameLayout : En basit türde layout sistemdir. İçerisine eklenen görsel öğeleri
sola dayalı olarak gösterir ve eğer birden fazla öğe eklerseniz bunları üst üste
gösterir. Resim dosyalarının üzerine yazı eklemek için kullanılabilir. FrameLayout
yapısı sekmeli ekran yapımında da kullanılmaktadır.
View
Activity’lerde kullanılan görsel yapılara View denilmektedir.

View’lar ListView, TextView, WebView, ScrollView gibi çeşitli şekillerde olabilirler.

ListView : Alt alta dizilecek görsel öğeleri göstermede kullanılır. Java’nın dizi
yapılarını doğrudan ekrana basabilmektedir.

TextView : Ekranda metin içeriği göstermede kullanılabilen View türüdür. Diğer
pekçok programlama dilinde Label olarak geçer.
TextView’lara metin girişi birkaç yöntemle yapılabilir:

WebView : HTML içeriklerini ve web sayfalarını Activity’ler içerisinde açabilen
View’dır.

ScrollView : Uzun içeriklerin kaydırma çubuğu ile aşağıya doğru inilerek
görüntülenmesini sağlayan View’dir. Sözgelimi içerisinde çok sayıda bilginin
bulunduğu bir ListView ScrollView içerisinde gösterilebilir. Böylece ekrana
sığmayan listeler kullanıcı tarafından aşağıya doğru kaydırılarak görüntülenebilir.
View
WebView



public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webviewornek);
         WebView webView = (WebView) findViewById(R.id.webview);
         webView.loadUrl("http://www.gelecekonline.com/mobile");
}

Aşağıdaki şekilde internet erişim izni alınmalıdır:

<uses-permission android:name="android.permission.INTERNET"/>
View (Form elemanları)
Kullanıcıdan veri almak için kullanılan yapılar da birer View’dır.
Mesela EditText, Button, Radio Button, DatePicker, Spinner, gibi çok sayıda form
elemanı vardır ve bunlar da aslında View sınıfından türemiştir.

View’lar çeşitli event’ları listen edebilirler (dinleyebilirler) vardır.

Örneğin Button için OnClickListener event’ı vardır.

ListView’ın OnItemClickListener event’ı bulunmaktadır.

Bu listener’ları kullanabilmek için OnClickListener Interface’inden dinamik sınıf
yaratmak gereklidir. Örnek:

Button ornekButton = (Button)findViewById(R.id.ornekButton);
     ornekButton.setOnClickListener(new OnClickListener() {
                              public void onClick(View v) {
                   TextView textView = (TextView)findViewById(R.id.ornekText);
                   textView.setText("Butona tıklandı");
    }
});
import android.app.Activity;                                     ListView
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class Main extends Activity {

ListView listView;
String yazarlar[]={"Erol Dizdar","Egemen Mede","Selçuk Yavuz"};

public void onCreate(Bundle savedInstanceState)
{        super.onCreate(savedInstanceState);
setContentView(R.layout.main);
 listView = (ListView)findViewById(R.id. listView);
listView.setAdapter(new
ArrayAdapter(this,android.R.layout.simple_list_item_1 , yazarlar));
}

}
View (Form elemanları)
ListView için OnItemClickListener Interface’i kullanılabilir.

listView.setOnItemClickListener(this);

public void onItemClick(AdapterView<?> adapterView, View view, int position, long id)
{

 Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
      Toast.LENGTH_SHORT).show();
}
Dialoglar
Android’de çok sayıda iletişim kutusu seçeneği vardır.

Dialog : Mesaj kutusu çıkarır. Genişletilebilir ve özelleştirilebilir. Layout
yüklenebilir.

AlertDialog : Uyarı mesajıdır. Tamam – iptal gibi görünümleri olabilir.

ProgressDialog : İşlem yapıldığında kullanılabilen mesaj kutusudur.

DatePickerDialog : Tarih seçim mesajı

TimePickerDialog : Zaman seçim mesaj kutusu

Custom Dialog : Özelleştirilmiş bir mesaj kutusudur. İçerisinde başka View’lar
olabilir.
Dialoglar

AlertDialog : Evet/hayır şeklinde mesaj kutusu çıkarır.


    AlertDialog.Builder builder = new AlertDialog.Builder(DialogTestActivity.this);
     builder.setMessage("Uygulamadan çıkılsın mı?").
     setCancelable(false).setPositiveButton("Evet",new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int id) {
         finish();
    }
    }).setNegativeButton("Hayır",
     new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int id) {
        dialog.cancel();
    }
    });
    AlertDialog alert= builder.create();
    alert.show();
Dialoglar
AlertDialog : Liste şeklinde mesaj kutusu çıkarır.
final CharSequence[] items = {"Kirmızı", "Yeşil", "Mavi"};

AlertDialog.Builder builder = new AlertDialog.Builder(DialogTestActivity.this);
builder.setTitle("Pick a color");
builder.setItems(items, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
      Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
    }
});
AlertDialog alert = builder.create();
alert.show();
Dialoglar
AlertDialog : Seçim listesi şeklinde mesaj kutusu çıkarır.
final CharSequence[] items = {"Kirmızı", "Yeşil", "Mavi"};

AlertDialog.Builder builder = new AlertDialog.Builder(DialogTestActivity.this);
builder.setTitle("Pick a color");
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
      Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
    }
});
AlertDialog alert = builder.create();
alert.show();
Menu
Activity içerisinde onPrepareOptionsMenu() metoduyla menu oluşturabiliyoruz.

public boolean onPrepareOptionsMenu(Menu menu) {
              menu.add(0, 0, 1, R.string.BaseMenu);
              menu.add(0, 1, 2, R.string.About);
              return super.onPrepareOptionsMenu(menu);
}


Seçilen menu elemanını onOptionsItemSelected(MenuItem item) metoduyla
algılayabiliriz. Örnek :
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0:
finish();
case 1:
final CharSequence[] items = {"Kirmızı", "Yeşil", "Mavi"};

AlertDialog.Builder builder = new AlertDialog.Builder(DialogTestActivity.this);
builder.setTitle("Pick a color");
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
      Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
    }
});
AlertDialog alert = builder.create();
alert.show();
}
return false;
    }
Theme
Android’in kendine ait temaları bulunmaktadır.
Default tema siyah zemin üzerine beyaz yazılar şeklindedir. Ama bu temanın
alternatifleri vardır.
Bir activity’nin temasını değiştirmek için AndroidManifest.xml’de :

Beyaz zemin üzerine siyah yazılar için :
android:theme="@style/android:Theme.Light" tanımlaması yapabiliriz.

Şeffaf arkaplan için : android:theme="@style/android:Theme.Translucent“

Ekrana diyalog kutusu şeklinde Activity basmak için :

android:theme="@style/android:Theme.Dialog"
Theme – Custom Theme
Programcı isterse kendine ait temalar da oluşturabilir.
Bunu yapabilmek için /res/values içerisinde styles.xml adında bir dosya oluşturup
tanımlamalarını bu dosyada yapar.

<resources>
<style name="Theme.Ntv" parent="android:Theme.Light">
<item name="android:windowBackground">@drawable/bg</item>
</style>
</resources>

Android themes.xml : http://goo.gl/P8hv1
Android styles.xml : http://goo.gl/d46Zf
Thread
Thread yönetimi iki şekilde yapılıyor:
Klasik yöntem ve AsnycTask ile

Klasik yöntem:

Activity’yi Runnable Interface’inden türetmek : implements Runnable

Bir Thread çalıştırmak :

Thread thread = new Thread(Main.this);
        thread.start();

run() methodu yazmak :

public void run() {
           pi_string = Pi.computePi(800).toString();
           handler.sendEmptyMessage(0);
     }

Handler sınıfı içerisindeki handleMessage() ile buradan dönecek mesajı yakalamak:

private Handler handler = new Handler() {
          @Override
          public void handleMessage(Message msg) {
               pd.dismiss();
               tv.setText(pi_string);

          }
     };
Thread - AscyncTask
AsnycTask ile asenkron işlem yapmak Google tarafından önerilen yöntemdir.

Bu yöntemde Activity içersinde InnerClass olarak AsyncTask sınıfından oluşturulan bir sınıf yazılır.
Örnek :

private class PiHesaplaTask extends AsyncTask<String, Void, Void>

Bu sınıfın execute metodu çağırılarak asenkron işlem başlatılır.
Örnek : new PiHesaplaTask().execute();

AsyncTask sınıfının içerisinde süreç ilk başladığı zaman onPreExecute() metodu aktifleşir. Bu metotta
                                                            onPreExecute()
işlemin yapıdığına dair bir uyarı kutusu çıkarılabilir. Asenkron işlem doInBackground() metodu içerisinde
                                                                       doInBackground()
gerçekleşir. onPostExecute() metodu ile işlem bittiğinde asenkron işlem sonuçlanır ve uyarı kutusu kapatılır.

Tam sınıf örneği:

private class PiHesaplaTask extends AsyncTask<String, Void, Void> {
private ProgressDialog progressDialog;

protected void onPreExecute() {
  progressDialog = ProgressDialog.show(MainAsyncTask.this, "Hesaplanıyor..", "Pi sayısı hesaplanıyor");
}

@Override
protected Void doInBackground(String... arg0) {
  pitext = Pi.computePi(800).toString();
  return null;
}

protected void onPostExecute(final Void unused) {
    progressDialog.dismiss();
    textView.setText(pitext);
  }
 }
Widget
Widget’lar uygulamaların masaüstünde çalışabilen kısımlarıdır. Wndget’ların da aynen Activity
gibi Layout’ları olur.

AndroidManifest.xml dosyasına receiver olarak tanıtılırlar.

<receiver android:name=".Widget1" android:label="Widget1">

Intent-filter olarak android.appwidget.action.APPWIDGET_UPDATE eklenir.

AndroidManifest.xml dosyasında metadata ilavesi yapmak gereklidir. Ve metadata dosyasına
widget tanımlama xml bilgisi eklenir.

<meta-data android:name="android.appwidget.provider" android:resource="@xml/widget1" />

AndroidManifest.xml ‘de bir widget tanımlamak için gereken tüm tanımlama:

<receiver android:name=".Widget1" android:label="Widget1">
       <intent-filter>
             <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
       </intent-filter>
       <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget1" />
</receiver>
Widget
Widget’ların hangi layout’u kullanacağı, boyutlarının ne olacağı gibi bilgiler için ayrı bir xml
dosyası oluşturulur. Örnek widget1.xml

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:minWidth="50dp"
 android:minHeight="72dp"
 android:updatePeriodMillis="10000"
 android:initialLayout="@layout/widget_layout"
 android:label="Hello1"
 />

Burada android:initialLayout="@layout/widget_layout" ile tanımlanan satır widget_layout.xml
dosyasıdır.

Widget sınıfları android.appwidget. AppWidgetProvider sınıfından türetilir ve en önemli
metodu onUpdate() metodudur.
Broadcast
Android sisteminin olaylar karşısında yaydığı çağrılardır.
Bu çağrılar yakalanarak belli işlemler yapılabilir.
Mesela cihaz açıldığında ve Android sistemi yüklenmesi tamamlandığında
android.intent.action.BOOT_COMPLETED broadcast’i yayılır. Bu çağrıları yakalamak için
AndroidManifest.xml içine aşağıdaki şekilde intent-fiter yazmak yeterlidir:
<intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            <action android:name="android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE"/>
</intent-filter>

Tabii bu çağrının yakalanması izne tabi olabilir onu da uses-permissions ile bildirmek gerekir.

<uses-permission
android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Droiddraw
Android için görsel olarak GUI tasarımı yapmaya olanak tanıyan
bir uygulamadır.
http://www.droiddraw.org/
Site üzerinde çalışan applet ya da indirilebilen Swing uygulaması
ile XML olarak GUI çıktısı alınabilir.
Motodev Studio
Motorola tarafından Android geliştiricileri için çıkarılmış harika bir
IDE’dir.

Çok sayıda örnek kod (snippet) içerir,
görsel programlamayı kolaylaştırmaktadır,
Mevcut Eclipse Plugin’ini geliştirmiştir,
Motodev Studio
Android Market’e Uygulama Gönderme
Android Market’e Uygulama Gönderme
Android Market’e Uygulama Gönderme
Kaynakça:

http://wikipedia.org
http://www.android.com
http://developer.android.com
Teşekkürler

Más contenido relacionado

Similar a Android

Android Üzerinde Adobe Flex ve AIR ile Yazılım Geliştirme
Android Üzerinde Adobe Flex ve AIR ile Yazılım GeliştirmeAndroid Üzerinde Adobe Flex ve AIR ile Yazılım Geliştirme
Android Üzerinde Adobe Flex ve AIR ile Yazılım GeliştirmeMuharrem Tac
 
Android'e Giriş Eğitimleri 2_1
Android'e Giriş Eğitimleri 2_1Android'e Giriş Eğitimleri 2_1
Android'e Giriş Eğitimleri 2_1Univerist
 
Mobil İşletim Sistemleri
Mobil İşletim SistemleriMobil İşletim Sistemleri
Mobil İşletim SistemleriNilgun Ozdamar
 
Android Teknolojileri
Android TeknolojileriAndroid Teknolojileri
Android TeknolojileriMuharrem Tac
 
Mobil Uygulamalar ve Geliştiriciler
Mobil  Uygulamalar ve GeliştiricilerMobil  Uygulamalar ve Geliştiriciler
Mobil Uygulamalar ve Geliştiricilermerveyildiz1
 
Uygulama diline karar vermek: HTML5 mi, Native mi yoksa Hibrit uygulama mı?
Uygulama diline karar vermek: HTML5 mi, Native mi yoksa Hibrit uygulama mı?Uygulama diline karar vermek: HTML5 mi, Native mi yoksa Hibrit uygulama mı?
Uygulama diline karar vermek: HTML5 mi, Native mi yoksa Hibrit uygulama mı?mobilike
 
Tizen, Firefox OS ve Android’in Geleceği (Android Developers Day, Ankara)
Tizen, Firefox OS ve Android’in Geleceği (Android Developers Day, Ankara)Tizen, Firefox OS ve Android’in Geleceği (Android Developers Day, Ankara)
Tizen, Firefox OS ve Android’in Geleceği (Android Developers Day, Ankara)Oytun Eren Sengul
 
Windows Mobile65 Ve Mobil Gelecek Yg
Windows Mobile65 Ve Mobil Gelecek YgWindows Mobile65 Ve Mobil Gelecek Yg
Windows Mobile65 Ve Mobil Gelecek Ygekinozcicekciler
 
AndroidEgitimleri_HacettepeACM.ppt
AndroidEgitimleri_HacettepeACM.pptAndroidEgitimleri_HacettepeACM.ppt
AndroidEgitimleri_HacettepeACM.pptVolkan Ulutaş
 
Android & Vr & CardBoard - Muhammet ÇAĞATAY
Android & Vr & CardBoard - Muhammet ÇAĞATAYAndroid & Vr & CardBoard - Muhammet ÇAĞATAY
Android & Vr & CardBoard - Muhammet ÇAĞATAYMuhammet ÇAĞATAY
 
Nokia Uygulama Geliştirme Platfornları
Nokia Uygulama Geliştirme PlatfornlarıNokia Uygulama Geliştirme Platfornları
Nokia Uygulama Geliştirme PlatfornlarıGorkem Ercan
 
Java, android ve arduino ile gömülü programlama
Java, android ve arduino ile gömülü programlamaJava, android ve arduino ile gömülü programlama
Java, android ve arduino ile gömülü programlamaborasayiner
 

Similar a Android (20)

Android Üzerinde Adobe Flex ve AIR ile Yazılım Geliştirme
Android Üzerinde Adobe Flex ve AIR ile Yazılım GeliştirmeAndroid Üzerinde Adobe Flex ve AIR ile Yazılım Geliştirme
Android Üzerinde Adobe Flex ve AIR ile Yazılım Geliştirme
 
Android
AndroidAndroid
Android
 
Android'e Giriş Eğitimleri 2_1
Android'e Giriş Eğitimleri 2_1Android'e Giriş Eğitimleri 2_1
Android'e Giriş Eğitimleri 2_1
 
Mobi̇l Teknoloji̇ler
Mobi̇l Teknoloji̇lerMobi̇l Teknoloji̇ler
Mobi̇l Teknoloji̇ler
 
Mobil İşletim Sistemleri
Mobil İşletim SistemleriMobil İşletim Sistemleri
Mobil İşletim Sistemleri
 
A studio
A studioA studio
A studio
 
Android Teknolojileri
Android TeknolojileriAndroid Teknolojileri
Android Teknolojileri
 
"Gelecek" Android'de
"Gelecek" Android'de"Gelecek" Android'de
"Gelecek" Android'de
 
Mobil Uygulamalar ve Geliştiriciler
Mobil  Uygulamalar ve GeliştiricilerMobil  Uygulamalar ve Geliştiriciler
Mobil Uygulamalar ve Geliştiriciler
 
Uygulama diline karar vermek: HTML5 mi, Native mi yoksa Hibrit uygulama mı?
Uygulama diline karar vermek: HTML5 mi, Native mi yoksa Hibrit uygulama mı?Uygulama diline karar vermek: HTML5 mi, Native mi yoksa Hibrit uygulama mı?
Uygulama diline karar vermek: HTML5 mi, Native mi yoksa Hibrit uygulama mı?
 
Tizen, Firefox OS ve Android’in Geleceği (Android Developers Day, Ankara)
Tizen, Firefox OS ve Android’in Geleceği (Android Developers Day, Ankara)Tizen, Firefox OS ve Android’in Geleceği (Android Developers Day, Ankara)
Tizen, Firefox OS ve Android’in Geleceği (Android Developers Day, Ankara)
 
Mobil Platformlar ve Uygulamalar
Mobil Platformlar ve UygulamalarMobil Platformlar ve Uygulamalar
Mobil Platformlar ve Uygulamalar
 
Ip2 vi̇ze2
Ip2 vi̇ze2Ip2 vi̇ze2
Ip2 vi̇ze2
 
Windows Mobile65 Ve Mobil Gelecek Yg
Windows Mobile65 Ve Mobil Gelecek YgWindows Mobile65 Ve Mobil Gelecek Yg
Windows Mobile65 Ve Mobil Gelecek Yg
 
AndroidEgitimleri_HacettepeACM.ppt
AndroidEgitimleri_HacettepeACM.pptAndroidEgitimleri_HacettepeACM.ppt
AndroidEgitimleri_HacettepeACM.ppt
 
Android & Vr & CardBoard - Muhammet ÇAĞATAY
Android & Vr & CardBoard - Muhammet ÇAĞATAYAndroid & Vr & CardBoard - Muhammet ÇAĞATAY
Android & Vr & CardBoard - Muhammet ÇAĞATAY
 
Nokia Uygulama Geliştirme Platfornları
Nokia Uygulama Geliştirme PlatfornlarıNokia Uygulama Geliştirme Platfornları
Nokia Uygulama Geliştirme Platfornları
 
Windows 8 Upgrade (Sürüm Yükseltme)
Windows 8 Upgrade (Sürüm Yükseltme)Windows 8 Upgrade (Sürüm Yükseltme)
Windows 8 Upgrade (Sürüm Yükseltme)
 
Android
AndroidAndroid
Android
 
Java, android ve arduino ile gömülü programlama
Java, android ve arduino ile gömülü programlamaJava, android ve arduino ile gömülü programlama
Java, android ve arduino ile gömülü programlama
 

Android

  • 1. Muharrem Taç M2 Bilişim Gelecekonline
  • 3. Android Nedir ? Google’ın 5 Kasım 2007’de 34 şirket ile birlik olarak çalışmalarına başladığı mobil işletim sistemi projesidir. Şu an 65 şirket bu birliktedir. Bu birliğin adı Open Handset Alliance’dır ve web sitesi : http://www.openhandsetalliance.com Android sadece bir işletim sistemi değildir. Yazılım geliştirme platformu, SDK’sı, Eclipse Plugini, API’si ve Android Market ile birlikte dev bir ekosistemdir.
  • 4. Open Handset Alliance Android Nedir ?
  • 5. Android Nedir ? Pek çok cihaz, donanım, Pek çok sensör, Pek çok farklılaşmış sürüm, Pek çok AR-GE projesi, Pek çok uygulama mağazası, Pek çok geliştirme ortamı, dili ve teknolojisi, İçeren bir EKOSİSTEMDİR.
  • 6. Android’in Özellikleri Linux kerneli Uygulama çatısı Dalvik Virtual Machine (Java) Webkit tabanlı dahili internet tarayıcısı SQL Lite veritabanı Video-Ses desteği (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) GSM telefon desteği 3B ve 2B gelişmiş grafikler, LG Real 3D ile 3 boyutlu cihazlar, Bluetooth, NFC, EDGE, 3G, ve WiFi (donanıma bağımlı) Ön ve arka kamera, GPS, pusula ve akselerometre (ivmeölçer) (donanıma bağımlı) Zengin uygulama geliştirme ortamı (emülatör, Eclipse plugin) Android Market Multitasking Widget Notification
  • 7. Android’in Özellikleri Handset layouts The platform is adaptable to larger, VGA, 2D graphics library, 3D graphics library based on OpenGL ES 2.0 specifications, and traditional smartphone layouts. Storage SQLite, a lightweight relational database, is used for data storage purposes. Connectivity Android supports connectivity technologies including GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, NFC and WiMAX. Messaging SMS and MMS are available forms of messaging, including threaded text messaging and now Android Cloud To Device Messaging (C2DM) is also a part of Android Push Messaging service. Multiple language support Android supports multiple languages.[41] Web browser The web browser available in Android is based on the open-source WebKit layout engine, coupled with Chrome's V8 JavaScript engine. The browser scores 100/100 on the Acid3 test on Android 4.0, however does have some rendering issues.
  • 8. Android’in Özellikleri Java support While most Android applications are written in Java, there is no Java Virtual Machine in the platform and Java byte code is not executed. Java classes are compiled into Dalvik executables and run on Dalvik, a specialized virtual machine designed specifically for Android and optimized for battery-powered mobile devices with limited memory and CPU. J2ME support can be provided via third-party applications. Media support Android supports the following audio/video/still media formats: WebM, H.263, H.264 (in 3GP or MP4 container), MPEG-4 SP, AMR, AMR-WB (in 3GP container), AAC, HE-AAC (in MP4 or 3GP container), MP3, MIDI, Ogg Vorbis, FLAC, WAV, JPEG, PNG, GIF, BMP.[78] Streaming media support RTP/RTSP streaming (3GPP PSS, ISMA), HTML progressive download (HTML5 <video> tag). Adobe Flash Streaming (RTMP) and HTTP Dynamic Streaming are supported by the Flash plugin.[79] Apple HTTP Live Streaming is supported by RealPlayer for Mobile,[80] and by the operating system in Android 3.0 (Honeycomb).[45] Additional hardware support Android can use video/still cameras, touchscreens, GPS, accelerometers, gyroscopes, barometers, magnetometers, dedicated gaming controls, proximity and pressure sensors, thermometers, accelerated 2D bit blits (with hardware orientation, scaling, pixel format conversion) and accelerated 3D graphics.
  • 9. Android’in Özellikleri Multi-touch Android has native support for multi-touch which was initially made available in handsets such as the HTC Hero. The feature was originally disabled at the kernel level (possibly to avoid infringing Apple's patents on touch-screen technology at the time).[81] Google has since released an update for the Nexus One and the Motorola Droid which enables multi- touch natively.[82] Bluetooth Supports A2DP, AVRCP, sending files (OPP), accessing the phone book (PBAP), voice dialing and sending contacts between phones. Keyboard, mouse and joystick (HID) support is available in Android 3.1+, and in earlier versions through manufacturer customizations and third-party applications.[83] Video calling Android does not support native video calling, but some handsets have a customized version of the operating system that supports it, either via the UMTS network (like the Samsung Galaxy S) or over IP. Video calling through Google Talk is available in Android 2.3.4 and later. Gingerbread allows Nexus S to place Internet calls with a SIP account. This allows for enhanced VoIP dialing to other SIP accounts and even phone numbers. Skype 2.1 offers video calling in Android 2.3, including front camera support.
  • 10. Android’in Özellikleri Multitasking Multitasking of applications is available.[84] Voice based features Google search through voice has been available since initial release.[85] Voice actions for calling, texting, navigation, etc. are supported on Android 2.2 onwards.[86] Tethering Android supports tethering, which allows a phone to be used as a wireless/wired Wi-Fi hotspot. Before Android 2.2 this was supported by third-party applications or manufacturer customizations.[87] Screen capture Android natively supports the ability to capture a screenshot by method of pressing both the power and volume-down buttons at the same time on an Android device. This native support was first included within the Android 4.0 (Ice Cream Sandwich) update, which is first seen on the Galaxy Nexus smartphone.[88] Previously, Android did not feature native support for screen capturing which would have likely been due to security concerns. Furthermore, prior manufacturer and third-party customizations as well as using a PC connection (DDMS developer's tool) were the only known methods of capturing a screenshot on Android.
  • 11. Android’in Özellikleri System C library - a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices Media Libraries - based on PacketVideo's OpenCORE; the libraries support playback and recording of many popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG Surface Manager - manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications LibWebCore - a modern web browser engine which powers both the Android browser and an embeddable web view SGL - the underlying 2D graphics engine 3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer FreeType - bitmap and vector font rendering SQLite - a powerful and lightweight relational database engine available to all applications
  • 14. Versiyonlar Versiyon 1 ve 1.1 ilk sürümler (Astro ve Bender ile başlıyor) Versiyon 1.5 Cupcake Versiyon 1.6 Donut Versiyon 2.X (2.0, 2.1) Eclair Versiyon 2.2 Froyo Versiyon 2.3.X (2.3.1 - 2.3.7) Gingerbread Versiyon 3.X (3.1,3,2) Honeycomb Versiyon 4.X (4.0.1 - 4.0.3) Ice Cream Sandwich 4.1 Jelly Bean
  • 16. Versiyonlar Android 1.1 Bender Android 1.5 Cupcake
  • 17. Versiyonlar Android 2.0 ve 2.1 Android 1.6 Donut Eclair
  • 18. Versiyonlar Android 2.3 Gingerbread Android 2.2 Froyo
  • 20. Versiyonlar Android 4.0 Ice Cream Sandwich Android 4.1 Jelly Bean
  • 22. Enteresan Uygulamalar Android’in ve donanımın desteklediği özelliklere göre pusula, akseloremetre, GPS gibi özellikleri kullanan uygulamalar yaygınlaşmaktadır. Özellikle “Layar” Augmented Reality konseptiyle bakılan yer hakkında görsel bilgiler vermektedir. Bunun yanında pusulalar, Panoramio gibi konum bilgisine dayalı fotoğrafçılık uygulamaları, Google Maps API kullanan uygulamalar, Jedi ışın kılıcı, Zippo çakmak, her türden harekete duyarlı oyunlar vs. Android üzerinde çalışmakta ve geliştirilmektedir. Sosyal ağ uygulamaları (Google Plus, Twitter, Facebook, Foursquare)
  • 25. Android Uygulama Mağazaları Google Play Android Pazarı
  • 26. Android Uygulama Mağazaları Turkcell Uygulamalar Samsung S-Andoid
  • 29. Android Arayüzleri HTC Sense Samsung Touchwiz Sony Timescape
  • 32. Android Yazılım Geliştirme Java ile Yazılım Geliştirme: Google tarafından önerilen altyapıdır, Android’in içerisindeki uygulamaların pekçoğu Java ile yazılmıştır, Eclipse, Netbeans, IntelliJ Idea IDE’leri kullanılabilir, HTML5 ile Yazılım Geliştirme: Phonegap gibi sistemlerle uygulama içersinde HTML5 çalıştırmak mümkündür. Apache Cordova (Phonegap) Adobe Flex ile Yazılım Geliştirme: Adobe’nin Flash Builder aracı ile ActionScript kullanarak yazılım geliştirilebilir. Mono for Android ile Yazılım Geliştirme: .NET altyapısı ile C# dilinde yazılım geliştirilebilir.
  • 34. Android SDK İçeriği Emülatörler, Dökümanlar, Örnek kodlar, USB sürücüleri (usb_driver/android_winusb.inf), Versiyonlar, Güncelleme sihirbazı, Araçlar…
  • 35. Android SDK İçeriği Virtual Devices
  • 36. Android SDK İçeriği Virtual Devices Emulator 1.1
  • 37. Android SDK İçeriği Virtual Devices Emulator 1.5
  • 38. Android SDK İçeriği Virtual Devices Emulator 1.6
  • 39. Android SDK İçeriği Virtual Devices Emulator 2.0
  • 40. Android SDK İçeriği Virtual Devices Emulator 2.1
  • 41. Android SDK İçeriği Virtual Devices Emulator 2.2
  • 42. Android SDK İçeriği Virtual Devices Emulator 2.3
  • 43. Android SDK İçeriği Installed Packages
  • 48. Android Eclipse Plugin Eclipse ile Android üzerinde yazılım geliştirme, development, debugging , test ve deployment yapılmasına imkan veren plugindir. Eclipse Help-> Install New Software yolu ile giderek aşağıdaki adres eklenir: https://dl-ssl.google.com/android/eclipse/
  • 50. Android Eclipse Plugin Eclipse Android plugin şunları sağlar : Dalvik Debug Monitor Server (DDMS) perspective, Eclipse içinden Android SDK and AVD Manager bağlantısı, Allocation Tracker view, Devices view, Emulator control view, File Explorer view, Heap view, LogCat view, Resource Explorer view, Threads view , New Android Project Menu
  • 51. Android Eclipse Plugin Dalvik Debug Monitor Server (DDMS) Perspective
  • 52. Android Eclipse Plugin Eclipse’e Android Plugin yüklenince workspace’de SDK tanımlaması yapılmadıysa bir ekran geliyor.
  • 53. Yeni Android Projesi Eclipse File -> New -> Other… Android -> Android Project
  • 54. Yeni Android Projesi Application Name : Android’in uygulamayı göreceği isim. Package name : Uygulamanın kullanacağı paketlendirme, mecburi alan. Build SDK : Uygulamayı derleyecek Android SDK Minimum Required SDK: Uygulamanın çalışabileceği minimum Android versiyonu
  • 55. Yeni Android Projesi Yeni ADT ile yeni uygulama oluşturma ekranları çok değişti. Application Name: UygulamaIsmi Project name : ProjeIsmi Package name : com.sirketadi.uygulamaIsmi Build SDK: Android 4.1 Minimum Required SDK: Android 2.2
  • 56. Yeni Android Projesi Icon ayarlama ekranları
  • 57. Yeni Android Projesi Boş bir Activity veya MasterDetailFlow olarak iki öneri sunuyor
  • 58. Yeni Android Projesi Projemiz yaratıldı. Klasörler şöyle : src, gen, res. ---------------------------------------------- AndroidManifest.xml ve default.properties adında iki dosya var.
  • 59. Yeni Android Projesi Proje içerisinde bir de çalışmaya hazır Activity var. Bu haliyle çalıştırabiliriz.
  • 60. Yeni Android Projesi Proje üzerinde sağ tuş -> Run As -> Android Application
  • 61. Yeni Android Projesi Projemizin çalışır hali. Tabii ki “Hello World”
  • 62. Projedeki Önemli Dosyalar AndroidManifest.xml Activity adını verdiğimiz ekranların bilgisini, uygulama bazlı global bilgileri tutar. Uygulamamızın isteyeceği ayrıcalıklar da buradan tanımlanır. <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.m2bilisim.android" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".MainActivity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
  • 63. Projedeki Önemli Dosyalar res/layout/main.xml Her bir Activity için görsel tasarım öğelerini içerir. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
  • 64. Projedeki Önemli Dosyalar res/values/strings.xml Mesaj metinlerinin tutulduğu dosyadır. Activity’ler için düzenlenen xml’lerden android:text=“@string/hello” şeklinde kullanılabilir. <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, StartUp!</string> <string name="app_name">tbd</string> </resources> res/values/ dizininde başka xml dosyaları tutarak iş bölümü yapabiliriz. res/values/color.xml <?xml version="1.0" encoding="utf-8"?> <resources> <color name="white">#fff</color> <color name="black">#000</color> <color name="gelecekonline_red">#d11517</color> <color name="gelecekonline_gray">#323232</color> <color name="gelecekonline_light_gray">#efefef</color> </resources>
  • 65. Android Yazılımlarında Bileşenler Aktiviteler(Activities): Aktiviteler çalıştırılabilir kodun belirli kısımlarını oluşturan ve zamanın belirli bölgelerinde kullanıcı ile ve sistemle etkileşime geçerek gerekli veriyi sağlayan, sonunda da kullanılmadıkları zaman sistem tarafından sonlandırılan parçalardır. Servisler (Services): Servisler bilgisayarlardan da tanıdık olduğumuz arkaplanda çalışan ve uygulamanın bir parçası olan kısımlardır. Aygıt kapanana kadar arkaplanda hazır olarak çalışırlar.Genellikle kullanıcı arayüzü olarak sunulmazlar. Uygulamaların ihtiyacı olan verilerin ve hizmetlerin sağlanmasında kullanılırlar. Kaynak : http://androidgelistir.blogspot.com/2010/07/android-ile-uygulamasnn-bilesenleri- ve.html
  • 66. Android Yazılımlarında Bileşenler Broacast and Intent Receivers: Broadcast bilinen broadcast uygulamaları gibi aygıtın temel mesajlarını algılayan kısımlardır. Düşük pil uyarısı yada zaman dilimi değiştirilmesi gibi olaylarda aygıt, uygulamaların tümünü bu durumlardan haberdar eder. Intent receivers ise belirli bir amaca göre bazı varolan uygulamalardan ve servislerden bilgi toplanmasıdır. Varolan bir uygulamayı kullanarak uygulama geliştirildiğinde bu tür olay yakalayıcılar kullanılır. İçerik Sağlayıcılar(Content Provider): Aygıt üzerindeki uygulamalar dosya sisteminde yada dosya sistemi üzerindeki SQLite veritabanı üzerinde uygulamaya ait verileri saklarlar. Diğer uygulamaların da belirli veri tiplerine uygun olarak bu verileri kullanabilmesi Content Provider ile sağlanır. Content provider uygulamalara bu verilere erişim için bazı metodlar sunar. Kaynak : http://androidgelistir.blogspot.com/2010/07/android-ile-uygulamasnn-bilesenleri- ve.html
  • 67. Activity Bir aktivite 3 duruma sahip olabilir : •Aktif ya da çalışır durumda uygulama kullanıcıya odaklanmıştır ve kullanıcıdan gelecek verilere göre sonuçlar üretilir, •Bekleme modunda başka bir uygulama çalışmaya başlamış, uygulama arkaplana itilmiş fakat aynı şekilde çalışmaya devam etmektedir. Uygulama bekleme modunda düşük bellek durumlarında sistem tarafından yokedilebilir, •Durdurulmuş durumda uygulama tamamen çalışmaz durumdadır buna rağmen en son verilere sahiptir. Uygulamaya ayrılmış bellek sistem tarafından gerektiğinde kullanılabilir. Kaynak : http://androidgelistir.blogspot.com/2010/07/android-ile-uygulamasnn-bilesenleri- ve.html
  • 68. Activity Aktivite bir durumdan diğer duruma geçerken aşağıdaki metodları çalıştırır. void onCreate(Bundle savedInstanceState) void onStart() void onRestart() void onResume() void onPause() void onStop() void onDestroy() Kaynak : http://androidgelistir.blogspot.com/2010/07/android-ile-uygulamasnn-bilesenleri- ve.html
  • 70. Activity Android ekranlarının her biri bir android.app.Activity sınıfından extend olmak zorundadır. Event handling için Listener interface’lerini implemente etmeleri gerekir. public class MainActivity extends Activity implements OnClickListener
  • 71. Activity Android ekranlarının her biri için layout tanımlamak gerekir. Örnek : res/layout/nextactivity.xml Bir Activity’den diğer Activity’ye erişmek için, örneğin bir click eventi içerisinden: public void onClick(View v) { Intent itemintent = new Intent(this, NextActivity.class); startActivity(itemintent); }
  • 72. Intent Intent kelime anlamı olarak niyet demektir. Android’de işler Intent’ler üzerinden yürür diyebiliriz. Bir Activity başlatmak, bir servis çalıştırmak, bir sisteme broadcast yapmak, broadcast dinlemek gibi işlemler için önce Intent oluşturulmalı daha sonra bu Intent başlatılmalıdır. //Yeni activity acmak Intent activityIntent = new Intent(getApplicationContext(), YeniActivity.class); startActivity(activityIntent); //Bir numara cevirmek Intent telefonIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:05051110011")); startActivity(telefonIntent); //Web site baslatmak Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://gomobil.in")); startActivity(webIntent);
  • 73. Layout Layout dosyaları, Activity veya görsel elemanlar (View’lar) içersinde öğelerin nerede ve nasıl durması gerektiğini belirleyen şemalar gibi düşünülebilir. Activity’nin ne şekilde duracağı, içerisinde ne gibi öğelerin olacağı bilgisi xml dosyalarıyla belirlenir. Projedeki res dizini altında bulunan layout dizini içerisinde Activity veya View’lar için xml uzantılı dosyalar düzenlenir. Bu dosyaların içerisindeki bilgi Android tarafından okunarak Activity’ler veya View’lar üzerine yüklenir. public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } Buradaki main aslında layout dizinindeki main.xml adlı layout dosyasına karşılık gelir. Activity’ler içerisinde çeşitli View’lar olabileceği gibi yazılımcı tarafından geliştirilmiş özel View’lar da Layout dosyalarında düzenlenebilir.
  • 74. Layout gen dizininde bulunan R.java dosyası; res dizininde bulunan layout dizinine eklenen her xml dosyasını otomatik olarak kendi içerisinde yaratmaktadır. Bu yöntem ile xml tasarım şema (layout) dosyalarına Java sınıflarından erişim mümkün olmaktadır.
  • 75. Layout AbsoluteLayout : Ekran üzerinde hangi görsel elemanın nerede duracağını piksel piksel sabitler. Örneğin bir butonun soldan 20 piksel, üstten 20 piksel koordinatlarında durmasını istersek AbsoluteLayout kullanmalıyız. LinearLayout : Bütün eklenen görsel elemanları alt alta veya yan yana çizgisel olarak dizer. RelativeLayout : Görsel öğelerin ekranda üst-sol, üst-sağ, üst-orta, dikey-orta, yatay -orta, taban-sol, taban-orta, taban-sol gibi ekran boyununa bağlı olmaksızın ayarlanmasını sağlar. TableLayout : Ekran öğelerini tablolar halinde göstermek için kullanılabilen layouttur. Herbir TableLayout içerisinde TableRow’lar halinde tablo satırları oluşturulabilir. FrameLayout : En basit türde layout sistemdir. İçerisine eklenen görsel öğeleri sola dayalı olarak gösterir ve eğer birden fazla öğe eklerseniz bunları üst üste gösterir. Resim dosyalarının üzerine yazı eklemek için kullanılabilir. FrameLayout yapısı sekmeli ekran yapımında da kullanılmaktadır.
  • 76. View Activity’lerde kullanılan görsel yapılara View denilmektedir. View’lar ListView, TextView, WebView, ScrollView gibi çeşitli şekillerde olabilirler. ListView : Alt alta dizilecek görsel öğeleri göstermede kullanılır. Java’nın dizi yapılarını doğrudan ekrana basabilmektedir. TextView : Ekranda metin içeriği göstermede kullanılabilen View türüdür. Diğer pekçok programlama dilinde Label olarak geçer. TextView’lara metin girişi birkaç yöntemle yapılabilir: WebView : HTML içeriklerini ve web sayfalarını Activity’ler içerisinde açabilen View’dır. ScrollView : Uzun içeriklerin kaydırma çubuğu ile aşağıya doğru inilerek görüntülenmesini sağlayan View’dir. Sözgelimi içerisinde çok sayıda bilginin bulunduğu bir ListView ScrollView içerisinde gösterilebilir. Böylece ekrana sığmayan listeler kullanıcı tarafından aşağıya doğru kaydırılarak görüntülenebilir.
  • 77. View WebView public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webviewornek); WebView webView = (WebView) findViewById(R.id.webview); webView.loadUrl("http://www.gelecekonline.com/mobile"); } Aşağıdaki şekilde internet erişim izni alınmalıdır: <uses-permission android:name="android.permission.INTERNET"/>
  • 78. View (Form elemanları) Kullanıcıdan veri almak için kullanılan yapılar da birer View’dır. Mesela EditText, Button, Radio Button, DatePicker, Spinner, gibi çok sayıda form elemanı vardır ve bunlar da aslında View sınıfından türemiştir. View’lar çeşitli event’ları listen edebilirler (dinleyebilirler) vardır. Örneğin Button için OnClickListener event’ı vardır. ListView’ın OnItemClickListener event’ı bulunmaktadır. Bu listener’ları kullanabilmek için OnClickListener Interface’inden dinamik sınıf yaratmak gereklidir. Örnek: Button ornekButton = (Button)findViewById(R.id.ornekButton); ornekButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { TextView textView = (TextView)findViewById(R.id.ornekText); textView.setText("Butona tıklandı"); } });
  • 79. import android.app.Activity; ListView import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class Main extends Activity { ListView listView; String yazarlar[]={"Erol Dizdar","Egemen Mede","Selçuk Yavuz"}; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); listView = (ListView)findViewById(R.id. listView); listView.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1 , yazarlar)); } }
  • 80. View (Form elemanları) ListView için OnItemClickListener Interface’i kullanılabilir. listView.setOnItemClickListener(this); public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); }
  • 81. Dialoglar Android’de çok sayıda iletişim kutusu seçeneği vardır. Dialog : Mesaj kutusu çıkarır. Genişletilebilir ve özelleştirilebilir. Layout yüklenebilir. AlertDialog : Uyarı mesajıdır. Tamam – iptal gibi görünümleri olabilir. ProgressDialog : İşlem yapıldığında kullanılabilen mesaj kutusudur. DatePickerDialog : Tarih seçim mesajı TimePickerDialog : Zaman seçim mesaj kutusu Custom Dialog : Özelleştirilmiş bir mesaj kutusudur. İçerisinde başka View’lar olabilir.
  • 82. Dialoglar AlertDialog : Evet/hayır şeklinde mesaj kutusu çıkarır. AlertDialog.Builder builder = new AlertDialog.Builder(DialogTestActivity.this); builder.setMessage("Uygulamadan çıkılsın mı?"). setCancelable(false).setPositiveButton("Evet",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { finish(); } }).setNegativeButton("Hayır", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert= builder.create(); alert.show();
  • 83. Dialoglar AlertDialog : Liste şeklinde mesaj kutusu çıkarır. final CharSequence[] items = {"Kirmızı", "Yeşil", "Mavi"}; AlertDialog.Builder builder = new AlertDialog.Builder(DialogTestActivity.this); builder.setTitle("Pick a color"); builder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); } }); AlertDialog alert = builder.create(); alert.show();
  • 84. Dialoglar AlertDialog : Seçim listesi şeklinde mesaj kutusu çıkarır. final CharSequence[] items = {"Kirmızı", "Yeşil", "Mavi"}; AlertDialog.Builder builder = new AlertDialog.Builder(DialogTestActivity.this); builder.setTitle("Pick a color"); builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); } }); AlertDialog alert = builder.create(); alert.show();
  • 85. Menu Activity içerisinde onPrepareOptionsMenu() metoduyla menu oluşturabiliyoruz. public boolean onPrepareOptionsMenu(Menu menu) { menu.add(0, 0, 1, R.string.BaseMenu); menu.add(0, 1, 2, R.string.About); return super.onPrepareOptionsMenu(menu); } Seçilen menu elemanını onOptionsItemSelected(MenuItem item) metoduyla algılayabiliriz. Örnek : public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 0: finish(); case 1: final CharSequence[] items = {"Kirmızı", "Yeşil", "Mavi"}; AlertDialog.Builder builder = new AlertDialog.Builder(DialogTestActivity.this); builder.setTitle("Pick a color"); builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); } }); AlertDialog alert = builder.create(); alert.show(); } return false; }
  • 86. Theme Android’in kendine ait temaları bulunmaktadır. Default tema siyah zemin üzerine beyaz yazılar şeklindedir. Ama bu temanın alternatifleri vardır. Bir activity’nin temasını değiştirmek için AndroidManifest.xml’de : Beyaz zemin üzerine siyah yazılar için : android:theme="@style/android:Theme.Light" tanımlaması yapabiliriz. Şeffaf arkaplan için : android:theme="@style/android:Theme.Translucent“ Ekrana diyalog kutusu şeklinde Activity basmak için : android:theme="@style/android:Theme.Dialog"
  • 87. Theme – Custom Theme Programcı isterse kendine ait temalar da oluşturabilir. Bunu yapabilmek için /res/values içerisinde styles.xml adında bir dosya oluşturup tanımlamalarını bu dosyada yapar. <resources> <style name="Theme.Ntv" parent="android:Theme.Light"> <item name="android:windowBackground">@drawable/bg</item> </style> </resources> Android themes.xml : http://goo.gl/P8hv1 Android styles.xml : http://goo.gl/d46Zf
  • 88. Thread Thread yönetimi iki şekilde yapılıyor: Klasik yöntem ve AsnycTask ile Klasik yöntem: Activity’yi Runnable Interface’inden türetmek : implements Runnable Bir Thread çalıştırmak : Thread thread = new Thread(Main.this); thread.start(); run() methodu yazmak : public void run() { pi_string = Pi.computePi(800).toString(); handler.sendEmptyMessage(0); } Handler sınıfı içerisindeki handleMessage() ile buradan dönecek mesajı yakalamak: private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { pd.dismiss(); tv.setText(pi_string); } };
  • 89. Thread - AscyncTask AsnycTask ile asenkron işlem yapmak Google tarafından önerilen yöntemdir. Bu yöntemde Activity içersinde InnerClass olarak AsyncTask sınıfından oluşturulan bir sınıf yazılır. Örnek : private class PiHesaplaTask extends AsyncTask<String, Void, Void> Bu sınıfın execute metodu çağırılarak asenkron işlem başlatılır. Örnek : new PiHesaplaTask().execute(); AsyncTask sınıfının içerisinde süreç ilk başladığı zaman onPreExecute() metodu aktifleşir. Bu metotta onPreExecute() işlemin yapıdığına dair bir uyarı kutusu çıkarılabilir. Asenkron işlem doInBackground() metodu içerisinde doInBackground() gerçekleşir. onPostExecute() metodu ile işlem bittiğinde asenkron işlem sonuçlanır ve uyarı kutusu kapatılır. Tam sınıf örneği: private class PiHesaplaTask extends AsyncTask<String, Void, Void> { private ProgressDialog progressDialog; protected void onPreExecute() { progressDialog = ProgressDialog.show(MainAsyncTask.this, "Hesaplanıyor..", "Pi sayısı hesaplanıyor"); } @Override protected Void doInBackground(String... arg0) { pitext = Pi.computePi(800).toString(); return null; } protected void onPostExecute(final Void unused) { progressDialog.dismiss(); textView.setText(pitext); } }
  • 90. Widget Widget’lar uygulamaların masaüstünde çalışabilen kısımlarıdır. Wndget’ların da aynen Activity gibi Layout’ları olur. AndroidManifest.xml dosyasına receiver olarak tanıtılırlar. <receiver android:name=".Widget1" android:label="Widget1"> Intent-filter olarak android.appwidget.action.APPWIDGET_UPDATE eklenir. AndroidManifest.xml dosyasında metadata ilavesi yapmak gereklidir. Ve metadata dosyasına widget tanımlama xml bilgisi eklenir. <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget1" /> AndroidManifest.xml ‘de bir widget tanımlamak için gereken tüm tanımlama: <receiver android:name=".Widget1" android:label="Widget1"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget1" /> </receiver>
  • 91. Widget Widget’ların hangi layout’u kullanacağı, boyutlarının ne olacağı gibi bilgiler için ayrı bir xml dosyası oluşturulur. Örnek widget1.xml <?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="50dp" android:minHeight="72dp" android:updatePeriodMillis="10000" android:initialLayout="@layout/widget_layout" android:label="Hello1" /> Burada android:initialLayout="@layout/widget_layout" ile tanımlanan satır widget_layout.xml dosyasıdır. Widget sınıfları android.appwidget. AppWidgetProvider sınıfından türetilir ve en önemli metodu onUpdate() metodudur.
  • 92. Broadcast Android sisteminin olaylar karşısında yaydığı çağrılardır. Bu çağrılar yakalanarak belli işlemler yapılabilir. Mesela cihaz açıldığında ve Android sistemi yüklenmesi tamamlandığında android.intent.action.BOOT_COMPLETED broadcast’i yayılır. Bu çağrıları yakalamak için AndroidManifest.xml içine aşağıdaki şekilde intent-fiter yazmak yeterlidir: <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> <action android:name="android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE"/> </intent-filter> Tabii bu çağrının yakalanması izne tabi olabilir onu da uses-permissions ile bildirmek gerekir. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  • 93. Droiddraw Android için görsel olarak GUI tasarımı yapmaya olanak tanıyan bir uygulamadır. http://www.droiddraw.org/ Site üzerinde çalışan applet ya da indirilebilen Swing uygulaması ile XML olarak GUI çıktısı alınabilir.
  • 94. Motodev Studio Motorola tarafından Android geliştiricileri için çıkarılmış harika bir IDE’dir. Çok sayıda örnek kod (snippet) içerir, görsel programlamayı kolaylaştırmaktadır, Mevcut Eclipse Plugin’ini geliştirmiştir,