Android:	
  	
  
A	
  9,000-­‐foot	
  
 Overview	
  

  Marko	
  Gargenta	
  
    Marakana	
  
Agenda	
  
•    Android	
  History	
  
•    Android	
  and	
  Java	
  
•    The	
  Stack	
  
•    Android	
  SDK	
  
•    Hello	
  World!	
  
•    Main	
  Building	
  Blocks	
  
•    Android	
  User	
  Interface	
  
•    Debugging	
  
•    Summary	
  
History	
  
2005	
     Google	
  buys	
  Android,	
  Inc.	
  
           Work	
  on	
  Dalvik	
  starts	
  


2007	
     OHA	
  Announced	
  
           Early	
  SDK	
  


2008	
     G1	
  Announced	
  
           SDK	
  1.0	
  Released	
  


2009	
     G2	
  Released	
  
           Cupcake,	
  Donut,	
  Eclair	
  
Android	
  and	
  Java	
  

Android Java =
Java SE –
AWT/Swing +
Android API
ANDROID	
  STACK	
  
The	
  Stack	
  
Linux	
  Kernel	
  
Android runs on Linux.                                        Applications


                                    Home      Contacts          Phone             Browser              Other

Linux provides as well as:
    Hardware abstraction layer                            Application Framework
    Memory management              Activity        Window                    Content                   View

    Process management
                                   Manager         Manager                  Providers                 System

                                   Package    Telephony         Resource           Location            Notiication
    Networking                     Manager     Manager          Manager            Manager             Manager


                                                                Libraries
Users never see Linux sub system   Surface       Media
                                                                   SQLite                  Android Runtime
                                   Manager     Framework

                                                                                                 Core Libs

The adb shell command opens        OpenGL      FreeType            WebKit

                                                                                                  Delvik
Linux shell                          SGL          SSL               libc
                                                                                                   VM




                                    Display    Camera         Linux Kernel              Flash                Binder
                                    Driver      Driver                                  Driver               Driver

                                    Keypad      WiFi                                    Audio                Power
                                     Driver     Driver                                  Driver               Mgmt
NaXve	
  Libraries	
  
Bionic, a super fast and small                                Applications


GPL-based libc library optimized    Home      Contacts          Phone             Browser              Other

for embedded use
                                                          Application Framework
Surface Manager for composing      Activity        Window                    Content                   View

window manager with off-screen     Manager         Manager                  Providers                 System


buffering
                                   Package    Telephony         Resource           Location            Notiication
                                   Manager     Manager          Manager            Manager             Manager


                                                                Libraries
2D and 3D graphics hardware        Surface       Media
                                                                   SQLite                  Android Runtime
support or software simulation
                                   Manager     Framework

                                                                                                 Core Libs
                                   OpenGL      FreeType            WebKit

                                                                                                  Delvik
Media codecs offer support for       SGL          SSL               libc
                                                                                                   VM

major audio/video codecs
                                    Display    Camera         Linux Kernel              Flash                Binder
                                                                                        Driver               Driver
SQLite database
                                    Driver      Driver

                                    Keypad      WiFi                                    Audio                Power
                                     Driver     Driver                                  Driver               Mgmt


WebKit library for fast HTML
rendering
Dalvik	
  
Dalvik VM is Google’s implementation of Java

Optimized for mobile devices




Key Dalvik differences:

    Register-based versus stack-based VM
    Dalvik runs .dex files
    More efficient and compact implementation
    Different set of Java libraries than SDK
ApplicaXon	
  Framework	
  
Activation manager controls the life                              Applications


cycle of the app                        Home      Contacts          Phone             Browser              Other




Content providers encapsulate data                            Application Framework
that is shared (e.g. contacts)         Activity        Window                    Content                   View
                                       Manager         Manager                  Providers                 System

                                       Package    Telephony         Resource           Location            Notiication
Resource manager manages               Manager     Manager          Manager            Manager             Manager


everything that is not the code                                     Libraries
                                       Surface       Media
                                                                       SQLite                  Android Runtime
                                       Manager     Framework

Location manager figures out the                                                                     Core Libs

location of the phone (GPS, GSM,
                                       OpenGL      FreeType            WebKit

                                                                                                      Delvik

WiFi)                                    SGL          SSL               libc
                                                                                                       VM




Notification manager for events         Display
                                        Driver
                                                   Camera
                                                    Driver
                                                                  Linux Kernel              Flash
                                                                                            Driver
                                                                                                                 Binder
                                                                                                                 Driver

such as arriving messages,              Keypad      WiFi                                    Audio
                                                                                            Driver
                                                                                                                 Power
                                                                                                                 Mgmt
                                         Driver     Driver
appointments, etc
ApplicaXons	
  
Android	
  SDK	
  -­‐	
  What’s	
  in	
  the	
  box
                                                     	
  
SDK

Tools
Docs
Platforms
     Data
     Skins
     Images
     Samples
Add-ons
     Google Maps
The	
  Tools
           	
  
          Tools are important part of the
          SDK. They are available via
          Eclipse plugin as well as command
          line shell.
HELLO	
  WORLD!	
  
Create	
  New	
  Project
                                         	
  
Use the Eclipse tool to create a new
Android project.

Here are some key constructs:


Project	
          Eclipse	
  construct	
  
Target	
           minimum	
  to	
  run	
  
App	
  name	
      whatever	
  
Package	
          Java	
  package	
  
AcXvity	
          Java	
  class	
  
The	
  Manifest	
  File	
  
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.marakana"
   android:versionCode="1"
   android:versionName="1.0">
  <application android:icon="@drawable/icon"
        android:label="@string/app_name">
    <activity android:name=".HelloAndroid"
           android:label="@string/app_name">
       <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
       </intent-filter>
    </activity>
  </application>
  <uses-sdk android:minSdkVersion="5" />
</manifest>
The	
  Layout	
  Resource	
  

<?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>
The	
  Java	
  File	
  
package com.marakana;

import android.app.Activity;
import android.os.Bundle;

public class HelloAndroid extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
  }
}
Running	
  on	
  Emulator
                        	
  
MAIN	
  BUILDING	
  BLOCKS	
  
AcXviXes
                       	
  
Activity is to an    Android Application

application what a       Main Activity
                                           Another    Another
                                           Activity   Activity
web page is to a
website. Sort of.
AcXvity	
  Lifecycle	
  
                                                         Starting




Activities have a well-
                                                     (1) onCreate()
                                                      (2) onStart()
                                              (3) onRestoreInstanceState()

defined lifecycle. The                              (4) onResume()


Android OS manages
your activity by                                         Running


changing its state.       (3) onResume()
                            (2) onStart()
                                                                               (1) onSaveInstanceState()
                                                                                     (2) onPause()

You fill in the blanks.
                           (1) onRestart()                    onResume()


                                                  (1) onSaveInstanceState()
                            Stopped                      (2) onStop()                     Paused



                                 onDestroy()
                                     or                                       <process killed>
                               <process killed>

                                                        Destroyed
Intents
                           	
  
Intents are to      Android Application
Android apps                                         Another
                        Main Activity     Intent
what hyperlinks                                      Activity

are to websites.
They can be




                                                        Intent
implicit and
                    Android Application
explicit. Sort of
like absolute and       Main Activity       Intent
                                                     Another
                                                     Activity
relative links.
Services
                           	
  
A service is something that can be started and
stopped. It doesn’t have UI. It is typically managed
by an activity. Music player,
for example
Service	
  Lifecycle	
  
Service also has a                                       Starting

lifecycle, but it’s                                                            (1) onCreate()
much simpler than                                                               (2) onStart()


activity’s. An activity                      onStart()

typically starts and
stops a service to do       Stopped                                                Running

some work for it in
the background.                                                     onStop()

Such as play music,
check for new               onDestroy()
                                or

tweets, etc.
                          <process killed>
                                                    Destroyed
Content	
  Providers
                               	
  
Content Providers share                    Content
content with applications                  Provider

across application           Content URI

boundaries.                    insert()

Examples of built-in          update()

Content Providers are:         delete()

Contacts, MediaStore,          query()

Settings and more.
Broadcast	
  Receivers
                                	
  




An Intent-based publish-subscribe mechanism. Great for listening
system events such as SMS messages.
ANDROID	
  USER	
  INTERFACE	
  
Two	
  UI	
  Approaches	
  
Procedural	
                              Declara?ve	
  
You	
  write	
  Java	
  code	
            You	
  write	
  XML	
  code	
  
Similar	
  to	
  Swing	
  or	
  AWT	
     Similar	
  to	
  HTML	
  of	
  a	
  web	
  page	
  




You can mix and match both styles.
Declarative is preferred: easier and
more tools
XML-­‐Based	
  User	
  Interface	
  




Use WYSIWYG tools to build powerful XML-based UI.
Easily customize it from Java. Separate concerns.
Dips	
  and	
  Sps	
  

px	
  (pixel)	
                                 Dots	
  on	
  the	
  screen	
  
in	
  (inches)	
                                Size	
  as	
  measured	
  by	
  a	
  ruler	
  
mm	
  (millimeters)	
                           Size	
  as	
  measured	
  by	
  a	
  ruler	
  
pt	
  (points)	
                                1/72	
  of	
  an	
  inch	
  
dp	
  (density-­‐independent	
  pixel)	
        Abstract	
  unit.	
  On	
  screen	
  with	
  160dpi,	
  
                                                1dp=1px	
  
dip	
                                           synonym	
  for	
  dp	
  and	
  oeen	
  used	
  by	
  Google	
  
sp	
                                            Similar	
  to	
  dp	
  but	
  also	
  scaled	
  by	
  users	
  font	
  
                                                size	
  preference	
  
Views	
  and	
  Layouts
                          	
  

                    ViewGroup




        ViewGroup               View




 View     View      View




ViewGroups contain other Views but
are also Views themselves.
Common	
  UI	
  Components
                                	
  
Android UI includes many
common modern UI
widgets, such as Buttons,
Tabs, Progress Bars, Date
and Time Pickers, etc.
SelecXon	
  Components
                              	
  

Some UI widgets may
be linked to zillions of
pieces of data.
Examples are ListView
and Spinners
(pull-downs).
Adapters
                         	
  


                      Adapter       Data
                                   Source




To make sure they run smoothly, Android uses
Adapters to connect them to their data sources. A
typical data source is an Array or a Database.
Complex	
  Components
                            	
  
Certain high-level components are simply
available just like Views. Adding a Map or a
Video to your application is almost like adding a
Button or a piece of text.
Menus	
  and	
  Dialogs
                      	
  
Graphics	
  &	
  AnimaXon	
  
Android has rich support for 2D graphics.
You can draw & animate from XML.
You can use OpenGL for 3D graphics.
MulXmedia	
  
AudioPlayer lets you simply specify
the audio resource and play it.

VideoView is a View that you can
drop anywhere in your activity, point
to a video file and play it.

XML:
<VideoView
  android:id="@+id/video"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_gravity="center” />

Java:
player = (VideoView) findViewById(R.id.video);
player.setVideoPath("/sdcard/samplevideo.3gp");
player.start();
Google	
  Maps
                                      	
  
Google Maps is an add-on in Android.
It is not part of open-source project.

However, adding Maps is relatively
easy using MapView.


XML:
<com.google.android.maps.MapView
android:id="@+id/map"
android:clickable="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0EfLSgdSCWIN…A"
/>
DEBUGGING	
  	
  
ANDROID	
  APPS	
  
LogCat
                              	
  
The universal, most
versatile way to track
what is going on in
your app.

Can be viewed via
command line or
Eclipse.

Logs can be
generated both from
SDK Java code, or
low-level C code via
Bionic libc extension.
Debugger
                                    	
  




Your standard debugger is included in SDK, with all the usual bells & whistles.
TraceView	
  




TraceView helps you profile you application and find bottlenecks. It shows
execution of various calls through the entire stack. You can zoom into specific
calls.
Hierarchy	
  Viewer
                                          	
  
Hierarchy Viewer helps
you analyze your User
Interface.

Base UI tends to be the
most “expensive” part of
your application, this tool
is very useful.
Summary	
  
     Android is based on Java.

     You write Java code, but technically
     don’t run it.

     Java is augmented with XML, mostly
     for UI purposes.

     Android Java is mostly based on Java
     SE with replacement UI libraries.


     Marko Gargenta, Marakana.com
     marko@marakana.com
     +1-415-647-7000


     Licensed under Creative Commons
     License (cc-by-nc-nd). Please Share!

More Related Content

PDF
Android Internals
PDF
Android for Java Developers at OSCON 2010
PDF
Open Android
PDF
Android For Managers Slides
PDF
Marakana Android Internals
PDF
Android for Java Developers
PPT
Android For Java Developers
PDF
Android Deep Dive
Android Internals
Android for Java Developers at OSCON 2010
Open Android
Android For Managers Slides
Marakana Android Internals
Android for Java Developers
Android For Java Developers
Android Deep Dive

What's hot (20)

PDF
Android Internals
PDF
An Introduction To Android
PDF
Android Services Black Magic by Aleksandar Gargenta
PDF
Introduction To Android
PDF
The anatomy and philosophy of Android - Google I/O 2009
PPTX
Tacademy techclinic-2012-07-11
PDF
Codendi Datasheet
PDF
Android unveiled (I)
PPTX
Accelerate your PaaS to the Mobile World: Silicon Valley Code Camp 2012
PDF
Systems Resource Management with NetIQ AppManager
PDF
Android : How Do I Code Thee?
PDF
Google Android Naver 1212
PDF
Android Beyond The Phone
PDF
Open Source Licenses and Tools
DOCX
Android architecture
PPT
Nwdi Overview And Features
PDF
Mee go是您的新机遇
PDF
PDF
Introduction to android
PDF
Eclipse vs Netbean vs Railo
Android Internals
An Introduction To Android
Android Services Black Magic by Aleksandar Gargenta
Introduction To Android
The anatomy and philosophy of Android - Google I/O 2009
Tacademy techclinic-2012-07-11
Codendi Datasheet
Android unveiled (I)
Accelerate your PaaS to the Mobile World: Silicon Valley Code Camp 2012
Systems Resource Management with NetIQ AppManager
Android : How Do I Code Thee?
Google Android Naver 1212
Android Beyond The Phone
Open Source Licenses and Tools
Android architecture
Nwdi Overview And Features
Mee go是您的新机遇
Introduction to android
Eclipse vs Netbean vs Railo
Ad

Viewers also liked (20)

PPTX
Comenius italian
PDF
Survey Monkey Survey Results
PDF
Hand Painted Presentation
PPT
Languages test
PPT
Copia De Loba
PDF
Radiant
PPT
Seeing Red Cars
DOCX
Reinforcement unit 7
KEY
Wellspiration 3: Burning Fat
PPT
Shakira
DOCX
Reinforcement 1
DOCX
More practice
PDF
Fot Net Data Seminar Benmimoun, IKA
PPS
Photo of the day
PPTX
#fotocasaResponde: ¿Cómo reclamar la devolución de las cláusulas suelo?
PDF
Workshop fanfulla "Creative Loverz"
PPT
Ghetto Workout
PPT
Lasefiche Products Family Presentation
PDF
Employer branding - valg av arbeidsgiver og effektiv omdømmebygging
DOCX
Unit 2. reinforcement
Comenius italian
Survey Monkey Survey Results
Hand Painted Presentation
Languages test
Copia De Loba
Radiant
Seeing Red Cars
Reinforcement unit 7
Wellspiration 3: Burning Fat
Shakira
Reinforcement 1
More practice
Fot Net Data Seminar Benmimoun, IKA
Photo of the day
#fotocasaResponde: ¿Cómo reclamar la devolución de las cláusulas suelo?
Workshop fanfulla "Creative Loverz"
Ghetto Workout
Lasefiche Products Family Presentation
Employer branding - valg av arbeidsgiver og effektiv omdømmebygging
Unit 2. reinforcement
Ad

Similar to Android: A 9,000-foot Overview (20)

PDF
Google Io Introduction To Android
PDF
Inside Android's Dalvik VM - NEJUG Nov 2011
ODP
Android. behind the scenes_programatica 2012
PPTX
Android and Intel Inside
PDF
Google Android @ AlphaCSP's JavaEdge
PDF
Introduction of android
PDF
Android application development
PDF
Android
PPTX
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...
PPTX
Android platform
PDF
Begining Android Development
PDF
Android fundamentals and tutorial for beginners
PDF
Mobile operating systems - Application Benchmarking
PDF
Droid con 2012 bangalore v2.0
PDF
Mobile Showcase Moblin2
PDF
Improve Android System Component Performance
PDF
MeeGo AppLab Desktop Summit 2011 - Submission and Validation
DOCX
Android..overwiew
PDF
Android Optimization: Myth and Reality
PDF
Introduction to Android by Demian Neidetcher
Google Io Introduction To Android
Inside Android's Dalvik VM - NEJUG Nov 2011
Android. behind the scenes_programatica 2012
Android and Intel Inside
Google Android @ AlphaCSP's JavaEdge
Introduction of android
Android application development
Android
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...
Android platform
Begining Android Development
Android fundamentals and tutorial for beginners
Mobile operating systems - Application Benchmarking
Droid con 2012 bangalore v2.0
Mobile Showcase Moblin2
Improve Android System Component Performance
MeeGo AppLab Desktop Summit 2011 - Submission and Validation
Android..overwiew
Android Optimization: Myth and Reality
Introduction to Android by Demian Neidetcher

More from Marko Gargenta (8)

PDF
LTE: Building New Killer Apps
PDF
Java Champion Wanted
PDF
Marakana Android User Interface
PDF
Marakana android-java developers
PDF
Scrum Overview
ODP
Why Python by Marilyn Davis, Marakana
PDF
Jens Østergaard on Why Scrum Is So Hard
PDF
Jens Østergaard on Why Scrum Is So Hard
LTE: Building New Killer Apps
Java Champion Wanted
Marakana Android User Interface
Marakana android-java developers
Scrum Overview
Why Python by Marilyn Davis, Marakana
Jens Østergaard on Why Scrum Is So Hard
Jens Østergaard on Why Scrum Is So Hard

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PPTX
Configure Apache Mutual Authentication
PPTX
2018-HIPAA-Renewal-Training for executives
PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PDF
Consumable AI The What, Why & How for Small Teams.pdf
PPTX
Benefits of Physical activity for teenagers.pptx
PDF
Convolutional neural network based encoder-decoder for efficient real-time ob...
PPTX
Microsoft Excel 365/2024 Beginner's training
PPT
What is a Computer? Input Devices /output devices
PPT
Geologic Time for studying geology for geologist
PPTX
TEXTILE technology diploma scope and career opportunities
DOCX
search engine optimization ppt fir known well about this
PDF
OpenACC and Open Hackathons Monthly Highlights July 2025
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
Comparative analysis of machine learning models for fake news detection in so...
PDF
The influence of sentiment analysis in enhancing early warning system model f...
PDF
Five Habits of High-Impact Board Members
NewMind AI Weekly Chronicles – August ’25 Week III
Taming the Chaos: How to Turn Unstructured Data into Decisions
Configure Apache Mutual Authentication
2018-HIPAA-Renewal-Training for executives
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
Consumable AI The What, Why & How for Small Teams.pdf
Benefits of Physical activity for teenagers.pptx
Convolutional neural network based encoder-decoder for efficient real-time ob...
Microsoft Excel 365/2024 Beginner's training
What is a Computer? Input Devices /output devices
Geologic Time for studying geology for geologist
TEXTILE technology diploma scope and career opportunities
search engine optimization ppt fir known well about this
OpenACC and Open Hackathons Monthly Highlights July 2025
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
1 - Historical Antecedents, Social Consideration.pdf
Comparative analysis of machine learning models for fake news detection in so...
The influence of sentiment analysis in enhancing early warning system model f...
Five Habits of High-Impact Board Members

Android: A 9,000-foot Overview

  • 1. Android:     A  9,000-­‐foot   Overview   Marko  Gargenta   Marakana  
  • 2. Agenda   •  Android  History   •  Android  and  Java   •  The  Stack   •  Android  SDK   •  Hello  World!   •  Main  Building  Blocks   •  Android  User  Interface   •  Debugging   •  Summary  
  • 3. History   2005   Google  buys  Android,  Inc.   Work  on  Dalvik  starts   2007   OHA  Announced   Early  SDK   2008   G1  Announced   SDK  1.0  Released   2009   G2  Released   Cupcake,  Donut,  Eclair  
  • 4. Android  and  Java   Android Java = Java SE – AWT/Swing + Android API
  • 7. Linux  Kernel   Android runs on Linux. Applications Home Contacts Phone Browser Other Linux provides as well as: Hardware abstraction layer Application Framework Memory management Activity Window Content View Process management Manager Manager Providers System Package Telephony Resource Location Notiication Networking Manager Manager Manager Manager Manager Libraries Users never see Linux sub system Surface Media SQLite Android Runtime Manager Framework Core Libs The adb shell command opens OpenGL FreeType WebKit Delvik Linux shell SGL SSL libc VM Display Camera Linux Kernel Flash Binder Driver Driver Driver Driver Keypad WiFi Audio Power Driver Driver Driver Mgmt
  • 8. NaXve  Libraries   Bionic, a super fast and small Applications GPL-based libc library optimized Home Contacts Phone Browser Other for embedded use Application Framework Surface Manager for composing Activity Window Content View window manager with off-screen Manager Manager Providers System buffering Package Telephony Resource Location Notiication Manager Manager Manager Manager Manager Libraries 2D and 3D graphics hardware Surface Media SQLite Android Runtime support or software simulation Manager Framework Core Libs OpenGL FreeType WebKit Delvik Media codecs offer support for SGL SSL libc VM major audio/video codecs Display Camera Linux Kernel Flash Binder Driver Driver SQLite database Driver Driver Keypad WiFi Audio Power Driver Driver Driver Mgmt WebKit library for fast HTML rendering
  • 9. Dalvik   Dalvik VM is Google’s implementation of Java Optimized for mobile devices Key Dalvik differences: Register-based versus stack-based VM Dalvik runs .dex files More efficient and compact implementation Different set of Java libraries than SDK
  • 10. ApplicaXon  Framework   Activation manager controls the life Applications cycle of the app Home Contacts Phone Browser Other Content providers encapsulate data Application Framework that is shared (e.g. contacts) Activity Window Content View Manager Manager Providers System Package Telephony Resource Location Notiication Resource manager manages Manager Manager Manager Manager Manager everything that is not the code Libraries Surface Media SQLite Android Runtime Manager Framework Location manager figures out the Core Libs location of the phone (GPS, GSM, OpenGL FreeType WebKit Delvik WiFi) SGL SSL libc VM Notification manager for events Display Driver Camera Driver Linux Kernel Flash Driver Binder Driver such as arriving messages, Keypad WiFi Audio Driver Power Mgmt Driver Driver appointments, etc
  • 12. Android  SDK  -­‐  What’s  in  the  box   SDK Tools Docs Platforms Data Skins Images Samples Add-ons Google Maps
  • 13. The  Tools   Tools are important part of the SDK. They are available via Eclipse plugin as well as command line shell.
  • 15. Create  New  Project   Use the Eclipse tool to create a new Android project. Here are some key constructs: Project   Eclipse  construct   Target   minimum  to  run   App  name   whatever   Package   Java  package   AcXvity   Java  class  
  • 16. The  Manifest  File   <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.marakana" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HelloAndroid" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="5" /> </manifest>
  • 17. The  Layout  Resource   <?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>
  • 18. The  Java  File   package com.marakana; import android.app.Activity; import android.os.Bundle; public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
  • 21. AcXviXes   Activity is to an Android Application application what a Main Activity Another Another Activity Activity web page is to a website. Sort of.
  • 22. AcXvity  Lifecycle   Starting Activities have a well- (1) onCreate() (2) onStart() (3) onRestoreInstanceState() defined lifecycle. The (4) onResume() Android OS manages your activity by Running changing its state. (3) onResume() (2) onStart() (1) onSaveInstanceState() (2) onPause() You fill in the blanks. (1) onRestart() onResume() (1) onSaveInstanceState() Stopped (2) onStop() Paused onDestroy() or <process killed> <process killed> Destroyed
  • 23. Intents   Intents are to Android Application Android apps Another Main Activity Intent what hyperlinks Activity are to websites. They can be Intent implicit and Android Application explicit. Sort of like absolute and Main Activity Intent Another Activity relative links.
  • 24. Services   A service is something that can be started and stopped. It doesn’t have UI. It is typically managed by an activity. Music player, for example
  • 25. Service  Lifecycle   Service also has a Starting lifecycle, but it’s (1) onCreate() much simpler than (2) onStart() activity’s. An activity onStart() typically starts and stops a service to do Stopped Running some work for it in the background. onStop() Such as play music, check for new onDestroy() or tweets, etc. <process killed> Destroyed
  • 26. Content  Providers   Content Providers share Content content with applications Provider across application Content URI boundaries. insert() Examples of built-in update() Content Providers are: delete() Contacts, MediaStore, query() Settings and more.
  • 27. Broadcast  Receivers   An Intent-based publish-subscribe mechanism. Great for listening system events such as SMS messages.
  • 29. Two  UI  Approaches   Procedural   Declara?ve   You  write  Java  code   You  write  XML  code   Similar  to  Swing  or  AWT   Similar  to  HTML  of  a  web  page   You can mix and match both styles. Declarative is preferred: easier and more tools
  • 30. XML-­‐Based  User  Interface   Use WYSIWYG tools to build powerful XML-based UI. Easily customize it from Java. Separate concerns.
  • 31. Dips  and  Sps   px  (pixel)   Dots  on  the  screen   in  (inches)   Size  as  measured  by  a  ruler   mm  (millimeters)   Size  as  measured  by  a  ruler   pt  (points)   1/72  of  an  inch   dp  (density-­‐independent  pixel)   Abstract  unit.  On  screen  with  160dpi,   1dp=1px   dip   synonym  for  dp  and  oeen  used  by  Google   sp   Similar  to  dp  but  also  scaled  by  users  font   size  preference  
  • 32. Views  and  Layouts   ViewGroup ViewGroup View View View View ViewGroups contain other Views but are also Views themselves.
  • 33. Common  UI  Components   Android UI includes many common modern UI widgets, such as Buttons, Tabs, Progress Bars, Date and Time Pickers, etc.
  • 34. SelecXon  Components   Some UI widgets may be linked to zillions of pieces of data. Examples are ListView and Spinners (pull-downs).
  • 35. Adapters   Adapter Data Source To make sure they run smoothly, Android uses Adapters to connect them to their data sources. A typical data source is an Array or a Database.
  • 36. Complex  Components   Certain high-level components are simply available just like Views. Adding a Map or a Video to your application is almost like adding a Button or a piece of text.
  • 38. Graphics  &  AnimaXon   Android has rich support for 2D graphics. You can draw & animate from XML. You can use OpenGL for 3D graphics.
  • 39. MulXmedia   AudioPlayer lets you simply specify the audio resource and play it. VideoView is a View that you can drop anywhere in your activity, point to a video file and play it. XML: <VideoView android:id="@+id/video" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center” /> Java: player = (VideoView) findViewById(R.id.video); player.setVideoPath("/sdcard/samplevideo.3gp"); player.start();
  • 40. Google  Maps   Google Maps is an add-on in Android. It is not part of open-source project. However, adding Maps is relatively easy using MapView. XML: <com.google.android.maps.MapView android:id="@+id/map" android:clickable="true" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="0EfLSgdSCWIN…A" />
  • 42. LogCat   The universal, most versatile way to track what is going on in your app. Can be viewed via command line or Eclipse. Logs can be generated both from SDK Java code, or low-level C code via Bionic libc extension.
  • 43. Debugger   Your standard debugger is included in SDK, with all the usual bells & whistles.
  • 44. TraceView   TraceView helps you profile you application and find bottlenecks. It shows execution of various calls through the entire stack. You can zoom into specific calls.
  • 45. Hierarchy  Viewer   Hierarchy Viewer helps you analyze your User Interface. Base UI tends to be the most “expensive” part of your application, this tool is very useful.
  • 46. Summary   Android is based on Java. You write Java code, but technically don’t run it. Java is augmented with XML, mostly for UI purposes. Android Java is mostly based on Java SE with replacement UI libraries. Marko Gargenta, Marakana.com marko@marakana.com +1-415-647-7000 Licensed under Creative Commons License (cc-by-nc-nd). Please Share!