GOOGLE ANDROID
ABSTRACT
Google's Android platform is based on
Linux and is a creation that is backed by the Open Handset Alliance. But beyond
how it works and what makes it work, Google's new OS is something fresh and new
that none of us have witnessed in years.
In essence, Android does away with the
notion that operating systems should be locked down and gives the power back to
the manufacturers and users to create an element of innovation that has been
lacking in the cell phone industry for so long. Things will change. Instead of
seeing the derivative devices that do nothing to push this industry forward,
you will finally see a group of Android-based phones that offer something
different from every other device and have the look and feel of something new,
even though they're all running the same basic operating system.
INTRODUCTION
The Android platform is a software stack
for mobile devices including an operating system, middleware and key
applications. Developers can create applications for the platform using the
Android SDK. Applications are written using the Java Programming language and
run on Dalvik, a custom virtual machine designed for embedded use which runs on
top of a Linux kernel.
Android was built form ground-up to
enable developers to create compelling mobile applications that take full
advantage of all a handset has to offer. It is built to be truly open.
HISTORY
In July 2005 Google acquired Android
Inc., a small start up company based in
On
The unveiling of Android platform on
FEATURES
Following are some of the most important features of the Android:
·
Application framework enabling reuse and replacement of components
·
Dalvik virtual machine optimized for mobile devices
·
Integrated browser based on the open source Webkit engine
·
SQLite for structured data storage
·
Media support for common audio, video and still image formats
(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
·
GSM Telephony (hardware dependent)
·
Bluetooth, EDGE, 3G and WiFi (hardware dependent)
·
Camera, GPS, and accelerometer (hardware dependent)
·
Rich development environment including a device emulator, tools for debugging,
memory and performance profiling
ANDROID ARCHITECTURE
The following diagram shows
the major components of the Android
operating system:
APPLICATIONS
Android ships
with a set of core applications including an email client, SMS program,
calendar, maps, browser, contacts and others.
All the applications used in android are
written using the Java programming Language.
APPLICATION FRAMEWORK
An application framework is a software
framework that is used to implement the standard structure of an application
for a specific operating system. Developers have full access to the API’S used
by the core applications. The application architecture is designed to simplify
the reuse of the components. Any application can publish its capabilities and
any other application may then make use of those capabilities subject to
security constraints enforced by the framework. The same mechanism allows
components to be replaced by the user.
Underlying all applications is a set of
services and systems including:
·
Views
·
Content
providers
·
Resource manager
·
Notification
manager
·
Activity manager
VIEWS
A rich and extensible set of views that can be
used to build an application, including lists, grids, text boxes, buttons and
eve an embeddable web browser.
CONTENT PROVIDERS
How a content provider actually stores
its data is upto the implementation of the Content provider, but all content
providers must implement a common convention to Query for data, and a common
convention to return the results. A content provider can Implement a custom
helper functions to make data storage/ retrieval simpler for the Specific data
that it exposes.
Android exposes a number of content
providers for a wide range of data types from music and image files to phone
numbers. Android’s content providers are loosely linked to their clients. Each
content provider exposes a unique string identifying the type of data that it
will handle, and the client must use that sting to store or retrieve data of
that type. We can query for data, modify data, add a record, delete a record
using a content provider.
RESOURCE MANAGER
A resource manager provides access
to non code resources such as localized strings, graphics, and layout files.
Resources are external files (that are non code files) that are used by your
code and compiled in your application at the build time. Android supports a
number of different kinds of resource files, including XML, PNG, and JPEG
files.
Resources are externalized from
source code, and XML files are compiled into a binary fast loading format for
efficiency reasons. Strings likewise are compressed into a more efficient
storage form. It is for these reasons that we have these different resource
types in Android platform. The android resource system keeps track of all non
code assets associated with a application.
NOTIFICATION MANAGER
A
notification manager enables all applications to display custom alerts in the
status bar. Android.app. NotificationManager is a class to notify the user of
events that happen. This is how you tell the user that something has happened
in the background. Notification can
take different forms:
·
A persistent
icon that goes in the status bar and is accessible through the launcher. When a
user selects it a designated intent can be launched
·
Turning on or
flashing LED’S on the device or
·
Alerting the
user by flashing the backlight, playing a sound or vibrating.
Each of the notify methods takes an int id
parameter. This id identifies this notification from your application to the
system, so that id should be unique within your application. If u call one of
the notify methods with an id that is currently active and a new set of
notification parameters, it will be updated. For example, if you pass a new
status bar icon, the old icon will be replaced with the new one.
An activity manager manages the life
cycle of the applications and provides a common navigation backstack. An
activity is a single focused thing that the user can do. almost all activities
interact with the user, so the Activity class takes care of creating a window
for you in which you can place your UI. While activities are often presented to
the user as full screen windows, they can also be used in other ways: as
floating windows, or embedded inside of another activity.
Activities in the system are manages as
an activity stack. When a new
activity is started, it is placed on the top of the stack and becomes the
running activity. The previous activity always remains below it in the stack,
and will not come to the foreground again until the new activity exits.
An activity has essentially four
states:
·
If an activity
is in the foreground of the screen (at
the top of the stack) , it is active or running.
·
If an activity
has lost focus but is still visible, it is paused. A paused activity is
completely alive. It maintains all state and member information and remains
attached to the window manager, but it can be killed by the system in extreme
low memory situations.
·
If an activity
is completely obscured by another activity, it is stopped. It still retains all state and member information,
however, it is no longer visible to the user so its window is hidden and it
will often be killed by the system when memory is needed elsewhere.
·
If an activity
is paused or stopped, the system can drop the activity from memory by either
asking it to finish, or simply killing its process. When it is displayed again to the user, it must be completely
restarted and restored to its previous state.
LIBRARIES
Android
includes a set of C/C++ libraries used by various components of the Android
system. These capabilities are exposed to developers through the Android
application framework. Some of the core libraries are listed below:
·
System C
library - a BSD-derived
implementation of the standard C system
library (libc), tuned for embedded Linux-based devices
·
Media
Libraries - based on
PacketVideo's OpenCORE; the libraries support playback and recording of many popular
audio and video formats, as well
as static image
files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
·
Surface
Manager - manages access to the
display subsystem and seamlessly
composites 2D and 3D graphic layers from multiple applications
·
LibWebCore - a modern web browser engine which powers both the
Android browser and an embeddable
web view
·
SGL - the underlying 2D graphics engine
·
3D
libraries - an implementation
based on OpenGL ES 1.0 APIs; the libraries
use either hardware 3D acceleration (where available) or the included,
highly optimized 3D software rasterizer
·
FreeType - bitmap and vector font rendering
·
SQLite - a powerful and lightweight relational database
engine available to all applications
ANDROID RUNTIME
Android includes a set of core libraries
that provides most of the functionality available in the core libraries of the
Java programming language.
Every Android application runs in its
own process, with its own instance of the Dalvik virtual machine. It is
optimized for low memory requirements, and is designed to allow multiple VM
instances to run at once, relying on the underlying operating system for
process isolation, memory management and threading support. Dalvik is often
referred to as a Java Virtual Machine, but this is not strictly accurate, as
the bytecode on which it operates is not Java bytecode. Instead, a tool named dx,
included in the Android SDK, transforms the Java Class files of Java classes
compiled by a regular Java compiler into another class file format (the .dex
format).
The Dalvik VM relies on the Linux
kernel for underlying functionality such as threading and low-level memory
management.
LINUX
KERNEL
The Linux kernel is a Unix-like
operating system kernel. It is the namesake of the Linux family of operating
systems. Released under the GNU General Public License version 2 (GPLv2) and
developed by contributors worldwide, Linux is one of the most prominent
examples of free software.
Linux supports true preemptive
multitasking (both in user mode and kernel mode), virtual memory, shared
libraries, demand loading, shared copy-on-write executables, memory management,
the Internet protocol suite, and threading.
Linux is a monolithic kernel. Device
drivers and kernel extensions run in kernel space, with full access to the
hardware, although some exceptions run in user space. Unlike Microsoft Windows,
the graphics system most people use with Linux doesn't run in the kernel.
Android relies on Linux version 2.6 for
core system services such as security, memory management, process management,
network stack, and driver model. The kernel also acts as an abstraction layer
between the hardware and the rest of the software stack.
WHY
GOOGLE’S ANDROID OS MATTERS
- OPEN
Android was built from the ground-up to enable
developers to create compelling mobile applications that take full advantage of
all a handset has to offer. It is built to be truly open. For example, an
application could call upon any of the phone's core functionality such as
making calls, sending text messages, or using the camera, allowing developers
to create richer and more cohesive experiences for users. Android is built on
the open Linux Kernel. Furthermore, it utilizes a custom virtual machine that
has been designed to optimize memory and hardware resources in a mobile
environment. Android will be open source; it can be liberally extended to
incorporate new cutting edge technologies as they emerge. The platform will
continue to evolve as the developer community works together to build
innovative mobile applications.
- ALL
APPLICATIONS ARE CREATED EQUAL
Android does not differentiate between the
phone's core applications and third-party applications. They can all be built
to have equal access to a phone's capabilities providing users with a broad
spectrum of applications and services. With devices built on the Android
Platform, users will be able to fully tailor the phone to their interests. They
can swap out the phone's homescreen, the style of the dialer, or any of the
applications. They can even instruct their phones to use their favorite photo
viewing application to handle the viewing of all photos.
- BREAKING
DOWN APPLICATION BOUNDARIES
Android breaks down the barriers to building new and innovative
applications. For example, a developer can combine information from the web
with data on an individual's mobile phone -- such as the user's contacts,
calendar, or geographic location -- to provide a more relevant user experience.
With Android, a developer could build an application that enables users to view
the location of their friends and be alerted when they are in the vicinity
giving them a chance to connect.
·
FAST AND EASY APPLICTION DEVELOPMENT
Android provides access to a wide range of
useful libraries and tools that can be used to build rich applications. For
example, Android enables developers to obtain the location of the device, and
allows devices to communicate with one another enabling rich peer-to-peer
social applications. In addition, Android includes a full set of tools that
have been built from the ground up alongside the platform providing developers
with high productivity and deep insight into their applications.
Android is an open system, which has led
to at least one product vendor announcing the development of security
applications. In Android, each application is assigned its own unique Linux
user-ID at the time of installation and this ID is used to run the application.
Android's strength is going to come from
being an open source project. That means that it will be a team effort that
draws participants from all around the world. Having all these companies and
individuals working on Android should make the pace of development much faster
than what a single company can do. At the same time, having a broad range of
developers will result in a very rich and flexible OS with broad appeal.
BIBLIOGRAPHY
- www.code.google.com/android
- www.wikipedia.org
- http://openhandsetalliance.com
Comments
Post a Comment