A Developer'S Introduction To Google Android: Dr. Frank Mccown Harding University Spring 2010
A Developer'S Introduction To Google Android: Dr. Frank Mccown Harding University Spring 2010
Google Android
Dr. Frank McCown
Harding University
Spring 2010
http://findmearobot.com/Pages/Required%20robots/Images/Do http://doctorbeatnik.files.wordpress.com/2009/10/blade_runner2.jpg
%20androids%20dream%20of%20electric%20sheep.jpg
Brief History
• 2005
– Google acquires startup Android Inc. to start Android platform
– Work on Dalvik VM begins
• 2007
– Open Handset Alliance announced
– Early look at SDK
• 2008
– Google sponsors 1st Android Developer Challenge
– T-Mobile G1 announced
– SDK 1.0 released
– Android released open source (Apache License)
– Android Dev Phone 1 released
http://www.xkcd.com/662/
Key Differences: Android vs. iPhone
iPhone Android
• OS is proprietary • OS is open source
• OS runs on iPhone or iPod • OS can be licensed for any
Touches only mobile device
• Apps written in Objective-C • Apps written in Java
• Apple must approve all apps • No approval process for
Application Store apps Android Market
• Some apps are more • All apps considered equal
important than others (choose your browser)
(Safari is your browser)
What is Google Android?
• A software stack for mobile devices that includes
– An operating system
– Middleware
– Key Applications
• Uses Linux to provide core system services
– Security
– Memory management
– Process management
– Power management
– Hardware drivers
http://developer.android.com/guide/basics/what-is-android.html
Android Runtime: Dalvik VM
• Subset of Java developed by Google
• Optimized for mobile devices (better memory
management, battery utilization, etc.)
• Dalvik runs .dex files that are compiled from
.class files
• Introduces some new libraries
• Does not support some Java libraries like AWT
Applications Are Boxed
• By default, each app is run in its own Linux process
– Process started when app’s code needs to be executed
– Threads can be started to handle time-consuming
operations
• Each process has its own Dalvik VM
• By default, each app is assigned unique Linux ID
– Permissions are set so app’s files are only visible to that
app
Android Emulator
Emulator Hardware
• An ARMv5 CPU and the corresponding memory-
management unit (MMU)
• A 16-bit LCD display
• One or more keyboards (a Qwerty-based keyboard
and associated Dpad/Phone buttons)
• A sound chip with output and input capabilities
• Flash memory partitions (emulated through disk
image files on the development machine)
• A GSM modem, including a simulated SIM Card
http://developer.android.com/guide/developing/tools/emulator.html
Emulator Limitations
• No support for placing or receiving actual phone calls. You can
simulate phone calls (placed and received) through the
emulator console, however.
• No support for USB connections
• No support for camera/video capture (input)
• No support for device-attached headphones
• No support for determining connected state
• No support for determining battery charge level and AC
charging state
• No support for determining SD card insert/eject
• No support for Bluetooth
http://developer.android.com/guide/developing/tools/emulator.html
Setup Development Environment
• Install JDK 5 or 6
• Install Eclipse IDE for Java EE Developers (version
3.5 - Galileo)
• Download and unpack the Android SDK
• Install Android Development Tools (ADT) plugin
for Eclipse
• Detailed install instructions available on Android
site
http://developer.android.com/sdk/installing.html
Producing an Android App
javac
Java code Byte code
dx
.java .class Dalvik exe
classes.dex aapt
<str>
Resources
Hello Android Tutorial
http://developer.android.com/resources/tutorials/hello-world.html
Four Application Components
1. Activities
– Presents a visual UI for a single endeavor
– Examples: list of photos, buttons to start/stop a song
2. Services
– Performs background work (no UI)
– Examples: play background music, retrieve data over a network
3. Broadcast Receivers
– Receives and reacts to broadcast announcements (no UI)
– Broadcast examples: battery is low, pic is taken, lang pref changed
4. Content Providers
– Provides app data to other applications (no UI)
– Examples: share contact info from SQLite, provide image from the
file system
Activating Components
• Content providers are activated by a
ContentResolver
• Activities, services, & broadcast receivers are
activated by intents
• Intents are asynchronous messages
• Example: A Service starts an Activity to pick a
photo by using an intent. The photo is
returned to the Service also using an intent.
Shutting Down Components
• Content providers are only active when
responding to ContentResolvers
• Broadcast receivers are only active when
responding to broadcast messages
• Activities can stop themselves with finish()
or stop other activities it started with
finishActivity()
• Services can stop themselves with stopSelf()
or Context.stopService()
AndroidManifest.xml
• Bundled into Android package (.apk file)
• Declares all the app’s components
• Names libraries app needs to be linked against
• Identifies permissions the app expects to be
granted
Data Storage
• App’s data is private
• Data can be shared using content providers
• Four ways to store data:
1. Preferences: Lightweight mechanism to store and
retrieve key-value pairs of primitive data types
2. Files: Store on mobile device or on a removable
storage medium
3. Databases: SQLite
4. Network: Store/retrieve data stored elsewhere
Various Layouts
http://developer.android.com/resources/tutorials/views/index.html
Various Widgets
http://developer.android.com/resources/tutorials/views/index.html
SDK Samples
Activity Lifecycle
http://developer.android.com/reference/android/app/Activity.html
References
• Android Introduction by Marko Gargenta,
http://www.lecturemaker.com/2009/10/andro
id-software-platform/
• Android Dev Guide
http://developer.android.com/guide/topics/fu
ndamentals.html
• Pro Android by Hashimi & Komatineni (2009)
Questions?
http://www.pocket-lint.com/news/30712/android-powered-microwave-cooking-google