Android tutorial - About Android | Introduction to Android - android app development - android studio - android development tutorial
- Android is an operating system for mobile devices such as smartphones and tablet computers.
- It is developed by the Open Handset Alliance led by Google.
- It's is built on a Linux foundation.
- Google purchased the initial developer of the software, Android Inc., in 2005.
- By providing developers a new level of openness that enables them to work more collaboratively, Android will accelerate the pace at which new and compelling mobile services are made available to consumers.
- Android is often symbolized by the green robot to the right.
Versions of Android / History of android
Platform Version | API Level | VERSION_CODE | |
---|---|---|---|
Android 6.0 | 23 | MARSHMALLOW | |
Android 5.1 | 22 | LOLLIPOP_MR1 | |
Android 5.0 | 21 | LOLLIPOP | |
Android 4.4W | 20 | KITKAT_WATCH | KitKat for Wearables Only |
Android 4.4 | 19 | KITKAT | |
Android 4.3 | 18 | JELLY_BEAN_MR2 | |
Android 4.2, 4.2.2 | 17 | JELLY_BEAN_MR1 | |
Android 4.1, 4.1.1 | 16 | JELLY_BEAN | |
Android 4.0.3, 4.0.4 | 15 | ICE_CREAM_SANDWICH_MR1 | |
Android 4.0, 4.0.1, 4.0.2 | 14 | ICE_CREAM_SANDWICH | |
Android 3.2 | 13 | HONEYCOMB_MR2 | |
Android 3.1.x | 12 | HONEYCOMB_MR1 | |
Android 3.0.x | 11 | HONEYCOMB | |
Android 2.3.4 Android 2.3.3 |
10 | GINGERBREAD_MR1 | |
Android 2.3.2 Android 2.3.1 Android 2.3 |
9 | GINGERBREAD | |
Android 2.2.x | 8 | FROYO | |
Android 2.1.x | 7 | ECLAIR_MR1 | |
Android 2.0.1 | 6 | ECLAIR_0_1 | |
Android 2.0 | 5 | ECLAIR | |
Android 1.6 | 4 | DONUT | |
Android 1.5 | 3 | CUPCAKE | |
Android 1.1 | 2 | BASE_1_1 | |
Android 1.0 | 1 | BASE |
Features & Specifications
- Android is a powerful Operating System supporting many applications in Smart Phones.
- These applications make life more comfortable and advanced for the users.
- Hardware’s that support Android are mainly based on ARM architecture platform.
- Some of the current features and specifications of android are:
Applications
- These are the basics of Android applications:
- Android applications are composed of one or more application components (activities, services, content providers, and broadcast receivers)
- Each component performs a different role in the overall application behavior, and each one can be activated individually (even by other applications)
- The manifest file must declare all components in the application and should also declare all application requirements, such as the minimum version of Android required and any hardware configurations required
- Non-code application resources (images, strings, layout files, etc.) should include alternatives for different device configurations (such as different strings for different languages)
Android Architecture
- Android is architected in the form of a software stack comprising applications, an operating system, run-time environment, middleware, services and libraries.
- Each layer of the stack, and the corresponding elements within each layer, are tightly integrated and carefully tuned to provide the optimal application development and execution environment for mobile devices.
The Linux Kernel
- Positioned at the bottom of the Android software stack, the Linux Kernel provides a level of abstraction between the device hardware and the upper layers of the Android software stack.
- Based on Linux version 2.6, the kernel provides preemptive multitasking, low-level core system services such as
- memory,
- process and
- power management in addition to providing a network stack and device drivers for hardware such as the device display, Wi-Fi and audio.
Android Runtime - Dalvik Virtual Machine
- the Linux kernel provides a multitasking execution environment allowing multiple processes to execute concurrently.
- Each application running on an Android device does so within its own instance of the Dalvik virtual machine (VM).
- Running applications in virtual machines provides a number of advantages.
- Firstly, applications are essentially sandboxed, in that they cannot detrimentally interfere (intentionally or otherwise) with the operating system or other applications, nor can they directly access the device hardware.
- Secondly, this enforced level of abstraction makes applications platform neutral in that they are never tied to any specific hardware.
- The Dalvik virtual machine was developed by Google and relies on the underlying Linux kernel for low-level functionality.
- It is more efficient than the standard Java VM in terms of memory usage, and specifically designed to allow multiple instances to run efficiently within the resource constraints of a mobile device.
- In order to execute within a Dalvik VM, application code must be transformed from standard Java class files to the Dalvik executable (.dex) format, which has a 50% smaller memory footprint than standard Java bytecode.
- Standard Java class files can usually (though not always) be converted to Dex format using the dx tool included with the Android SDK.
Java Interoperability Libraries
- Android applications are predominantly developed using the Java programming language.
- The Standard Java development environment includes a vast array of classes that are contained in the core Java runtime libraries.
- These libraries provide support for tasks such as string handling, networking and file manipulation (to name but a few) and are both familiar to, and widely used by Java developers regardless of platform.
- The Java Interoperability Libraries are an open source implementation (based on the Apache Harmony project) of a subset of the Standard Java core libraries that have been adapted and transformed for use by applications running within a Dalvik VM.
Android Libraries
A summary of some key core Android libraries available to the Android developer is as follows:
- android.app - Provides access to the application model and is the cornerstone of all Android applications.
- android.content - Facilitates content access, publishing and messaging between applications and application components.
- android.database - Used to access data published by content providers and includes SQLite database management classes.
- android.graphics - A low-level 2D graphics drawing API including colors, points, filters, rectangles and canvases.
- android.hardware - Presents an API providing access to hardware such as the accelerometer and light sensor.
- android.opengl - A Java interface to the OpenGL ES 3D graphics rendering API.
- android.os - Provides applications with access to standard operating system services including messages, system services and inter-process communication.
- android.media - Provides classes to enable playback of audio and video.
- android.net - A set of APIs providing access to the network stack. Includes android.net.wifi, which provides access to the device’s wireless stack.
- android.provider - A set of convenience classes that provide access to standard Android content provider databases such as those maintained by the calendar and contact applications.
- android.text - Used to render and manipulate text on a device display.
- android.util - A set of utility classes for performing tasks such as string and number conversion, XML handling and date and time manipulation.
- android.view - The fundamental building blocks of application user interfaces.
- android.widget - A rich collection of pre-built user interface components such as buttons, labels, list views, layout managers, radio buttons etc.
- android.webkit - A set of classes intended to allow web-browsing capabilities to be built into applications.
Application Framework
- The Application Framework is a set of services that collectively form the environment in which Android applications run and are managed. This framework implements the concept that Android applications are constructed from
- reusable,
- interchangeable and
- replaceable components.
- This concept is taken a step further in that an application is also able to publish its capabilities along with any corresponding data so that they can be found and reused by other applications.
- Activity Manager - Controls all aspects of the application lifecycle and activity stack.
- Content Providers - Allows applications to publish and share data with other applications.
- Resource Manager - Provides access to non-code embedded resources such as strings, color settings and user interface layouts.
- Notifications Manager - Allows applications to display alerts and notifications to the user.
- View System - An extensible set of views used to create application user interfaces.
- Package Manager - The system by which applications are able to find out information about other applications currently installed on the device.
- Telephony Manager - Provides information to the application about the telephony services available on the device such as status and subscriber information.
- Location Manager - Provides access to the location services allowing an application to receive updates about location changes.