2. MOBILE OS
Symbian
iPhone
RIM's BlackBerry
Window mobile
Linux
Palm webOS
Android
….
3. What is Android?
• A software platform and operating system for
mobile devices
• Based on the Linux kernel
• Developed by Google and later the Open Handset
Alliance (OHA)
• Allows writing managed code in the Java
language
• Possibility to write applications in other
languages and compiling it to ARM native code
(support of Google? No)
• Unveiling of the Android platform was announced
on 5 November 2007 with the founding of OHA
5. Android
An Open Handset Alliance Project
• http://code.google.com
/android
• Write apps to run on
mobile phones
• Will be released as open
source
• Can download the SDK
today!
6. Android Features
• Application Framework
• Dalvik virtual machine
• Integrated (webkit) browser
• 2D and 3D graphics APIs with HW
• SQLite
• Video and audio codecs
• Bluetooth, EDGE, 3G, and WiFi
• Camera, GPS, compass, and accelerometer
8. Linux Kernel
Relying on Linux Kernel 2.6 for core system services
Memory and Process Management
Network Stack
Driver Model
Security
Providing an abstraction layer between the H/W an
the rest of the S/W stack
9. Runtime
• Core Libraries
Providing most of the functionality available in the
core libraries of the Java language
APIs
Data Structures Network Access
Utilities Graphics
File Access Etc
10. Runtime (Cont)
• Dalvik Virtual Machine
Providing environment on which every
Android application runs
Each Android application runs in its own
process, with its own instance of the
Dalvik VM.
Dalvik has been written so that a device
can run multiple VMs efficiently.
Register-based virtual machine
11. Libraries
• Including a set of C/C++ libraries used by
components of the Android system
• Exposed to developers through the Android
application framework
13. App Framework
• Enabling and simplifying the reuse of components
Developers have full access to the same
framework APIs used by the core applications.
Users are allowed to replace components.
14. App Framework (Cont)
• Features
Feature Role
View Used to build an application, including lists, grids, text
System boxes, buttons, and embedded web browser
Content Enabling applications to access data from other
Provider applications or to share their own data
Resource Providing access to non-code resources (localized string
Manager , graphics, and layout files)
Notification Enabling all applications to display customer alerts in the
Manager status bar
Activity Managing the lifecycle of applications and providing
Manager a common navigation backstack
15. Application
• Android provides a set of core applications:
Email Client Browser
SMS Program Contacts
Calendar Etc
Maps
• All applications are written using the Java language.
16. Challenges
• CPU typically runs 500-600 Mhz
• RAM available to an App may only be a few
megabytes
• Disk (flash) access is very slow
• Lifecycle - apps must pause/quit often, and restore
to give the illusion that they are always running
• UI design
o typical screen may be HVGA (320x480)
o may be in portrait or landscape
o very high DPI - small text may not be readable
o touch resolution is very low (~25 pixel)
• Network access may be slow and (very) intermittent
17. Opportunities
• 100s of millions of mobile phone users
• Very high growth, esp. in Asia
• "Wild wild west" of application development
o think 1985 on the desktop (if you were born by
then)
o no dominant 3rd party developers.... Yet
o what will the killer app categories be?
o what does it mean to have any app + the internet
in your pocket?
• You can develop for it today!
18. Possibilities
Augmented Campus Reality Web scraping
• camera + maps + • news filters
compass = heads up info • sport scores
• dook news eliminators
Games
• multi-player (bluetooth, Distributed computing?
wifi, cell) • 10,000 phones all
• location-based donating their idle time
(scavenger hunt) • tiny terminal (phone) +
fast cpu/network (server)
Custom overlays for maps
• weather, traffic, friends Shared whiteboard
19. Project Suggestions
• Web Scrapers [movies, weather, sports, <topic> news]
o Find multiple web sources
o Scrape them for the relevant information
o Present in a custom UI on the phone
• Asynchronous games [chess, poker, risk]
o Develop an API for all games to communicate through
1.Establish connections by phone number
2.Send and receive game data
3.Ability to reopen connections
• Planner/To-do list with location data
o Decide route to next class, meeting, etc
o Find a order/route for non time-critical tasks
o Connect to campus directory to find teachers/classmates