Google Android @ AlphaCSP's JavaEdge
-
Upload
yuvalb -
Category
Technology
-
view
6.620 -
download
11
description
Transcript of Google Android @ AlphaCSP's JavaEdge
Title
Sub Title
Nadav
Wiener
Google Andro
id
Breaking The
Mobile Mo
ld
Decem
ber 18
th 2008
Hello Android
2
Target Audience
• Mobile software developers
• People shopping for a phone in 2009
3
Agenda
• Hello Android
• Architecture Overview, Features and
Components
• Android Software Development
• Live Demo
4
Hello Android
5
• Android is a platform for mobile
computing
• Android is Linux based
• But development is in Java
Hello Android
6
• Why did Google make Android?
• IPhone does not support Java
• JavaME’s CLDC+MIDlets are getting old
• Leaves lots of mobile developers in search of a platform
• Profit – ads, market
• Clean break from J2ME
Hello Android::Timeline
As published by Google
7
Hello Android::Timeline
As published by Google
Hello Android::Timeline
As published by Google
• We’ll have a look at
some of the winners
later on
Hello Android::Timeline
As published by Google
• Only free applications for
now
• Eventually, Google will
take a 30% cut
Hello Android::Timeline
As published by Google
Hello Android::Timeline
As published by Google
Hello Android::Timeline
As published by Google
Hello Android::Devices
14
• HTC G1, Lenovo OPhone (expected),
Kogan Agora
Hello Android::ADC
• The Android Developer Challenge
• 10,000,000$ in prizes
15
Hello Android::ADC
• ADC I concluded:
• 5M$ in prizes
• Over 1,700 submissions
• Announcement regarding
ADC II is expected soon16
Hello Android::ADC Winners & Market
• Wikitude (Philipp Breuce)
• Wikipedia overlaid on camera view
17
Hello Android::ADC Winners & Market
• BreadCrumbz (Amos Yoffe)
• Navigate using maps and pictures (like Myst)
18
Hello Android::ADC Winners & Market
• Amazon MP3 for Android
• Preinstalled on HTC G1 phones
19
Hello Android::ADC Winners & Market
• Compare Everywhere (Jeffrey Sharkey)
• Capture barcodes, search for better deals nearby
20
Agenda
• Hello Android
• Architecture Overview, Features and
Components
• Android Software Development
• Live Demo
21
Architecture Overview
22
Linux Kernel
Device Drivers
Inter Process Comms. Security
Power Management
Native Libraries
Media Framework
SQLiteDatabase
WebKit Browser
Graphics Libraries
Android Runtime Apache Harmony Dalvik VM
Android Application Framework
ActivitiesPackage
ManagementContent ProvidersViews Services
Applications
•Implement and leverage framework concepts•Use framework components and services
Architecture Overview
• Let’s examine some of these boxes,
beginning with Linux:
Linux Kernel
Architecture Overview
• From Linux Android gains:
• A stable common base for Dalvik applications
• Fine grained power management
• Unique user per bundle – sandboxing
• Much more…
24
• Native libraries provide functionality
Native Libraries
Linux Kernel
Architecture Overview
• WebKit
• Same browser engineused in IPhone,Google Chrome,Safari
• Strong performer
• Memory efficient
• Good standards support
26
Architecture Overview
• Location Services & Mapping
• Google Maps
• Street view
• GPS
• Trigger proximityalerts
Architecture Overview
• Graphics
• SGL – 2D scalable graphics
• OpenGL ES
• Surface Manager composes surfaces together
28
Architecture Overview
• Media Framework
• Player and codecs
• SQLite
• Lightweight RDBMS also on IPhone
• ... and Telephony too!
29
Architecture Overview::
Android Runtime
Moving on to the “Java” runtime
environment:
30
Linux Kernel
Native Libraries Android Runtime
Architecture Overview::
Dalvik Virtual Machine
• Java has a stack based VM
• Dalvik is a register based VM
• Better interpreter performance
• No JIT
• Bottom line:
• Lower throughput
• Better startup & responsiveness
31
Architecture Overview::
Dalvik Virtual Machine
32
• You still get to develop in
Java
• Excellent learning curve
• What, no JVM!?
Architecture Overview::Zygote
• Quick Dalvik process startup is
essential for good responsiveness
• During boot, Android creates a fully
bootstrapped Dalvik process
• Sends it to sleep
• Forks it on demand
• Forks are copy-on-write
• Near instantaneous startup!33
Architecture Overview
34
Linux Kernel
Device Drivers
Inter Process Comms. Security
Power Management
Native Libraries
Media Framework
SQLiteDatabase
WebKit Browser
Graphics Libraries
Android Runtime Apache Harmony Dalvik VM
Android Application Framework
ActivitiesPackage
ManagementContent ProvidersViews Services
Applications
•Implement and leverage framework concepts•Use framework components and services
Agenda
• Hello Android
• Architecture Overview, Features and
Components
• Android Software Development
• Live Demo
35
Android Application Framework
• Building Blocks
• Application Model
• UI Perspective
36
Building Blocks
• Four building blocks
• Activities and Intents
• Broadcast Receivers
• Services
• Content Providers
37
Activities and Intents
Activities
Android documentation states:
• “An activity is a single, focused thing
that the user can do.”
38
Activities and Intents
• This how an activity will look like:
39
Activities and Intents
• Well, actually: “An activity is usually a
single screen in your application.”
40
Activities and Intents
• Activities communicate with each other
using Intents
41
? !
new Intent(Intent.ACTION_PICK, new Uri("content://contacts"))
• The Intent is resolved to another
Activity, by matching it against an
Intent Filter.
new Intent(Intent.ACTION_DIAL, new Uri(“tel:555-1234"))
new Intent(Intent.ACTION_VIEW, new Uri(“geo:38.8995,-
77.0364"))
Activities and Intents
• Intents convey
• Data
• Action
•
• and Categories
42
This is how
Intent Filters
match Intents
that are valid
for the Activity
Activities and Intents
• Activities are managed on
a stack
43
• Once you go back they pop!
Activities and Intents
• Activities have a life cycle
44
NewActivity
Stopped Activity
Paused Activity
Running...
Processes with non-running Activities may be killed to free resources
Broadcast Receivers
• Listens for Intents
• Incoming call
• Network availability changes
• Alarms
• Application doesn't have to be running
once a Receiver is registered
• Does not display UI
• May use notifications45
Services
• Services perform long running actions
• i.e. Play music, factor primary numbers
• Services are defined via AIDL
• Yet another “Interface Definition Language”
• Service lifecycle: manual or automatic
• Can be run either in-process or
in another process46
Content Providers
• Android likes to expose content in a
RESTful manner
• All content items have a unique URI
• Goes really well with Activity history
• Content Providers are used for CRUD
operations over arbitrary content
repositories
47
Content Providers
• The interface has a strong relational
feel
• Hard to adapt to POJO backends like DB4O and Perst
• Despite looking relational, the interface encourages static joins
• Data returned should have a uniform shape
48
Application Model
• Android Package (.apk)
• Compiled code & resources
• Manifest
• Must be signed (like jar)
• Task
• “perceived” application
• May span activities across several packages and processes
49
UI Perspective
• Views
• From very simple:
• EditText, CheckBox, Button, Radio
• To more specialized:
• DatePicker, AutoComplete
• ViewGroups (layout)
• Relative, Table, Linear, …
• Web, Video, Map, Gallery...50
UI Perspective
• Sometimes the border between Views
and Activities isn't clear
• MapView
• MapActivity
• Choose MapActivity for a mashup
• Choose MapView for your own Activity
51
Android Software Development
• Let's have a look at a “hello world”
sample provided by the SDK:
• Activity source file
• Layout file
• Android Manifest
52
Android Software Development
53
package com.example.android.helloactivity; //... /** * A minimal "Hello, World!" application. */ public class HelloActivity extends Activity { /** * Called with the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the layout for this activity. You can find it // in res/layout/hello_activity.xml setContentView(R.layout.hello_activity); } }
Android Software Development
54
<EditText
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="18sp"
android:autoText="true"
android:capitalize="sentences"
android:text="hello, world!" />
Android Software Development
55
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.helloactivity">
<application android:label="Hello, Activity!">
<activity android:name="HelloActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
Android Software Development
• After build and deployment to the
emulator:
56
UI Perspective
• Android UI lends itself to a clear flow
between simple screens
57
UI Perspective
• Rich clients, on the other hand…
58
… Don’t translate that well.
Porting Scenarios
• Opera
• Opera Mini uses
• Jetty has been ported
• local web applications
• Apache Felix has been ported
• OSGi bundles
• Alef Arendsen’s session covers OSGi in Spring
59
Tool Support
• Android SDK and Eclipse plugin:
http://code.google.com/android/
• IntelliJ IDEA plugin is available here:
http://code.google.com/p/idea-android/
• SDK can create IDEA project files
• NetBeans plugin available here:
http://kenai.com/projects/nbandroid/
• DroidDraw is an Android UI builder:
http://www.droiddraw.org/ 60
References
• Android homepage:
http://code.google.com/android/index.html
• Open Handset Alliance:
http://www.openhandsetalliance.com/
• Android Market:
http://www.android.com/market/
• Android documentation: http://code.google.com/android/documentation.html
• Android open source project:
http://source.android.com/
61
Apps for Android:http://code.google.com/p/apps-for-android
62
DemoDemo