Transcript and-lec01
Android Application
Development
Adam Gerber, PhD, SCJP
[email protected]
Office: Ryerson 154
Office Hours: Mon 8:20pm-10:00pm
TA: Jonathan Nieder
[email protected]
Evaluations
20% homework assignments (4@ 5% each)
20% midterm exam
50% individual final project (take home)
10% class participation
Late homework/final project is penalized 10% every day
late, for three days; after that, you get a zero.
lec 01
The Android Computing Platform and
Architecture
Setting Up Your Development Environment
Tour of Eclipse/ADT
First App: HelloWorld
Understanding Android Resources
The Android Computing Platform
Android
•
Comprehensive open-source platform for
mobile devices
•
Owned by Open Handset Alliance
•
Championed by Google
•
Stated goal: "accelerate innovation in mobile
and offer consumers a richer, less expensive,
and better mobile experience."
Vision for Android
Version
API Level
Nickname
Android 1.0
1
Android
Android 1.1
2
Android
Android 1.5
3
Cupake
Android 1.6
4
Donut
Android 2.0
5
Eclair
Android 2.01
6
Eclair
Android 2.1
7
Eclair
Android 2.2
8
FroYo
Android 2.3
9
Gingerbread
Android 2.3.3
10
Gingerbread
Android 3.x
11,12,13
Honeycomb
Android 4.0.1 – 4.0.2
14
Ice Cream Sandwich
Android 4.0.3 – 4.0.4
15
Ice Cream Sandwich
http://developer.android.com/resources/dashboard/platform-versions.html
Mods (skins)
Open Handset Alliance
The OHA was established on 5 November 2007, led by Google with
34 members including mobile handset makers, application
developers, some mobile carriers and chip makers.
Android, the flagship software of the alliance, is based on an open
source license and competes against mobile platforms from Apple,
Microsoft, Nokia (Symbian), HP (formerly Palm), Research In
Motion, and Samsung Electronics (bada).
Headquarters: South Korea
http://en.wikipedia.org/wiki/Open_Handset_Allianc
e
http://en.wikipedia.org/wiki/Android_(operating_system
)
Setting up your dev
enviroment
Getting/Using the tools
Google-search-> java jdk || java se downloads || JDK version 6 || install to c:\java
|| set the path env variable. C:\path\to\jdk\bin || java -version from command line.
Google-search-> android sdk || install to c:\java\android-sdk || path to
C:\java\android-sdk\platform-tools;C:\java\android-sdk\tools; adb devices to test.
Google-search-> eclipse ide | right-side download eclipse get the SE version ||
portable version so no need to "install" || dnd in root of c
Google-search-> adt eclipse || half way down to red url, and copy it. | within
eclispe help || install new software || paste in there.
within eclipse || little-down arrow || opens And SdK manager 4.0.3
within eclipse || little=phone-icon || pulls up AVDM new
http://www.classes.cs.uchicago.edu/archive/2012/summer/51031-1/androidsrc.zip C:\java\android-sdk\platforms\android-15\sources\android-src.zip
Quick Java Review
Java Primitives (integers)
Type
Signed?
byte
signed
short
int
long
signed
signed
signed
Bits Bytes Lowest
8
16
32
64
1
-27
-128
Highest
27-1
+127
-215
2
-32,768
215-1
32,767
-231
4 -2,147,483,648
231-1
2,147,483,647
-263
263-1
-9,
9,223,372,036,85
8 223,372,036,854
4,775,807
,775,808
How Java Stores positive Integers
-2(bits -1) to 2(bits -1) – 1
•0001 0011
•The above is a binary representation of the
number 19 stored in a byte (8 bits).
•The range of a byte is: -128 to 127.
Java Primitives (others)
Type
Signed?
boolean
n/a
char
unsigned
Unicode
float
signed
exponent
and
mantissa
double
signed
exponent
and
mantissa
Bits Bytes Lowest
1
16
32
64
Highest
1 false
true
2 0
'\u0000'
216-1
'\uffff'
4 ±1.4012984643
2481707e-45
±3.40282346638
528860e+38
with 6 to 7
significant digits
of accuracy.
8 ±4.9406564584
1246544e-324
±1.79769313486
231570e+308
with 14 to 15
significant digits
of accuracy.
Primitives versus Objects
memory
Primitives
Objects
Variables store values and are
allocated memory depending on their
type. How much?...refer to Java
Primitives slide.
References store memory
addresses. The size of the allocation
for the object reference is VM specific,
but is usually the native pointer size;
32bits in 32-bit VM, and 64bits in a 64bit VM.
Garbage collected when out-of-scope.
Garbage collected when out-of-scope.
Passed into methods by value
Passed into methods by reference
(value of the address is passed)
primitive
pass by value
Action: Tell my accountant how
much I intend to spend on a new
car next year. Change in bank
account: no change.
object
pass by reference
Action: Swipe debit card and enter
pin at the Bently dealership.
Change in bank account: -125k.
Class
Objects
Class
Objects
Spot the “class” here
Naming conventions
Naming local variables - suggestions
boolean
bFlag
byte
yAge
char cFirst
short
sRosterSize
int
nStudent; nC
long lPopulation
float
fPrice
double
dDistanceToMoon
Naming local references - suggestions
Person per perDirector
String str strFirstName
Rectangle rec recShape
Bee bee beeDrone
Naming local arrays and collections suggestions
Array of boolean bAnswers
Array of byte
yAges
Array of int nIdentities
Array of Person perStudents
Array of String strCountries
Collection of Bee such as ArrayList<Bee> beeDrones
Collection of Athlete athPlayers
Why use a naming convention?
metadata is immediately discernible just by looking
at the local variable or local reference name. This
makes your code easy to read and debug.
Primitives always have one letter prefix; nNumber
References have three letter prefix; perDirector.
Arrays and collections have s postfix: beeDrones;
strCountries, nLevels.
Avoid ending with s for variables or references that
are NOT collections/arrays; e.g. nRadiux, or
nRadius_
Overridden methods in Android come with their
own set of params.
Eclipse IDE
Shortucts:
New class and browse to superclass Activity
Cntrl-numeric 1 is QuickFix!
Control click to source.
Source || override/implements methods
Extract method
Create getters and setters
Templates || see video
Window || preferences || Java || Editor || Templates
Ctrl-Shift-L
Using the debugger
Perspectives; Java and Debug
Setting breakpoints
Step-over F6, and Step-in F5
Watch expressions
Conditional breakpoints
Resources in Android
Alt-Shift-A to externalize strings
<st + ctrl space
Create many xml resources, but don't name the actual resources the same
Add resources from the Add Resources from the graphical editor and also
manually. #FFFFFF white
getResources(). getStringArray(R.array.whatever)
Building Blocks of an App
•
Activities
•
Intents
•
Services
•
Content Providers
•
Broadcast Recievers
Some Developer Resources
Dev Guide
•
•
http://developer.android.com/guide/topics/fu
ndamentals.html
http://developer.android.com/training/index.
html
Turning in Assignments
Use git