Introduction
Hello everyone again. Today I am going to write about the overview of Android Operating System, During the Discussion, I am going to cover few points given below :
- Introduction of Android.
- History of Android OS.
- Version of Android OS.
- Features of Android.
- Comparison with other mobile platform.
- High level Architecture of Android SDK.
- Life cycle of Android Activity.
Introduction of Android
Android is a mobile operating system based on Linux kernel. This operating system is designed for touch based smart phone devices and tablets. Earlier, it has been designed for touch base inputs, games, cameras and so on.
Android devices are the best selling items as of now. Android Source code is released by the Google under it Open Source licenses. So Many companies used this OS for their devices, which make them lower in cost and higher in technologies and make them much popular in smart phone market rather than IOS and Windows. "Android is the first Hardware independent mobile operation system".
History of Android
Android Inc, was founded by Andy Rubin, Rich Miner, Nick Sears and Chris White in the month of October 2003 in Palo Alto , California. Later on Google Acquired Android Inc in the month of August 2007. After the Acquisition of Google Inc, Andy, Miner and White and the few of resources are stayed in the company.
First Android based smart phone launched by HTC HTC Dream in Month of October 2008. Later on Google launches it nexus series and Samsung launches it Galaxy series with different versions of Android OS. Now a day’s Millions of apps are available for Android user in a Google play store.
In Terms of development Android SDK is much more flexible and easy to deploy on the real time devices. So that developer can easily test their app during the development life cycle in real time scenario.
Version of Android
Different versions of android releases since April 2009 have been given below.
- Android alpha (1.0)
- Android beta (1.1)
- Cupcake (1.5)
- Doughnut (1.6)
- Eclair (2.0–2.1)
- Froyo (2.2–2.2.3)
- Gingerbread (2.3–2.3.7)
- Honeycomb (3.0–3.2.6)
- Ice Cream Sandwich (4.0–4.0.4)
- Jelly Bean (4.1–4.3.1)
- KitKat (4.4–4.4.4)
- L Release (developer preview)
Features of Android
Features list of android are given below:
- Messaging: SMS,MMS,Text Message,C2DM, GCM,Email, Push Email, IM.
- Web Browser: Web Browser Support (Inbuilt Browser is chrome) Support for HTML 5 too.
- Voice Based: Support for Voice Action, That can help you to make a search using a voice command in google, search any app, search contacts from contacts list, call through voice command, text message and sent sms through voice command and so on.
- Multi-touch: Native support for Multitouch.
- MultiTasking: Multitasking of application, like playing a game with listening a song is kind of multitasking.
- Screen Capture: We can take screen shot of our device screen.
- Video Calling: Good support of video calling Like Skype and other app those supports it.
- Multi-Language Support: Android supports a multiple language.
- Connectivity: It does supports multiple connectivity technology like WIFI, GSM/EDGE, Bluetooth, LTE, CDMA, EV-DO and so on.. It's also support Tethering (allow device to work as a wifi hotspot).
- Media Support: MP3, WAV, eAAC+, MP4, H.264, H.263, JPEG, PNG, GIF, BMP and so on.
- External Storage: Support for micro sd card which are formatted by FAT32, Ext3 and Ext4 file system and so on.
- Sensors Support: Accelerometer, proximity, compass, gyroscopes, barometers, magnetometers, and proximity and pressure sensors.
- Other Support: Touch screens, GPS, dedicated gaming controls, thermometers and so on.
- Database Support: Sqllite DB.
Comparison With Other Mobile Platform
Few Features that can only supported by Android Os:
Android supports a file system that you can easily access through your pc using an usb feature on. It's also provide Offline Map Facility, USB Support and "Developer can use their android device during the app development cycle without any Licensing Like in case of Window Phone development and IOS development you have take developer license to deploy you app on phone. This is best part of android I can say", I will describe more on this in my upcoming articles.
A very good comparison table I have found here. As per my experience, I have corrected window feature list in table given below. It will cover the main features of multiple Mobile OS Platform. I think now a days there is war between Apple, Microsoft and Google, These brand names are the key player behind smart phone devices.
| | IOS 6 | Android 4.1 | Windows 8 | Window 7.8 |
| Apps | 650,000+ | 600,000+ | 100,000+ | 100,000+ |
| Multitasking | yes
limited | yes | yes
limited | yes
limited |
| Widgets | no | yes | expandable
Live Tiles | expandable
Live Tiles |
| Expandable storage | no | yes | yes | yes |
| Multi-core processors | yes | yes | yes | yes |
| High-res displays | yes | yes | yes | yes |
| File manager | no | yes | no | no |
| Drag and drop file management | no
requires iTunes | yes | no
requires Zune | no
requires Zune |
| Intelligent voice assistant | yes | yes
with Google Now | Yes | Yes but Limited |
| Sideloading apps | Cydia | yes
many outlets | no | no |
| Centralized notifications | yes
drop-down pane | yes
drop-down pane | yes | no |
| Flash support | yes | yes | yes | yes |
| Native screenshots | yes | yes | no | no |
| Offline maps | no
paid apps | yes | yes | no
only Lumias |
| Core | Darwin | Linux | Windows NT | Windows CE 7 |
| USB Host | limited
via Camera Connection Kit | yes | ? | ? |
High level Architecture of Android SDK
As you people heard about the android SDK. Few More words i want to say about the NDK and ADK.
NDK Stands for Native development Kit, If you want play with core libraries using the native language c/c++ then use it. It is basically used to increase the performance of app like game apps n all . To know more about it refer here.
ADK Stands for Accessory Development Kit . If want to build some innovative accessories for android then Go and Grab it. For More Detail Please refer here.
SDK Stands For Software Development Kit , Or You can say it's a package of several inbuilt libraries that gives you a freedom to develop whatever you want in existing world.
Let me talk about the architecture of Android OS. Android Architecture is divided into a four layer.
- Kernel Layer
- Native Layer
- Application Framework Layer
- Application Layer.
Kernel Layer: You can say this layer act like a heart of your android device. As we know android os is based on Linux kernel that contains the information about the device drives ('Drivers are the native software programs used interacts with hardware’s.') You cannot directly interact with this layer. It is responsible for all the hardware interaction or you can say its play mediator role between a UI and Hardware like WIFI Device, Blue Tooth, and Camera n all. It is also responsible for power management, memory management n all. Pictorial diagram of this layer is given below.
Native Layer: This layer contains the native libraries of android os and basically responsible for handling the input request from native UI , Like rendering the graphics of UI is responsibility of SGL and Open GL Libraries. Pictorial diagram of this layer is given below.
- Surface Manager: is used to render the view.
- SGL: 2D Graphics
- Open GL|ES: 3D Library
- Media Framework: is used to playbacks and recording of various audio, video and picture formats.
- Free Type: Font Rendering.
- WebKit: Browser Engine
- libc : native C libraries.
- SQLite: Database
- Open SSL: is used to support the SSL and TSL Protocol .Click Here To know More about it.
Android Runtime consists of Dalvik Virtual machine (DVM) and Core Java libraries. DVM is same as Java virtual machine (JVM), which is responsible for so many things, like run the byte code, memory management, and threading management and so on. It operates on .dex file.
Packaging and Overview diagram of android app is given below.
Application Framework Layer: This layer is responsible for the basic functions of phone like Location management, Notification management and so on. Our App is directly interacting with this layer to perform the various operations like find the location application uses the Location Manager.
Given below is diagram of Application Framework layer:
Some of the important blocks of application framework are:
- Activity Manager – it is responsible for an Application Life Cycle.
- Content Providers – It is responsible for sharing data from one app to another app.
- Resource Manager – It is responsible for UI resources like Layout, Colors, and Font and so on.
- Notifications Manager – It is responsible for the notification and alert.
- View System – it is used to create a set of views for user interfaces.
- Package Manager – It is used to find out the information of installed application on the device.
- Telephony Manager – It is responsible for telephone services and provider information.
- Location Manager – It is responsible for find out location of device using GPS and Network Services.
Application Layer: it is the top most layers of Android OS and contains the native app, third party app and hybrid applications.
Life Cycle Of Android Activity
Below is the diagram of android activity life cycle.
Let me explain the activity method one by one. When you create your first android project, it will create a main class that is inherited by Activity class all those methods are the member of activity class.
- onCreate() : it is called when activity is initially created , You can initialize your view componenets and register your view events here , You can also bind your view component here like listview an so on.
- onStart() : it is called , When the activity is visible to the user. It is followed by onResume() if the activity comes to the foreground. onStop() if it becomes hidden.
- onRestart(): it is always called when your activity has been stopped and trying to called onStart().
- onResume(): it is called when your application is suppose to be start again from the Pause state. like suppose you are playing a game on your device , Suddenly somebody ring your phone or device then that game activity will call onPause() state or goes into a foreground state and the new activity is created for you once you disconnect the call system will ask you to resume your game.
- onPause() : it is called when your system wants to resume the previous activity like the game example i have given earlier.
- onStop(): it is called forcefully once you are trying to stop your activity and start new activity or resume the another activity.
- onDestroy(): It is called just before the activity is going to be destroyed. Like if you want to clear your db or something that will clear some instance before it destroys your application.
Click here to know more about the activity in detail.
Background
This article gives the overview and introduction of android and their components, your can refer the references given below for depth knowledge. I want to say follow the Android developer site it's a best guide for beginners. My Next article is on How to setup your development enviornment for android click here to know more about it.
References
Points of Interest
I am trying to cover the basic points in this article, So that at least people learn about the basics of the Android OS, I am not going to give the depth detail of the components. If you want to go in depth please follow the references, I have given.