Ch 1: Android Overview Flashcards
Android
Background
- Launched in 2007
- Serves wide range of hardware, not just mobile phones
- Features an open software stack
- Rich set of API Libraries
- System Applications, Bundled Applications and third party Applications are all written using the same APIs
Android API Libraries:
Common Features supported
- Hardware Access, including sensors
- Video Recording
- NFC
- Bluetooth
- Maps
- Location Based Services
- Inter-application communication
- Background Service support
- Relational Databases
- 2D/3D Graphics
Motivation for Android:
Rough History of Phone Apps
- Early native phone applications were generally coded in C or C++
- Required thorough understanding of hardware on individual devices or device families
- Caused app development to lag behind hardware development
- Eventually, Java-Hosted MIDlets were introduced
- Added abstraction to make development easier
- Still restricted and unbalanced access to hardware
- Android OS designed as an Open Development Platform
- Equal and open dev access
Motivation for Android:
MIDlets
Java Hosted MIDlets
- Executed on a Java Virtual Machine (JVM)
- Abstracted underlying hardware
- Allowed developers to create applications that ran on many devices that supported the Java run time
- Came at the price of heavily restricted access to the device hardware
- Hardware access was also uneven, with native applications having more access than third party developers
Three Major Components
of the
Android Ecosystem
- Operating System
- Free and Open Source OS for embedded devices
- Development Platform
- Open Source
- Devices
- Devices that run the Android OS and the applications created for it
Android Ecosystem:
Specific Parts
- Compatibility Definition Document
- Compatibility Test Suite
- Linux operating system Kernel
- Android Run Time (ART)
- Core pre-installed applications
- Application Framework
- User Interface Framework
- Open Source Libraries
- Software Development Kit(SDK)
Android Ecosystem:
Compatibility Definition Document (CDD)
and
Compatibility Test Suite(CTS)
Together, the CDD and CTS describe the capabilities required for a device to support the
Android Software Stack
Android Ecosystem:
Linux Kernel
A Linux operating system kernel provides a low-level interface with:
- hardware
- memory management
- process control
All optimized for mobile and embedded devices
Android Ecosystem:
Open Source Libraries
Open source libraries are available to aid in application development.
Includes:
- SQLite
- WebKit
- OpenGL
- a media manager
Android Ecosystem:
Android Run Time (ART)
Used to execute and host Android applications and the core libraries that provide Android-specific functionality.
Designed to be small and efficient for use on embedded devices.
Android Ecosystem:
Application Framework
Agnostically( not knowing about the device) exposes system services to the application layer.
These services include:
- Window Manager
- Location Manager
- databases
- telephony
- sensors
Android Ecosystem:
User Interface Framework
A framework that is used to host and launch applications. Essentially defines how applications are handled by the system and presented to users.
Android Ecosystem:
Preinstalled Applications
Android devices come with a suite of applications that are expected by users. On a phone:
- Phone dialer
- SMS management app
- Web Browser
- Email client
- Calendar
- Contacts List
- Music Player
- Picture gallery
- Camera and video recording app
- Calculator
- Home screen
- Alarm Clock
Many Android devices also ship with proprietary Google applications
Android SDK:
Major Features supported by
SDK libraries
- Telephony and Internet:
- GSM, EDGE, 3G, 4G, LTE, Wi-Fi
- APIs for location based services
- Both GPS and network-based
- Map integration
- Full multimedia hardware control
- Playback and recording with microphone and camera
- Media Libraries
- Sensor APIs
- Accelerometer
- Compass
- Barometer
- Fingerprint sensors
- Libraries for Wifi, Bluetooth, NFC hardware
- Shared data stores and APIs for contacts, calendar and multi-media
- Background services
- Advanced Notification System
- Integrated web browser
- Graphics support
- Localization through a dynamic resource framework
Benefits of developing for Android
- Access to largest ecosystem of smart phone users
- Diverse range of devices and form factors
- Simple and powerful SDK
- No licensing fees
- Excellent documentation
- Low Barrier to entry
- No required certification
- Google Play store provides many monetization options
- No approval process for app distribution
- Developers have total control over their brands