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
Java EE
Java Source
Java SE Code
Java
Java ME Compiler
CDC
Java ME Java Byte
CLDC Code
Dex
Compiler
Dalvik Byte
Code
5. Android
Versus
Java
ME
Just one type of device – no CDC/CLDC
Easier to understand – no MIDlets, Xlets, AWT
Responsive – Dalvik vs. one–size-fits-all JVM
Java (in)compatibility
Adoption
8. 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
9. NaSve
Libraries
Native C libraries provide many of Applications
key Android services, such as: Home Contacts Phone Browser Other
Surface Manager, for composing Application Framework
window manager with off-screen Activity Window Content View
buffering Manager Manager Providers System
Package Telephony Resource Location Notiication
Manager Manager Manager Manager Manager
2D and 3D graphics hardware
Libraries
support or software simulation Surface Media
SQLite Android Runtime
Manager Framework
Core Libs
Media codecs offer support for OpenGL FreeType WebKit
Delvik
major audio/video codecs SGL SSL libc
VM
SQLite database Display Camera Linux Kernel Flash Binder
Driver Driver Driver Driver
Keypad WiFi Audio Power
WebKit library for fast HTML Driver Driver Driver Mgmt
rendering
10. 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
11. ApplicaSon
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
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
AcSvity
Java
class
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. AcSviSes
Activity is to an Android Application
application what a Main Activity
Another Another
Activity Activity
web page is to a
website. Sort of.
22. AcSvity
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.
28. 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
29. XML-‐Based
User
Interface
Use WYSIWYG tools to build powerful XML-based UI.
Easily customize it from Java. Separate concerns.
30. 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
oden
used
by
Google
sp
Similar
to
dp
but
also
scaled
by
users
font
size
preference
31. Views
and
Layouts
ViewGroup
ViewGroup View
View View View
ViewGroups contain other Views but
are also Views themselves.
32. Common
UI
Components
Android UI includes many
common modern UI
widgets, such as Buttons,
Tabs, Progress Bars, Date
and Time Pickers, etc.
33. SelecSon
Components
Some UI widgets may
be linked to zillions of
pieces of data.
Examples are ListView
and Spinners
(pull-downs).
34. 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.
35. 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.
36. Building
UI
for
Performance
A handy Hierarchy Viewer tool helps with optimizing the UI for performance
40. File
System
The file system has three main mount points. One
for system, one for the apps, and one for whatever.
Each app has its own sandbox easily accessible to
it. No one else can access its data. The sandbox is
in /data/data/com.marakana/
SDCard is expected to always be there. It’s a good
place for large files, such as movies and music.
Everyone can access it.
41. Preferences
Your app can support complex
preferences quite easily.
You define your preferences in an
XML file and the corresponding UI and
data storage is done for free.
42. NoSficaSons
Notifications are useful for
applications to notify user of things
going on in the background.
Notifications are implemented via
Notification Manager.
43. Security
Each Android application Android Application
runs inside its own Linux
process. Linux Process
Additionally, each application
has its own sandbox file File
system with its own set of Prefs
DB System
preferences and its own
database.
Other applications cannot
access any of its data,
unless it is explicitly shared.
44. SQLite
Database
Android ships with SQLite3
SQLite is
Zero configuration
Serverless
Single database file
Cross-Platform
Compact
Public Domain
Database engine.
May you do good and not evil
May you find forgiveness for yourself and forgive others
May you share freely, never taking more than you give.
45. MulSmedia
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();
46. Sensors
Android supports many built-in
sensors. You simply register with
Sensor Manager to get notifications
when sensor data changes.
Sensors are erratic and data comes
in uneven intervals.
Emulator doesn’t have good support
for sensors.
47. 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"
/>
49. Camera
Android SDK supports access to
built-in Camera and its preview.
You can access real-time frames,
or get a callback when shutter is
open. The photo data is passed
back in either raw or jpeg format.
50. WiFi
WiFi API allows for managing your
connection, scanning for active WiFi
points and find out details about each.
51. Telephony
With Telephony API, you can:
Make phone calls
Monitor phone state and activity
Access phone properties and status
Monitor data connectivity
Control the phone
It is a simple yet powerful API
52. Summary
Android is open
Android is simple
Android is complete
Android has apps
Android uses Java
Geeks love Android
OEMs love Android
Operators like Android
Android UI is not as sexy
Android doesn’t have as many apps
Android doesn’t have THE phone
Yet.