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
AndroidAn 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!
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
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
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
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
Libraries• Including a set of C/C++ libraries used by components of the Android system• Exposed to developers through the Android application framework
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.
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
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.
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
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!
PossibilitiesAugmented Campus Reality Web scraping • camera + maps + • news filters compass = heads up info • sport scores • dook news eliminatorsGames • 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
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