andevcon android for java
TRANSCRIPT
-
8/10/2019 Andevcon Android for Java
1/64
2011
!"#$% '"#()*+"
,"#"$"*"-.%,
!"#$%
/%# 0"1" 2)1)3%4)#5
-
8/10/2019 Andevcon Android for Java
2/64
2011
67%8+ !"#$% '"#()*+"
Developer ofAndroid Bootcamp for Marakana.
Instructor for 1,000s of developers on Android at
Qualcomm, Cisco, Motorola, Texas Instruments, Sony-Ericsson, Sharp, NetGear, DoD and other great orgs.
Author of Learning Android published by OReilly.
Speaker at OSCON, ACM, IEEE, SDC, AnDevCon.
Founder of SFAndroid.org
-
8/10/2019 Andevcon Android for Java
3/64
2011
6()*9"
:;)
-
8/10/2019 Andevcon Android for Java
4/64
2011
!()*+,) -.!/0
-
8/10/2019 Andevcon Android for Java
5/64
2011
:;)
-
8/10/2019 Andevcon Android for Java
6/64
2011
H@*8I J)#*)3
Android runs on Linux.
Linux provides:
Hardware abstraction layerMemory management
Process managementNetworking
Users never see Linux sub system
The adb shell command opens
Linux shell
Linux Kernel
Libraries
Application Framework
Applications
Home Contacts Phone Browser Other
ActivityManager
WindowManager
ContentProviders
ViewSystem
PackageManager
TelephonyManager
ResourceManager
LocationManager
NotiicationManager
SurfaceManager
OpenGL
SGL
Media
Framework
FreeType
SSL
SQLite
WebKit
libc
Android Runtime
Core Libs
DelvikVM
DisplayDriver
KeypadDriver
CameraDriver
WiFiDriver
FlashDriver
AudioDriver
BinderDriver
PowerMgmt
-
8/10/2019 Andevcon Android for Java
7/64
2011
K"E1) H@7#"#@)5
Pieces borrowed from other
open source projects:
Bionic, a super fast and small
license-friendly libc library optimized
for Android
WebKit library for fast HTMLrendering
OpenGL for graphics
Media codecs offer support formajor audio/video codecs
SQLite database
Much more
Linux Kernel
Libraries
Application Framework
Applications
Home Contacts Phone Browser Other
ActivityManager
WindowManager
ContentProviders
ViewSystem
PackageManager
TelephonyManager
ResourceManager
LocationManager
NotiicationManager
SurfaceManager
OpenGL
SGL
MediaFramework
FreeType
SSL
SQLite
WebKit
libc
Android Runtime
Core Libs
DelvikVM
DisplayDriver
KeypadDriver
CameraDriver
WiFiDriver
FlashDriver
AudioDriver
BinderDriver
PowerMgmt
-
8/10/2019 Andevcon Android for Java
8/64
2011
2"31@$
Dalvik VM is Android implementation of
Java VM
Dalvik is optimized for mobile devices: Battery consumption
CPU capabilities
Key Dalvik differences: Register-based versus stack-based VM Dalvik runs .dex files
More efficient and compact implementation
Different set of Java libraries than JDK
-
8/10/2019 Andevcon Android for Java
9/64
2011
6443@."E%* G#",)L%#$
The rich set of system services
wrapped in an intuitive Java API.
This ecosystem that developerscan easily tap into is what makes
writing apps for Android easy.
Location, web, telephony, WiFi,
Bluetooth, notifications, media,camera, just to name a few.
Linux Kernel
Libraries
Application Framework
Applications
Home Contacts Phone Browser Other
ActivityManager
WindowManager
ContentProviders
ViewSystem
PackageManager
TelephonyManager
ResourceManager
LocationManager
NotiicationManager
SurfaceManager
OpenGL
SGL
MediaFramework
FreeType
SSL
SQLite
WebKit
libc
Android Runtime
Core Libs
DelvikVM
DisplayDriver
KeypadDriver
CameraDriver
WiFiDriver
FlashDriver
AudioDriver
BinderDriver
PowerMgmt
-
8/10/2019 Andevcon Android for Java
10/64
2011
6443@."E%*5
Dalvik Executable + Resources = APK
Must be signed (but debug key is okayfor development)
Many markets with different policies
-
8/10/2019 Andevcon Android for Java
11/64
2011
6*9#%@9 "*9 0"1"
Android Java
=
Java SE
AWT/Swing+
Android API
-
8/10/2019 Andevcon Android for Java
12/64
2011
1233+ 4+*3)5
-
8/10/2019 Andevcon Android for Java
13/64
2011
6*9#%@9 ;"+N5 C* :;) A%I
SDK
Tools
DocsPlatforms
Data
SkinsImages
SamplesAdd-ons
Google
-
8/10/2019 Andevcon Android for Java
14/64
2011
O#)"+) K)L P#%Q).+
Use the Eclipse tool to create a new
Android project.
Here are some key constructs:
P#%Q).+ R.3@45) .%*5+#8.+
:"#()+ ,@*@,8, +% #8*
644 *",) L;"+)1)#
P".$"() 0"1" 4".$"()
6.E1@+F 0"1" .3"55
-
8/10/2019 Andevcon Android for Java
15/64
2011
6*"+%,F%/ 6* 644
Java Code+
XML and Other
Resources
+
Manifest File
=
Android App
-
8/10/2019 Andevcon Android for Java
16/64
2011
:;) !"*@/)5+ G@3)
-
8/10/2019 Andevcon Android for Java
17/64
2011
:;) H"F%8+ S)5%8#.)
-
8/10/2019 Andevcon Android for Java
18/64
2011
:;) 0"1" G@3)
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);}
}
-
8/10/2019 Andevcon Android for Java
19/64
2011
S8**@*( %* R,83"+%#
Emulator, not a simulator
-
8/10/2019 Andevcon Android for Java
20/64
2011
6!,( 78,3),(9 73+/0-
-
8/10/2019 Andevcon Android for Java
21/64
2011
T",7" 2),%
Lets see a real-world medium
complexity Android app in action:
Yamba: Yet Another Micro Blogging App
-
8/10/2019 Andevcon Android for Java
22/64
2011
6.E1@E)5
Android Application
Main Activity Another
Activity
Another
Activity
An Activity
represents a screen
or a window. Sort of.
-
8/10/2019 Andevcon Android for Java
23/64
2011
6.E1@+F H@/).F.3)
Activities have a well-defined lifecycle. The
Android OS managesyour activity by
changing its state.
You fill in the blanks.
-
8/10/2019 Andevcon Android for Java
24/64
2011
C*+)*+5
Intents represent
events or actions.
They are to
Android apps whathyperlinks are to
websites. Sort of.
Intents can beimplicit or explicit.
-
8/10/2019 Andevcon Android for Java
25/64
2011
-
8/10/2019 Andevcon Android for Java
26/64
2011
-
8/10/2019 Andevcon Android for Java
27/64
2011
S),%+)
-
8/10/2019 Andevcon Android for Java
28/64
2011
O%*+)*+ P#%1@9)#5
Content Providers share
content with applications
across application
boundaries.Examples of built-in
Content Providers are:
Contacts, MediaStore,
Settings and more.
-
8/10/2019 Andevcon Android for Java
29/64
2011
O%*+)*+ P#%1@9)# RI",43)
-
8/10/2019 Andevcon Android for Java
30/64
2011
A#%"9."5+ S).)@1)#5
An Intent-based publish-subscribe mechanism. Great for listening
system events such as SMS messages.
-
8/10/2019 Andevcon Android for Java
31/64
2011
6#.;@+).+8#) %/ 6* 644
An Android application is a collection of many different
building blocks. They are loosely coupled and can bereconfigured by the developer easily, or at least thats
the intention.
Lets look at 7 stages of Yamba next.
-
8/10/2019 Andevcon Android for Java
32/64
2011
T",7" P"#+ U
-
8/10/2019 Andevcon Android for Java
33/64
2011
T",7" P"#+ V
-
8/10/2019 Andevcon Android for Java
34/64
2011
T",7" P"#+ W
-
8/10/2019 Andevcon Android for Java
35/64
2011
T",7" P"#+ X
-
8/10/2019 Andevcon Android for Java
36/64
2011
T",7" P"#+ Y
-
8/10/2019 Andevcon Android for Java
37/64
2011
T",7" P"#+ Z
-
8/10/2019 Andevcon Android for Java
38/64
2011
T",7" P"#+ [
-
8/10/2019 Andevcon Android for Java
39/64
2011
!()*+,) 8-2* ,(.2*:!/2
-
8/10/2019 Andevcon Android for Java
40/64
2011
:L% BC 644#%".;)5
;$%$?@ )=
-
8/10/2019 Andevcon Android for Java
41/64
2011
\!HMA"5)9 B5)# C*+)#/".)
Use WYSIWYG tools to build powerful XML-based UI.
Easily customize it from Java. Separate concerns.
-
8/10/2019 Andevcon Android for Java
42/64
2011
]@)L5 "*9 H"F%8+5
Layouts contain widgets and other
layouts forming a composite pattern.
-
8/10/2019 Andevcon Android for Java
43/64
2011
H@*)"# H"F%8+
One of the most commonly
used layouts. It lays its
children next to each other,
either horizontally or vertically.
-
8/10/2019 Andevcon Android for Java
44/64
2011
S)3"E1) H"F%8+
Children of relative layout are
placed in relationship to each
other. This layout is efficient.
-
8/10/2019 Andevcon Android for Java
45/64
2011
:"73) H"F%8+
Table layout puts its children
into table rows and columns.
It is similar to an HTML table.
-
8/10/2019 Andevcon Android for Java
46/64
2011
G#",) H"F%8+
Frame layout places its
children on top of each other,
like a deck of cards. It is
useful for widgets such astabs or as a placeholder for
views added
programmatically.
-
8/10/2019 Andevcon Android for Java
47/64
2011
O%,,%* BC O%,4%*)*+5
Android UI includes many
common modern UI
widgets, such as Buttons,
Tabs, Progress Bars, Date
and Time Pickers, etc.
-
8/10/2019 Andevcon Android for Java
48/64
2011
-
8/10/2019 Andevcon Android for Java
49/64
2011
69"4+)#5
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.
Data
Source
Adapter
-
8/10/2019 Andevcon Android for Java
50/64
2011
O%,43)I O%,4%*)*+5
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.
-
8/10/2019 Andevcon Android for Java
51/64
2011
!)*85 "*9 2@"3%(5
-
8/10/2019 Andevcon Android for Java
52/64
2011
'#"4;@.5 ^ 6*@,"E%*
Android has rich support for 2D graphics.
You can draw & animate from XML.
You can use OpenGL for 3D graphics.
-
8/10/2019 Andevcon Android for Java
53/64
2011
!83E,)9@"
AudioPlayer lets you simply specify
the audio resource and play it.
VideoView is a View that you candrop anywhere in your activity, point
to a video file and play it.
XML:
-
8/10/2019 Andevcon Android for Java
54/64
-
8/10/2019 Andevcon Android for Java
55/64
2011
G@3)
-
8/10/2019 Andevcon Android for Java
56/64
2011
O3%89 +% 2)1@.) P85;
Big deal for many pull-based apps. Will make devices use less battery.
-
8/10/2019 Andevcon Android for Java
57/64
2011
P#)/)#)*.)5
Your app can support complex
preferences quite easily.
You define your preferences in anXML file and the corresponding UI and
data storage is done for free.
-
8/10/2019 Andevcon Android for Java
58/64
2011
-
8/10/2019 Andevcon Android for Java
59/64
2011
)27899,(9
!()*+,) !;;-
-
8/10/2019 Andevcon Android for Java
60/64
2011
H%(O"+
The universal, most
versatile way to trackwhat is going on in
your app.
Can be viewed via
command line orEclipse.
Logs can be
generated both from
SDK Java code, or
low-level C code viaBionic libc extension.
-
8/10/2019 Andevcon Android for Java
61/64
2011
2)78(()#
Your standard debugger is included in SDK, with all the usual bells & whistles.
-
8/10/2019 Andevcon Android for Java
62/64
2011
:#".)]@)L
TraceView helps you profile you application and find bottlenecks. It shows
execution of various calls through the entire stack. You can zoom into specificcalls.
-
8/10/2019 Andevcon Android for Java
63/64
2011
=@)#"#.;F ]@)L)#
Hierarchy Viewer helps
you analyze your UserInterface.
Base UI tends to be the
most expensive part of
your application, this toolis very useful.
-
8/10/2019 Andevcon Android for Java
64/64