Monday, 30 June 2014

Android Architecture

The main components of the Android architecture:

A.    Applications
B.     Application Framework
C.     Libraries
D.    Runtime Android
E.     Kernel – Linux
The following diagram shows the major components of the Android operating system.

Android architecture


A.  Applications:
An Android app lives in what’s called an APK, with a particular internal file layout that allows it to be run in place, without unpacking. The Android Manifest is the interface between an app and the Android system
These are applications written in Java. Some of basic applications include a calendar, email client, SMS program, maps, making phone calls, accessing the Web browser, accessing your contacts list and others. If you are an average user, this is the layer you will us most, rest all layers are used by Google programmers, developers and hardware manufacturers.
`


B.  Application Framework:
                        Developers have full access to the same framework APIs used by the core applications. The application architecture is designed to simplify the reuse of 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). This same mechanism allows components to be replaced by the user.
                        Underlying all applications is a set of services and systems, including:
1.       rich and extensible set of Views that can be used to build an application, including lists, grids, text boxes, buttons, and even an embeddable web browser
2.       Content Providers that enable applications to access data from other applications (such as Contacts), or to share their own data
3.        Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files
4.       Notification Manager that enables all applications to display custom alerts in the status bar
5.       Activity Manager that manages the lifecycle of applications and provides a common navigation backstack.


                                         

C. 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

D. Runtime Android:

            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. Dalvik has been written so that a device can run multiple VMs efficiently. The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included "dx" tool.
            The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and low-level memory management.
It’s possible, and common practice, to call back and forth between Dalvik and native code using the JNI protocol, which is a neat trick since what’s running on Dalvik isn’t anything like Java bytecodes on a Java VM.
The JNI protocol (Java Native Interface) A programming interface (API) in Sun's Java Virtual Machine used for calling native platform elements such as GUI routines. RNI (Raw Native Interface) is the JNI counterpart in Microsoft's Java Virtual Machine.

E. Kernel – Linux:
            This layer includes Android’s memory management programs, security settings, power management software and several drivers for hardware, file system access, networking and inter-process-communication. The kernel also acts as an abstraction layer between hardware and the rest of the software stack. Android relies on Linux version 2.6 for core system services such as security, memory management, process management, network stack, and driver model.
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software.
The Linux kernel is released under the GNU General Public License version 2 (GPLv2), (plus some firmware images with various licenses), and is developed by contributors worldwide. Day-to-day development takes place on the Linux kernel mailing list.
The Linux kernel was initially conceived and created by Finnish computer science student Linus Torvalds in 1991. Linux rapidly accumulated developers and users who adopted code from other free software projects for use with the new operating system. The Linux kernel has received contributions from thousands of programmers. Many Linux distributions have been released based upon the Linux kernel.
This layer includes Android’s memory management programs, security settings, power management software and several drivers for hardware, file system access, networking and inter-process-communication. The kernel also acts as an abstraction layer between hardware and the rest of the software stack. Android relies on Linux version 2.6 for core system services such as security, memory management, process management, network stack, and driver model.

Android GUI Architecture

Android GUI is single-threaded, event-driven and built on a library of nestable components. The Android UI framework is organized around the common Model-View-Controller pattern.
The Model : The model represents data or data container. You can see it as a database of pictures on your device. Say, any user wants to hear an audio file, he clicks play button and it triggers an event in your app,  now the app will get data from data store or database and as per input and creates data to be sent back to the user. You can refer this data as Model.
The View: The View is the portion of the application responsible for rendering the display, sending audio to speakers, generating tactile feedback, and so on.
            Now as per above example, the view in a hypothetical audio player might contain a component that shows the album cover for the currently playing tune. User will always interact with this layer. User action’s on this layer will trigger events that will go to the application functions.
The Controller: The Controller is the portion of an application that responds to external actions: a keystroke, a screen tap, an incoming call, etc. It is implemented as an event queue. On User’s action, the control is passed over to.



Friday, 27 June 2014

Why you Choose Android Platform?

                              Google’s Android mobile phone software platform may be the next big opportunity for application software developers. Google announced the Open Handset Alliance and the Android platform in November of 2007, releasing the first beta version of the Android Software Development Kit (SDK) at the same time. Within a matter of a few months, over 1 million people had downloaded versions of the SDK from Google’s website. In the United States, T-Mobile announced the G1 Android mobile phone in October of 2008, and estimates are that several hundred thousand G1s were sold before the end of that year. There are already several competing mobile phone software stacks in the market, so why is there such interest in Android?
                                                           
                  Android has the potential for removing the barriers to success in the development and sale of a new generation of mobile phone application software. Just as the the standardized PC and Macintosh platforms created markets for desktop and server software, Android, by providing a standard mobile phone application environment, will create a market for mobile applications—and the opportunity for applications developers to profit from those applications.

Android platform advantages

            The Android platform has already won the game. Here are the 5 Android platform winning advantages:
a.       Android Dominate the Mobile Market
            The CEO of Google Eric Schmidt used to say that they can sell 200 thousands Android mobile phone. The investigation from the third party also shows that Android flat keeps a stable increase on sales. Depends on the data from market analyzing organization NPD, from April to June, Android mobile possess 33% in the market, RIM takes 28% and iPhone takes 22%. It's means that American customers changed their favors to Android mobile.
b.      More Type and Stronger Sales
            NPD points out that Motorola Droid, HTC Droid Incredible, HTC EVO 4G, HTC Hero, HTC Droid Eris, all these five top smartphones holds numerous operators, includes Verizon Wireless, AT&T, Sprint and T-Mobile. Because the excited competition between the operators,many sales promotions helps Version to keeps its important role in Android market. To the companies which purchase over 12 Smartphone, the preferential price will save great amount funds.

c.       Larger Space for Different Kinds and Ideas
Even the iPhone application gets pursues from customers, the Android applications based on Google's genius engineer teams, for example, the Google goggles in the image recognition software can retrieve hiking or menu. Moreover, the Android application doesn't limited in engineers. Google also develop the open App Inventor that everyone can develop the Android applications, and offers a platform for new ideas.
d.       Android Possess Innovative
After Google develop the Android, many people consider that its technical credibility beyond other operation systems, but that isn't the only reason for people buy it. Compare with other platforms, customers believes that Android is a new and mature technique; it has very broad development of space before it gets the peek. Android doesn't like iPhone's closed system; the functions of Android will become richer and more friendly.

e.        Android 2.2 Is the Best IT Gift For Customers

Android 2.2 has solved the Synchronous question with Microsoft Exchange. This system allows the remotely delete by administrators, adds the screensavers supermarket and other limit security functions. Android platform will be the leader of American operation system in the future.

Android Overview

What is Android?
                   Android is an open-source software stack for mobile devices that includes an operating system, middleware and key applications. Google Inc. purchased the initial developer of the software, Android Inc (incorporated legally established as a corporation), in 2005. Android's mobile operating system is based upon a modified version of the Linux kernel. Google and other members of the Open Handset Alliance collaborated on Android's development and release.
            The Android Open Source Project (AOSP) is tasked with the maintenance and further development of Android. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.

 History

Android Inc. founded in 2003
            Android, Inc. was founded in Palo Alto, California, United States in October, 2003 by Andy Rubin, Rich Miner, etal. to develop, in Rubin's words "...smarter mobile devices that are more aware of its owner's location and preferences." Other early key employees include Andy McFadden, who worked with Rubin at WebTV, and Chris White, who led the design and interface of WebTV, before helping to found Android.
            Rubin, a co-founder of Danger Inc., Miner, a co-founder of Wildfire Communications, Inc. and former vice-president of Technology and innovation at Orange, and the other early employees brought considerable wireless industry experience to the company. Despite the obvious past accomplishments of the founders and early employees, Android Inc. operated secretively, admitting only that it was working on software for mobile phones.

Android Inc. acquired by Google

            Google acquired Android Inc. in August, 2005, making Android Inc. a wholly-owned subsidiary of Google Inc. Key employees of Android Inc., including Andy Rubin, Rich Miner and Chris White, stayed at the company after the acquisition.
            At the time of the acquisition, because little was known about the work of Android Inc., some guessed that Google was planning to enter the mobile phone market.

Development accelerates

            At Google, the team led by Rubin developed a mobile device platform powered by the Linux kernel. Google marketed the platform to handset makers and carriers on the premise of providing a flexible, upgradable system. Google had lined up a series of hardware component and software partners and signaled to carriers that it was open to various degrees of cooperation on their part.
            Speculation about Google's intention to enter the mobile communications market continued to build through December 2006. Reports from the BBC and The Wall Street Journal noted that Google wanted its search and applications on mobile phones and it was working hard to deliver that. Print and online media outlets soon reported rumors that Google was developing a Google-branded handset. Some speculated that as Google was defining technical specifications, it was showing prototypes to cell phone manufacturers and network operators.
            In September 2007, InformationWeek covered an Evalueserve study reporting that Google had filed several patent applications in the area of mobile telephony.

Open Handset Alliance

            "Today's announcement is more ambitious than any single 'Google Phone' that the press has been speculating about over the past few weeks. Our vision is that the powerful platform we're unveiling will power thousands of different phone models."
            On the November 5, 2007 the Open Handset Alliance, a consortium of several companies which include Texas Instruments, Broadcom Corporation, Google, HTC, Intel, LG, Marvell Technology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel and T-Mobile unveiled itself. The goal of the Open Handset Alliance is to develop open standards for mobile devices. On the same day, the Open Handset Alliance also unveiled their first product, Android, a mobile device platform built on the Linux kernel version 2.6.
            On December 9, 2008, 14 new members joined, including PacketVideo, ARM Holdings, Atheros Communications, Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, and Vodafone Group Plc.

 

Licensing


            With the exception of brief update periods, Android has been available under a free software / open source license since 21 October 2008. Google published the entire source code (including network and telephony stacks) under an Apache License. Google also keeps the reviewed issues list publicly open for anyone to see and comment.

  Features of 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
  • Optimized graphics powered by a custom 2D graphics library; 3D graphics based on the OpenGL ES 1.0 specification (hardware acceleration optional)
  • 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, compass, and accelerometer (hardware dependent)
  • Rich development environment including a device emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE