2. Who am I ?
• 2008 GSU graduate
• Software Development Team Leader at Pozitron
– http://www.pozitron.com
• Interest in mobile platforms
• Experience with mobile platforms such as Symbian
(Java ME), BlackBerry and Android
• Experience with server side development
3. Agenda
• What is Android?
• Why Android?
• Android Architecture
• Android Building Blocks
• Demo
5. What is Android?
• Software stack for mobile devices including an
operating system, middleware , key applications
and rich set of APIs
• Project by Open Handset Alliance led by Google,
a consortium of 86 companies (Samsung,
Motorola, Sony, HTC, LG, Dell, Intel, Nvidia etc.)
• First Release in November 2007
6. What is Android?
• Based on Linux Kernel
• Security, Memory Management, Process Management,
Network Stack, Driver stack
• No, Android is not Linux (No native windowing system, no
glibc, no standard GNU/linux utilities)
• Linux Kernel enhancements (alarm, ashmem, power
management, low memory killer - no swap space)
• Robust and proven over time
7. What is Android?
• Applications written primarily in customized version of
Java
• No, android is not Java
– Uses Java language
– Implements part of the Java 5 SE specification
(Collections, generics support)
– Runs on Dalvik Virtual Machine instead of JVM
– Multiple VMs
8. What is Android?
• Free and open
– No need of any user id or account for SDK access
– Source at http://source.android.com
• Rich Developer Community
• Cheaper and more innovative Mobile Devices
• Extendable
– Players can add proprietary functionality to their products
– Companies can remove functionality if they choose
9. What is Android?
• Android Market, 450.000 apps as of February
2012
• 850.000 devices activated every day,
according to Google’s Andy Rubin
10. What is Android?
• Mulitasking
• Integrated browser based on WebKit Engine
• 3d Graphics based on the OpenGL Es
• SQLite
• Camera, GPS, compass and accelerometer
12. Why Android?
• Free SDK
– Available at http://developer.android.com
• Open Source
• All applications are equal
• Dalvik Virtual Machine
• Development on Windows, Linux or Mac OS
• Starting development easy and cheap
13. Why Android?
• Rich Development Environment
– Full Device Emulator
– Tools for debugging DDMS (Dalvik Debug Monitor Server)
– Memory and performance profiling
• Rich Documentation
• Very large community and target audience
• Open Market Place
– Instant publishing
16. Android Architecture
• Relies on Linux kernel version 2.6 for core system services
• Every Android application runs on its own process, with its
own Dalvik Virtual Machine
• C/C++ libraries (Surface Manager , Media Libraries, SQLite
etc.)
• Native set of core applications including email client, SMS,
Calendar, maps, browser, contacts and others
22. Activity
• Moving through screens is by starting new activities
• Managed as an activity stack
• LIFO (Last In First Out)
• Only one is visible
• Only one is active
• Activity Lifecycle
24. Activity States
• Active
– At the top of the stack
• Paused
– Lost focusbut still visible
– Can be killed by Low Memory Killer
• Stopped
– Not at the top of the stack
• Dropped
– Killed to reclaim its memory
26. Views
• Views are basic UI building blocks
• They know how to draw themselves
– Android framework responsible for measuring, laying out and drawing
• Respond to events
• Implementation :
– Java code
– XML
– Separation of presentation of the application from the code controlling the
behavior.
– Ease of visualization of the UI structure
– Strings, color, styles, shapes, animations etc can be described as XML
27. Views
• Views and view groups trees build up
complex GUIs : widgets
– android.widget.ListView
– android.widget.TextView
– android.widget.Button
– android.widget.ImageView
30. Resources
• External sources other than your code
(images, views and layouts in xml, strings
etc.) should be externalized, so that you can
maintain them independently
31. Resources
• Accessing application resources :
– R class
• All reources IDs are defined in R class, which is
automatically generated by Android aapt tool
35. Intents
• An Intention to do something
• Abstract description of an operation to be performed
• A message to the OS that you want to do something
(pre-defined action)
• Used to move from one Activity to another
36. Intents
• Facilitates app to app communication
• Primary Attributes
– Action
• The general action to be performed
– Data
• The data to operate on (a contact, an url, the new activity
etc.)
39. AndroidManifest .xml
• Description of the android application including
activities, intent receivers, permissions, application
icon, application name, version information etc.
• It’s the glue that specifies which Intents your activities
might receive
• An activity should be declared as the main entry point
41. More Advanced Topics
• How Android deal with Fragmentation?
– API Levels (Cupcake, Donut, Eclair, Froyo,
Gingerbread, Honeycomb, Ice Cream Sandwich)
• How are the resources selected at run time
according to different screen sizes and
densities?
42. More Advanced Topics
• Single Threaded UI Model
• APK (Android Package)
• Application Signing
44. Demo
• Phase 1:
– Create a new Android project with package name
com.gsuandroid.activities
– Create a new Activity called MainActivity
– Create a layout for MainActivity which will consist
of a LinearLayout containing a TextView with
predefined text “Hello Android”
– Run your application
45. Demo
• Phase 2:
– Create another activity called ActTwo
– Create a layout for your new activity containing a TextView
without setting a text in XML
– Modify your MainActivity’s layout xml in and add a Button with
setting and id, android:id="@+id/btn_go_to_act_two » and text
« Go to Next Activity»
– Start ActTwo when user presses button inserted in the
MainActivity
– Run your application
46. Demo
• Phase 3:
– Pass a text message “That’s it for today” when
moving from MainActivity to ActTwo
– Run your application