Your SlideShare is downloading. ×
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply



Published on

24 Haziran 2010 Perşembe günü Bahçeşehir Üniversitesi'nde sunduğumuz Android semineri sunumu.

24 Haziran 2010 Perşembe günü Bahçeşehir Üniversitesi'nde sunduğumuz Android semineri sunumu.

  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Muharrem Taç M2 BilişimGelecekonline
  • 2. Android Nedir
  • 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. Şuan 65 şirket bu birliktedir.Bu birliğin adı Open Handset Alliance’dır ve web sitesi :http://www.openhandsetalliance.comAndroid 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 ÖzellikleriLinux kerneliUygulama ç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ği3B ve 2B gelişmiş grafikler, LG Real 3D ile 3 boyutlucihazlar,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, Eclipseplugin)Android MarketMultitaskingWidgetNotification
  • 7. Android’in ÖzellikleriHandset 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 Chromes 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 ÖzellikleriJava 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 ÖzellikleriMulti-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 Apples 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 ÖzellikleriMultitasking 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 developers tool) were the only known methods of capturing a screenshot on Android.
  • 11. Android’in ÖzellikleriSystem C library - a BSD-derived implementation of the standard Csystem library (libc), tuned for embedded Linux-based devicesMedia Libraries - based on PacketVideos OpenCORE; the librariessupport playback and recording of many popular audio and videoformats, as well as static image files, including MPEG4, H.264, MP3, AAC,AMR, JPG, and PNGSurface Manager - manages access to the display subsystem andseamlessly composites 2D and 3D graphic layers from multipleapplicationsLibWebCore - a modern web browser engine which powers both theAndroid browser and an embeddable web viewSGL - the underlying 2D graphics engine3D libraries - an implementation based on OpenGL ES 1.0 APIs; thelibraries use either hardware 3D acceleration (where available) or theincluded, highly optimized 3D software rasterizerFreeType - bitmap and vector font renderingSQLite - a powerful and lightweight relational database engine availableto all applications
  • 12. Android Mimarisi
  • 13. Versiyonlar
  • 14. VersiyonlarVersiyon 1 ve 1.1 ilk sürümler (Astro ve Bender ilebaşlıyor)Versiyon 1.5 CupcakeVersiyon 1.6 DonutVersiyon 2.X (2.0, 2.1) EclairVersiyon 2.2 FroyoVersiyon 2.3.X (2.3.1 - 2.3.7) GingerbreadVersiyon 3.X (3.1,3,2) HoneycombVersiyon 4.X (4.0.1 - 4.0.3) Ice Cream Sandwich4.1 Jelly Bean
  • 15. Versiyonlar
  • 16. VersiyonlarAndroid 1.1 Bender Android 1.5 Cupcake
  • 17. Versiyonlar Android 2.0 ve 2.1Android 1.6 Donut Eclair
  • 18. Versiyonlar Android 2.3 GingerbreadAndroid 2.2 Froyo
  • 19. VersiyonlarAndroid 3.0 Honeycomb
  • 20. VersiyonlarAndroid 4.0 Ice Cream Sandwich Android 4.1 Jelly Bean
  • 21. Enteresan Uygulamalar
  • 22. Enteresan UygulamalarAndroid’in ve donanımın desteklediği özelliklere görepusula, akseloremetre, GPS gibi özellikleri kullananuygulamalar yaygınlaşmaktadır.Özellikle “Layar” Augmented Reality konseptiyle bakılanyer hakkında görsel bilgiler vermektedir.Bunun yanında pusulalar, Panoramio gibi konum bilgisinedayalı fotoğrafçılık uygulamaları, Google Maps APIkullanan uygulamalar, Jedi ışın kılıcı, Zippo çakmak, hertürden harekete duyarlı oyunlar vs. Android üzerindeçalışmakta ve geliştirilmektedir.Sosyal ağ uygulamaları (Google Plus, Twitter, Facebook,Foursquare)
  • 23. Enteresan Uygulamalar Layar
  • 24. Android Uygulama Mağazaları
  • 25. Android Uygulama MağazalarıGoogle Play Android Pazarı
  • 26. Android Uygulama MağazalarıTurkcell Uygulamalar Samsung S-Andoid
  • 27. Android cihazları
  • 28. Google telefonları
  • 29. Android ArayüzleriHTC Sense Samsung Touchwiz Sony Timescape
  • 30. 3D API’lerHTC 3D LG 3D
  • 31. Android Yazılım Geliştirme
  • 32. Android Yazılım GeliştirmeJava ile Yazılım Geliştirme:Google tarafından önerilen altyapıdır, Android’in içerisindeki uygulamalarınpekç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.
  • 33. Android SDKEclipse Android Plugin
  • 34. Android SDK İçeriğiEmü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ğiVirtual Devices Emulator 1.1
  • 37. Android SDK İçeriğiVirtual Devices Emulator 1.5
  • 38. Android SDK İçeriğiVirtual Devices Emulator 1.6
  • 39. Android SDK İçeriğiVirtual Devices Emulator 2.0
  • 40. Android SDK İçeriğiVirtual Devices Emulator 2.1
  • 41. Android SDK İçeriğiVirtual Devices Emulator 2.2
  • 42. Android SDK İçeriğiVirtual Devices Emulator 2.3
  • 43. Android SDK İçeriği Installed Packages
  • 44. Android SDK İçeriğiAvailable Packages
  • 45. Android SDK İçeriği Settings
  • 46. Android SDK İçeriği About
  • 47. Android Eclipse Plugin
  • 48. Android Eclipse PluginEclipse ile Android üzerinde yazılım geliştirme,development, debugging , test ve deployment yapılmasınaimkan veren plugindir.Eclipse Help-> Install New Software yolu ile giderekaşağıdaki adres eklenir:
  • 49. Android Eclipse Plugin
  • 50. Android Eclipse PluginEclipse 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 PluginDalvik Debug Monitor Server (DDMS) Perspective
  • 52. Android Eclipse PluginEclipse’e Android Plugin yüklenince workspace’de SDK tanımlamasıyapılmadıysa bir ekran geliyor.
  • 53. Yeni Android ProjesiEclipse File -> New -> Other… Android -> Android Project
  • 54. Yeni Android ProjesiApplication Name : Android’in uygulamayı göreceği isim.Package name : Uygulamanın kullanacağı paketlendirme,mecburi alan.Build SDK : Uygulamayı derleyecek Android SDKMinimum Required SDK: Uygulamanın çalışabileceği minimumAndroid versiyonu
  • 55. Yeni Android ProjesiYeni ADT ile yeni uygulamaoluşturma ekranları çok değişti.Application Name:UygulamaIsmiProject name : ProjeIsmiPackage name :com.sirketadi.uygulamaIsmiBuild SDK: Android 4.1Minimum Required SDK:Android 2.2
  • 56. Yeni Android ProjesiIcon ayarlama ekranları
  • 57. Yeni Android ProjesiBoş bir Activity veyaMasterDetailFlow olarak ikiöneri sunuyor
  • 58. Yeni Android ProjesiProjemiz yaratıldı.Klasörler şöyle :src,gen, adında iki dosyavar.
  • 59. Yeni Android ProjesiProje içerisinde bir de çalışmaya hazır Activity var. Bu haliyleçalıştırabiliriz.
  • 60. Yeni Android ProjesiProje üzerinde sağ tuş -> Run As -> Android Application
  • 61. Yeni Android ProjesiProjemizin çalışır hali. Tabii ki “Hello World”
  • 62. Projedeki Önemli DosyalarAndroidManifest.xmlActivity 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="" package="" 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 Dosyalarres/layout/main.xmlHer bir Activity için görsel tasarım öğelerini içerir. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: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 Dosyalarres/values/strings.xmlMesaj metinlerinin tutulduğu dosyadır.Activity’ler için düzenlenen xml’lerden android:text=“@string/hello” şeklindekullanı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şenlerAktiviteler(Activities):Aktiviteler çalıştırılabilir kodun belirli kısımlarını oluşturan ve zamanın belirlibö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 veuygulamanın bir parçası olan kısımlardır. Aygıt kapanana kadar arkaplanda hazırolarak çalışırlar.Genellikle kullanıcı arayüzü olarak sunulmazlar. Uygulamalarınihtiyacı olan verilerin ve hizmetlerin sağlanmasında kullanılırlar.Kaynak :
  • 66. Android Yazılımlarında BileşenlerBroacast and Intent Receivers:Broadcast bilinen broadcast uygulamaları gibi aygıtın temel mesajlarını algılayankı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 belirlibir amaca göre bazı varolan uygulamalardan ve servislerden bilgi toplanmasıdır.Varolan bir uygulamayı kullanarak uygulama geliştirildiğinde bu tür olayyakalayıcılar kullanılır.İçerik Sağlayıcılar(Content Provider):Aygıt üzerindeki uygulamalar dosya sisteminde yada dosya sistemi üzerindekiSQLite veritabanı üzerinde uygulamaya ait verileri saklarlar. Diğer uygulamalarında belirli veri tiplerine uygun olarak bu verileri kullanabilmesi Content Provider ilesağlanır. Content provider uygulamalara bu verilere erişim için bazı metodlarsunar.Kaynak :
  • 67. ActivityBir aktivite 3 duruma sahip olabilir :•Aktif ya da çalışır durumda uygulama kullanıcıya odaklanmıştırve 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 devametmektedir. Uygulama bekleme modunda düşük bellekdurumlarında sistem tarafından yokedilebilir,•Durdurulmuş durumda uygulama tamamen çalışmaz durumdadırbuna rağmen en son verilere sahiptir. Uygulamaya ayrılmış belleksistem tarafından gerektiğinde kullanılabilir. Kaynak : ve.html
  • 68. ActivityAktivite 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 : ve.html
  • 69. Activity
  • 70. ActivityAndroid ekranlarının her biri bir sınıfından extend olmakzorundadır.Event handling için Listener interface’lerini implemente etmeleri gerekir.public class MainActivity extends Activity implements OnClickListener
  • 71. ActivityAndroid ekranlarının her biri için layout tanımlamak gerekir.Örnek :res/layout/nextactivity.xmlBir 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. IntentIntent kelime anlamı olarak niyet demektir. Android’de işler Intent’ler üzerindenyürür diyebiliriz. Bir Activity başlatmak, bir servis çalıştırmak, bir sistemebroadcast yapmak, broadcast dinlemek gibi işlemler için önce Intent oluşturulmalıdaha sonra bu Intent başlatılmalıdır.//Yeni activity acmakIntent activityIntent = new Intent(getApplicationContext(),YeniActivity.class);startActivity(activityIntent);//Bir numara cevirmekIntent telefonIntent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:05051110011"));startActivity(telefonIntent);//Web site baslatmakIntent webIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(""));startActivity(webIntent);
  • 73. LayoutLayout dosyaları, Activity veya görsel elemanlar (View’lar) içersinde öğelerinnerede ve nasıl durması gerektiğini belirleyen şemalar gibi düşünülebilir.Activity’nin ne şekilde duracağı, içerisinde ne gibi öğelerin olacağı bilgisi xmldosyalarıyla belirlenir. Projedeki res dizini altında bulunan layout dizini içerisindeActivity veya View’lar için xml uzantılı dosyalar düzenlenir. Bu dosyalarıniçerisindeki bilgi Android tarafından okunarak Activity’ler veya View’lar üzerineyü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ındangeliştirilmiş özel View’lar da Layout dosyalarında düzenlenebilir.
  • 74. Layoutgen dizininde bulunan R.javadosyası; res dizininde bulunanlayout dizinine eklenen herxml dosyasını otomatik olarakkendi içerisindeyaratmaktadır. Bu yöntem ilexml tasarım şema (layout)dosyalarına Java sınıflarındanerişim mümkün olmaktadır.
  • 75. LayoutAbsoluteLayout : Ekran üzerinde hangi görsel elemanın nerede duracağını pikselpiksel sabitler. Örneğin bir butonun soldan 20 piksel, üstten 20 pikselkoordinatlarında durmasını istersek AbsoluteLayout kullanmalıyız.LinearLayout : Bütün eklenen görsel elemanları alt alta veya yan yana çizgiselolarak 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ınayarlanmasını sağlar.TableLayout : Ekran öğelerini tablolar halinde göstermek için kullanılabilenlayouttur. Herbir TableLayout içerisinde TableRow’lar halinde tablo satırlarıoluşturulabilir.FrameLayout : En basit türde layout sistemdir. İçerisine eklenen görsel öğelerisola dayalı olarak gösterir ve eğer birden fazla öğe eklerseniz bunları üst üstegösterir. Resim dosyalarının üzerine yazı eklemek için kullanılabilir. FrameLayoutyapısı sekmeli ekran yapımında da kullanılmaktadır.
  • 76. ViewActivity’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 diziyapılarını doğrudan ekrana basabilmektedir.TextView : Ekranda metin içeriği göstermede kullanılabilen View türüdür. Diğerpekç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çabilenView’dır.ScrollView : Uzun içeriklerin kaydırma çubuğu ile aşağıya doğru inilerekgörüntülenmesini sağlayan View’dir. Sözgelimi içerisinde çok sayıda bilgininbulunduğu bir ListView ScrollView içerisinde gösterilebilir. Böylece ekranasığmayan listeler kullanıcı tarafından aşağıya doğru kaydırılarak görüntülenebilir.
  • 77. ViewWebViewpublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.webviewornek); WebView webView = (WebView) findViewById(; webView.loadUrl("");}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 formelemanı 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ıfyaratmak gereklidir. Örnek:Button ornekButton = (Button)findViewById(; ornekButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { TextView textView = (TextView)findViewById(; textView.setText("Butona tıklandı"); }});
  • 79. import; ListViewimport 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( listView);listView.setAdapter(newArrayAdapter(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. DialoglarAndroid’de çok sayıda iletişim kutusu seçeneği vardır.Dialog : Mesaj kutusu çıkarır. Genişletilebilir ve özelleştirilebilir. Layoutyü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 kutusuCustom Dialog : Özelleştirilmiş bir mesaj kutusudur. İçerisinde başka View’larolabilir.
  • 82. DialoglarAlertDialog : 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();;
  • 83. DialoglarAlertDialog : Liste şeklinde mesaj kutusu çıkarı 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();;
  • 84. DialoglarAlertDialog : Seçim listesi şeklinde mesaj kutusu çıkarı 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();;
  • 85. MenuActivity 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) metoduylaalgı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();;}return false; }
  • 86. ThemeAndroid’in kendine ait temaları bulunmaktadır.Default tema siyah zemin üzerine beyaz yazılar şeklindedir. Ama bu temanınalternatifleri 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 ThemeProgramcı isterse kendine ait temalar da oluşturabilir.Bunu yapabilmek için /res/values içerisinde styles.xml adında bir dosya oluşturuptanı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 : styles.xml :
  • 88. ThreadThread yönetimi iki şekilde yapılıyor:Klasik yöntem ve AsnycTask ileKlasik yöntem:Activity’yi Runnable Interface’inden türetmek : implements RunnableBir 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 - AscyncTaskAsnycTask 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 =, "Hesaplanıyor..", "Pi sayısı hesaplanıyor");}@Overrideprotected Void doInBackground(String... arg0) { pitext = Pi.computePi(800).toString(); return null;}protected void onPostExecute(final Void unused) { progressDialog.dismiss(); textView.setText(pitext); } }
  • 90. WidgetWidget’lar uygulamaların masaüstünde çalışabilen kısımlarıdır. Wndget’ların da aynen Activitygibi 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ınawidget 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. WidgetWidget’ların hangi layout’u kullanacağı, boyutlarının ne olacağı gibi bilgiler için ayrı bir xmldosyası oluşturulur. Örnek widget1.xml<?xml version="1.0" encoding="utf-8"?><appwidget-provider xmlns: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.xmldosyasıdır.Widget sınıfları android.appwidget. AppWidgetProvider sınıfından türetilir ve en önemlimetodu onUpdate() metodudur.
  • 92. BroadcastAndroid 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ığındaandroid.intent.action.BOOT_COMPLETED broadcast’i yayılır. Bu çağrıları yakalamak içinAndroidManifest.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-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  • 93. DroiddrawAndroid için görsel olarak GUI tasarımı yapmaya olanak tanıyanbir uygulamadır. üzerinde çalışan applet ya da indirilebilen Swing uygulamasıile XML olarak GUI çıktısı alınabilir.
  • 94. Motodev StudioMotorola tarafından Android geliştiricileri için çıkarılmış harika birIDE’dir.Çok sayıda örnek kod (snippet) içerir,görsel programlamayı kolaylaştırmaktadır,Mevcut Eclipse Plugin’ini geliştirmiştir,
  • 95. Motodev Studio
  • 96. Android Market’e Uygulama Gönderme
  • 97. Android Market’e Uygulama Gönderme
  • 98. Android Market’e Uygulama Gönderme
  • 99. Kaynakça:http://wikipedia.org
  • 100. Teşekkürler