3. Literature Survey
4. Basic About Android
5. The Big Picture
6. Software Development
7. Update History
8. Life Cycle
9. What Makes Android Special
12. Future Prospects
Android is a software stack for mobile devices that includes an operating system, middleware and key applications. Android is a software platform and operating system for mobile devices based on the Linux operating system and developed by Google and the Open Handset Alliance. It allows developers to write managed code in a Java-like language that utilizes Google-developed Java libraries, but does not support programs developed in native code.
The unveiling of the Android platform on 5 November 2007 was announced with the founding of the Open Handset Alliance, a consortium of 34 hardware, software and telecom companies devoted to advancing open standards for mobile devices. When released in 2008, most of the Android platform will be made available under the Apache free-software and open-source license.
Back in 2008, when the Android phone was launched, the IT world quickly recognized it as an iPhone Killer. Though the demand for iPhone didn’t decrease, the arrival of Android marked a revolution against the tyrant iPhone. Within the first 24 hours of Android market, 62 free applications were available, which less than 10% of the number is made available during the launch of Apple’s App store.
With each update, Android OS has brought new and improved quality to mobile devices and better usability. According to NPSD group survey, Android OS smart phones ranked 2nd among all smart phones in the in the first quarter of 2010.
Even if the hardware is basis of any device and those applications are designed to help people perform an activity but it is the operating system which manages both of these resources. There are plenty of operating systems available in the market for smart phones. But the one which is widely anticipated, open source operating system for mobile devices is none other than the Android Operating System.
Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
Google Inc. purchased the initial developer of the software, Android Inc., in August, 2005, making Android Inc. a wholly-owned subsidiary of Google Inc. Android operating system is based upon a modified version of the Linux kernel, which is the most prominent examples of free and open source software. 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.
Analysis reported that in Q4 2010 the Android operating system was the world’s best-selling Smartphone platform. Gartner reported that Android as an operating system grew 888.8% in 2010. Currently Android represents 31.2 percent of the U.S Smartphone market. Android has a large community of developers writing application programs. There are currently over 150,000 apps available for Android. Android Market is the online app store run by Google, though apps can also be downloaded from third party sites.
The features of Android include:
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 Wi-Fi (hardware dependent)
• Camera, GPS, compass, and accelerator (hardware dependent)
• Rich development environment including a device emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE
3. LITERATURE SURVEY
Android Inc. founded in 2003
Android Inc. acquired by Google
Google acquired Android Inc. in Android, Inc. was founded in Palo Alto, California, United States in October, 2003 by Andy Rubin, Rich Miner, et al. to develop, in Rubin’s words “…smarter mobile devices that are more aware of its owner’s location and preferences.” Key employees involved in the founding of Android Inc. include Andy Rubin, also the co-founder of Danger Inc., Andy McFadden, who worked with Rubin at WebTV, and Chris White, who led the design and interface of WebTV. Other crucial employees includes Richard Miner, a co-founder of Wildfire Communications, Inc. and former vice-president of Technology and innovation at Orange, and all those of whom 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.
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. Not much was known about Android Inc. at the time of the acquisition so many assumed that Google was planning to enter the mobile phone market with this move.
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, up gradable 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, Information Week covered an Evalueserve study reporting that Google had filed several patent applications in the area of mobile telephony.
Open Handset Alliance
On the November 5, 2007 the Open Handset Alliance, a consortium of several companies which include Broadcom Corporation, Google, HTC, Intel, LG, Marvell Technology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel, T-Mobile and Texas Instruments 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 ARM Holdings, Atheros Communications, Asustek Computer Inc, Garmin Ltd, PacketVideo, Softbank, Sony Ericsson, Toshiba Corp, and Vodafone Group Plc.
4. BASICS ABOUT ANDROID
4.1 WHAT IS OPEN SOURCE?
Most software that you buy or download only comes in the compiled ready-to-run version. Compiled means that the actual program code that the developer created, known as the source code, has run through a special program called a compiler that translates the source code into a form that the computer can understand. It is extremely difficult to modify the compiled version of most applications and nearly impossible to see exactly how the developer created different parts of the program. Most commercial software manufacturers see this as an advantage that keeps other companies from copying their code and using it in a competing product. It also gives them control over the quality and features found in a particular product.
Open source software is at the opposite end of the spectrum. The source code is included with the compiled version and modification or customization is actually encouraged. The software developers who support the open source concept believe that by allowing anyone who’s interested to modify the source code, the application will be more useful and error-free over the long term.
To be considered as open source software by the software development industry, certain criteria must be met:
• The program must be freely distributed.
• Source code must be included.
• Anyone must be allowed to modify the source code.
• Modified versions can be redistributed.
• The license must not require the exclusion of other software or interfere with the operation of other software.
4.2 WHAT IS ANDROID?
The term “Android” has its origin in the Greek word andr-, meaning “man or male” and the suffix – eides, used to mean “alike or of the species”. This together means as much as “being human”. Andorid is a software stack for mobile devices which means a reference to a set of system programs or a set of application programs that form a complete system. This software platform provides a foundation for applications just like a real working platform.
It is easy to think of Android as being yet another operating system for high-end mobile phones. It is really a software platform, rather than just an OS, that has the potential to be utilized in a much wider range of devices. In practical terms, Android is an application framework on top of Linux, which facilitates its rapid deployment in many domains.
A key to its likely success is licensing. Android is open source and a majority of the source is licensed under Apache2, allowing adopters to add additional proprietary value in the Android source without source distribution requirements.
Another way to appreciate the significance of Android is to take a historical perspective. In the early days of PCs, the operating system was DOS. This presented some interesting challenges to application developers, as DOS provided a minimal number of services. The result was that every application needed a complete framework to provide the full functionality that was required. For example, a word processing program would need to have a driver for every imaginable printer. This was a major headache for developers and a serious ongoing maintenance problem. The solution came in the early 1990s with the release of Windows. Or, rather, the development of Windows 3.0. Although we think of Windows as being primarily a GUI, it really is much more than that. Nowadays, a word processor just talks to a logical printer. The manufacturer of the printer hardware simply needs to provide a Windows driver and everything works together properly.
In some respects, a similar situation exists today when developers want to deploy Linux for embedded applications. Android is the enabler for a broad application developer base, a complete stack on top of the Linux kernel.
4.3 ANDROID HISTORY
Although Android is quite new technology, it does have a history. It really began in 2005 when Google acquired Android Inc., which started rumors that Google had interests in mobile telephony. The Android product was announced, along with the formation of the Open Handset Alliance in 2007. The following year saw the first Android phone launched and the declaration of Android code as being open source.
Even though Android was created for handsets, many developers began to see a great opportunity to develop other kinds of innovative devices on the Android platform. Significant optimizations and additions would be required, however, to optimize Android for other connected devices.
Late in 2008, a company called Embedded Alley Solutions of San Jose, California, took on the challenge of moving Android beyond phones.
In July 2009, Mentor Graphics Corporation acquired Embedded Alley. Another significant step along the Android history timeline.
4.4 FEATURES OF ANDROID:
Features of Android are:
|Handset layouts||The platform is adaptable to larger, VGA, 2D graphics library, 3D graphics library based on OpenGL ES 2.0 specifications, and traditional Smartphone layouts.|
|Storage||SQLite, a lightweight relational database, is used for data storage purposes|
|Connectivity||SQLite, a lightweight relational database, is used for data storage purposes|
|Messaging||SMS and MMS are available forms of messaging, including threaded text messaging and now Android Cloud to Device Messaging Framework (C2DM) is also a part of Android Push Messaging service|
|Java support||While most Android applications are written in Java, there is no Java Virtual Machine in the platform and Java byte code is not executed. Java classes are compiled into Dalvik executables and run on the Dalvik virtual machine. Dalvik is a specialized virtual machine designed specifically for Android and optimized for battery-powered mobile devices with limited memory and CPU. J2ME support can be provided via third-party-applications|
|Media support||Android supports the following audio/video/still media formats: WebM, H.263, H.264 (in 3GP or MP4 container), MPEG-4 SP, AMR, AMR-WB (in 3GP container), AAC, HE-AAC (in MP4 or 3GP container), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF, BMP.|
|Streaming media support||RTP/RTSP streaming (3GPP PSS, ISMA), HTML progressive download (HTML5 <video> tag). Adobe Flash Streaming (RTMP) and HTTP Dynamic Streaming are supported by the Flash 10.1 plugin. Apple HTTP Live Streaming is supported by RealPlayer for Mobile and planned to be supported by the operating system in Android 3.0 (Honeycomb). Microsoft Smooth Streaming is planned to be supported through the awaited port of Silverlight plugin to Android.|
The platform is adaptable to larger, VGA, 2D graphics library, 3D graphics library based on OpenGL ES 2.0 specifications, and traditional Smartphone layouts.
Storage SQLite, a lightweight relational database, is used for data storage purposes
Connectivity Android supports connectivity technologies including GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, and WiMAX.
Messaging SMS and MMS are available forms of messaging, including threaded text messaging and now Android Cloud to Device Messaging Framework (C2DM) is also a part of Android Push Messaging service.
Java support While most Android applications are written in Java, there is no Java Virtual Machine in the platform and Java byte code is not executed. Java classes are compiled into Dalvik executables and run on the Dalvik virtual machine. Dalvik is a specialized virtual machine designed specifically for Android and optimized for battery-powered mobile devices with limited memory and CPU. J2ME support can be provided via third-party-applications.
Media support Android supports the following audio/video/still media formats: WebM, H.263, H.264 (in 3GP or MP4 container), MPEG-4 SP, AMR, AMR-WB (in 3GP container), AAC, HE-AAC (in MP4 or 3GP container), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF, BMP.
Streaming media support RTP/RTSP streaming (3GPP PSS, ISMA), HTML progressive download (HTML5 <video> tag). Adobe Flash Streaming (RTMP) and HTTP Dynamic Streaming are supported by the Flash 10.1 plugin. Apple HTTP Live Streaming is supported by RealPlayer for Mobile and planned to be supported by the operating system in Android 3.0 (Honeycomb). Microsoft Smooth Streaming is planned to be supported through the awaited port of Silverlight plugin to Android.
Additional hardware support Android can use video/still cameras, touchscreens, GPS, accelerometers, gyroscopes, magnetometers, proximity and pressure sensors, thermometers, accelerated 2D bit blits (with hardware orientation, scaling, pixel format conversion) and accelerated 3D graphics.
Development environment Includes a device emulator, tools for debugging, memory and performance profiling. The integrated development environment (IDE) is Eclipse (currently 3.4 or greater) using the Android Development Tools (ADT) Plugin. The programming languages are Java and C/C++.
Market The Android Market is a catalog of applications that can be downloaded and installed to Android devices over-the-air, without the use of a PC.
Multi-touch Android has native support for multi-touch which was initially made available in handsets such as the HTC Hero. The feature was originally disabled at the kernel level (possibly to avoid infringing Apple’s patents on touch-screen technology). Google has since released an update for the Nexus One and the Motorola Droid which enables multi-touch natively.
Bluetooth Supports A2DP, AVRCP, sending files (OPP), accessing the phone book (PBAP), voice dialing and sending contacts between phones. Keyboard, mouse and joystick (HID) support is available through manufacturer customizations and third-party applications. Full HID support is planned for Android 3.0 (Honeycomb).
Video calling The mainstream Android version does not support video calling, but some handsets have a customized version of the operating system which supports it, either via UMTS network (like the Samsung Galaxy S) or over IP. Video calling through Google Talk is planned for Android 3.0 (Honeycomb).
Multitasking Multitasking of applications is available.
Voice based features Google search through Voice has been available since initial release. Voice actions for calling, texting, navigation etc. are supported on Android 2.2 onwards.
Tethering Android supports tethering, which allows a phone to be used as a wireless/wired hotspot. Prior to Android 2.2 this was supported by third-party applications or manufacturer customizations.
5. THE BIG PICTURE
Let’s start by taking a look at the overall system architecture—the key layers and components that make up the Android open source software stack..Each layer uses the services provided by the layers below it. Starting from the bottom, the following sections highlight the layers provided by Android.
5.1 Linux Kernel
Android is built on top of a solid and proven foundation: the Linux kernel. Created by Linus Torvalds in 1991, Linux can be found today in everything from wristwatches to supercomputers. Linux provides the hardware abstraction layer for Android, allowing Android to be ported to a wide variety of platforms in the future.
Internally, Android uses Linux for its memory management, process management, networking, and other operating system services. The Android phone user will never see Linux, and your programs will not make Linux calls directly. As a developer, though, you’ll need to be aware it’s there. Some utilities you need during development interact with Linux. For example, the adb shell command1 will open a Linux shell in which you can enter other commands to run on the device. From there you can examine the Linux file system, view active processes, and so forth, subject to security restrictions.
5.2 Native Libraries
The next layer above the kernel contains the Android native libraries. These shared libraries are all written in C or C++, compiled for the particular hardware architecture used by the phone, and preinstalled by the phone vendor.Some of the most important native libraries include the following:
• Surface Manager: Android uses a compositing window manager similar to Vista or Compiz, but it’s much simpler. Instead of drawing directly to the screen buffer, your drawing commands go into off-screen bitmaps that are then combined with other bitmaps to form the display the user sees. This lets the system create all sorts of interesting effects such as see-through windows and fancy transitions.
• 2D and 3D graphics: Two- and three-dimensional elements can be combined in a single user interface with Android. The library will use 3D hardware if the device has it or a fast software renderer if it doesn’t.
• Media codecs: Android can play video and record and play back audio in a variety of formats including AAC, AVC (H.264), H.263, MP3, and MPEG-4.
• SQL database: Android includes the lightweight SQLite database engine, the same database used in Firefox and the Apple iPhone. You can use this for persistent storage in your application.
• Browser engine: For the fast display of HTML content, Android uses the WebKit library.4 This is the same engine used in the Google Chrome browser, Apple’s Safari browser, the Apple iPhone, and Nokia’s S60 platform. These libraries are not applications that stand by themselves. They exist only to be called by higher-level programs. Starting in Android 1.5, you can write and deploy your own native libraries using the Native Development Toolkit (NDK).
5.3 Android Runtime
Also sitting on top of the kernel is the Android runtime, including the Dalvik virtual machine and the core Java libraries. The Dalvik VM is Google’s implementation of Java, optimized for mobile devices. All the code you write for Android will be written in Java and run within the VM. Dalvik differs from traditional Java in two important ways:
• The Dalvik VM runs .dex files, which are converted at compile time from standard .class and .jar files. .dex files are more compact and efficient than class files, an important consideration for the limited memory and battery-powered devices that Android targets.
• The core Java libraries that come with Android are different from both the Java Standard Edition (Java SE) libraries and the Java Mobile Edition (Java ME) libraries. There is a substantial amount of overlap, however.
5.4 Application Framework
Sitting above the native libraries and run time, you’ll find the Application Framework layer. This layer provides the high-level building blocks you will use to create your applications. The framework comes preinstalled with Android, but you can also extend it with your own components as needed.
The most important parts of the framework are as follows:
• Activity Manager: This controls the life cycle of applications and maintains a common “backstack” for user navigation.
• Content providers: These objects encapsulate data that needs to be shared between applications, such as contacts.
• Resource manager: Resources are anything that goes with your program that is not code.
• Location manager: An Android phone always knows where it is.
• Notification manager: Events such as arriving messages, appointments, proximity alerts, alien invasions, and more can be presented in an unobtrusive fashion to the user.
5.5 Applications and Widgets
The highest layer in the Android architecture diagram is the Applications and Widgets layer. Think of this as the tip of the Android iceberg. End users will see only these programs, blissfully unaware of all the action going on below the waterline. As an Android developer, however, you know better. Applications are programs that can take over the whole screen and interact with the user. On the other hand, widgets (which are sometimes called gadgets), operate only in a small rectangle of the Home screen application.
When someone buys an Android phone, it will come prepackaged with a number of standard system applications, including the following:
• Phone dialer
• Email’s ALIVE!
• Web browser
• Android Market
Using the Android Market, the user will be able to download new programs to run on their phone. That’s where you come in.
5.6 Advantages of Dalvik Virtual Machine
The Dalvik virtual machine is simple Java interpreter machine, completely optimized for Android
platform and which is developed to run on low-end memory mobile devices. One of the prominent aspects in Dalvik its capability to run along an application compilation enhancing the runtime performance of the applications. Dalvik is not exactly, a Java machine, because Dalvik could not read Java code, but consists its own byte code called “dex” and so the executable files compacted using Dalvik holds the file type name ‘.dex’. Google states that the credit for Androids successful development goes to Dalvik VM, because this type of virtual machine, delivers a good performance over various stages of an application runtime environment, conserving more battery-power during long run of an application.
A small drawback with Dalvik, is its none-compatibility with Java SE libraries, Java ME class libraries and Swing Java libraries, while they cannot be and need not to-be run directly on this virtual machine. It uses its own Apache Harmony Java implementation libraries. Despite of the earlier reason, its escalated Android’s value proposition due to its minimal-electrical power consumption, vast library resources, and non-fragmentary application programming interface, unlike its Java rivals. Java related brands and trademarks are owned by Sun Micro Systems Inc., which is soon to be acquired by Oracle Corporation. Another significant fact that assures the open source status of Android, is that Sun Corp, cannot claim on the usage of Java-like programming language, since Android uses a Java Virtual execution environment developed by Google. So, there is are lot more opportunities than predicted.
6. SOFTWARE DEVELOPMENT
6.1 Development Requirements
• Developing an application on the Android platform requires the following:
• knowledge of programming in Java.
• knowledge of XML (optional but recommended) .
• Android SDK (requires x86 OS like Windows, Linux, Mac; JDK version >=5) .
• Eclipse IDE (at least version 3.3) with Android Development Tools (ADT) plug-in (optional but recommended).
• Android powered Smartphone (optional for testing purposes)
Notice that JavaME and JavaSE applications aren’t runnable on Android as the class libraries as well as the generated byte code are different.
6.2 IDE and Tools
Beside of the actual java class library the Android SDK (latest version 1.1r1) contains all the tools that are necessary to build an Android application. Typically every Android SDK version consists of:
As already mentioned above the SDK comes with a bunch of tools that relieve the creation of an Android app. In the following only the most important tools are described:
• aapt – Android Asset Packaging Tool Creates *.apk-files which contain all the resources as well as the program itself. Those ZIP-format based files can be transferred to and installed on an Android phone or the emulator.
• adb – Android Debug Bridge The main purpose of this tool is to set up connections to a real Android device or an Android emulator instance in order to transfer and install (apk)-files on it. With adb the developer also has the possibility to remote control the devices shell.
• dx – Dalvik Cross-Assembler The dx is used for merging and converting Java-Standard-ByteCode Classes (*.class) into one single binary file (*.dex) that can be executed by the Dalvik VM. These *.dex-files are subject to be put into an *.apk-file together with resource files.
• ddms – Dalvik Debug Monitor Service This tool provides port-forwarding services, screen capture on the device, thread and heap information on the device, logcat, process and radio state information, incoming call and SMS spoofing, location data spoofing, and more.
Emulator and System Images
The SDK also contains an emulator that is able to simulate almost all the functionality of an actual Android device. This is achieved by booting so called system images which represent the Android OS with the whole software stack of a real Android device.
Documentation, Sample Code
Of course the SDK also provides the developer with a comprehensive documentation which consists not only of an API reference but also of programming guidelines as well as detailed descriptions for the several tools. There are also a few code examples that will allow understanding the typical workflow of an Android application right away.
Although it is possible to develop Android apps with every modern IDE Google recommends doing so is by using the Eclipse IDE with a special plug-in called ADT (Android Development Tools). The ADT makes use of all the Dev Tools that come with the SDK and therefore supports and simplifies all the steps from assembling the classes over packaging and signing to running the final application on the emulator.
• The ADT is not just speeding up the testing process but also relieves the developers work in terms of UI creation and application description. For that reason the ADT offers the developer graphical representations of what has otherwise have to be written in XML.
6.3 Programming language(s)
The officially supported programming language on the Android platform is Java. It is also recommended to have some knowledge of XML as the descriptor file as well as the user interface of an application is based on that.
As the Linux kernel of the Android platform is based upon an ARM processor architecture it would also be possible to write code in C or other languages and compile it to ARM native code.
7. UPDATE HISTORY
Android has seen a number of updates since its original release. These updates to the base operating system typically fix bugs and add new features. Generally each update to the Android operating system is developed under a code name based on a dessert item. The code names are in alphabetical order
1.0 Released 23 September 2008
On 9 February 2009, Android 1.1 update for Android was released for T-Mobile G1 Only. Included in the update were:
• Multiple resolved issues
• API changes
• Maps adds details and reviews
• Screen timeout longer when using speakerphone
• “Show” & “Hide” Dialpad included in-call menu
• Support for saving attachments from MMS
• Support for marquee in layout
1.5 (Cupcake) Based on Linux Kernel 2.6.27 : On 30 April 2009, the official 1.5 (Cupcake) update for Android was released. There were several new features and UI updates included in the 1.5 update:
• Ability to record and watch videos through camcorder mode
• Uploading videos to YouTube and pictures to Picasa directly from the phone
• A new soft-keyboard with text-prediction
• Bluetooth A2DP and AVRCP support
• Ability to automatically connect to a Bluetooth headset within a certain distance
• New widgets and folders that can populate the Home screens
• Animated screen transitions
1.6 (Donut) Based on Linux Kernel 2.6.29 : On 15 September 2009, the 1.6 (Donut) SDK was released. Included in the update were:
• An improved Android Market experience
• An integrated camera, camcorder, and gallery interface
• Gallery now enables users to select multiple photos for deletion
• Updated Voice Search, with faster response and deeper integration with native applications, including the ability to dial contacts
• Updated search experience to allow searching bookmarks, history, contacts, and the web from the home screen
• Updated technology support for CDMA/EVDO, 802.1x, VPNs, and a text-to-speech engine
• Support for WVGA screen resolutions
• Speed improvements in searching and camera applications
• Gesture framework and GestureBuilder development tool
• Google free turn-by-turn navigation
2.0 / 2.1 (Eclair) Based on Linux Kernel 2.6.29 : On 26 October 2009, the 2.0 (Eclair) SDK was released. Changes include:
• Optimized hardware speed
• Support for more screen sizes and resolutions
• Revamped UI
• New Browser UI and HTML5 support
• New contact lists
• Better contrast ratio for backgrounds
• Improved Google Maps 3.1.2
• Microsoft Exchange Server by Exchange ActiveSync 2.5 support
• Built in flash support for Camera
• Digital Zoom
• MotionEvent class enhanced to track multi-touch events
• Improved virtual keyboard
• Bluetooth 2.1
• Live Wallpapers
The 2.0.1 SDK was released on 3 December 2009.
The 2.1 SDK was released on 12 January 2010.
2.2 (Froyo) Based on Linux Kernel 2.6.32 (2.2.2 latest release) : On 20 May 2010, the 2.2 (Froyo) SDK was released. Changes included:
• General Android OS speed, memory, and performance optimizations
• Additional application speed improvements courtesy of JIT implementation
• Increased Microsoft Exchange support (security policies, auto-discovery, GAL look-up, calendar synchronization, remote wipe)
• Improved application launcher with shortcuts to Phone and Browser applications
• USB tethering and Wi-Fi hotspot functionality
• Added an option to disable data access over mobile network
• Updated Market application with batch and automatic update features
• Quick switching between multiple keyboard languages and their dictionaries
• Voice dialing and contact sharing over Bluetooth
• Support for numeric and alphanumeric passwords
• Support for file upload fields in the Browser application
• Support for installing applications to the expandable memory
• Adobe Flash 10.1 support
• Support for extra high DPI screens (320 dpi), such as 4″ 720p.
2.3 (Gingerbread) Based on Linux Kernel 2.6.35 : On 6 December 2010, the 2.3 (Gingerbread) SDK was released. Changes included:
• Updated user interface design
• Support for extra-large screen sizes and resolutions (WXGA and higher)
• Native support for SIP VoIP telephony
• Support for WebM/VP8 video playback, and AAC audio encoding
• New audio effects such as reverb, equalization, headphone virtualization, and bass boost
• Support for Near Field Communication
• Enhanced support for native code development
• Audio, graphical, and input enhancements for game developers
• Concurrent garbage collection for increased performance
• Native support for more sensors (such as gyroscopes and barometers)
• A download manager for long-running downloads
• Improved power management and application control
• Native support for multiple cameras
• Switched from YAFFS to the ext4 filesystem
3.0 (Honeycomb) : On 26 January 2011, a preview of the 3.0 (Honeycomb) SDK was released. Changes include:
• Optimized tablet support with a new user interface
• Three dimensional desktop with redesigned widgets
• Refined multi-tasking
• Browser enhancements including tabbed web pages, form auto-fill, bookmark syncing with Google Chrome, and private browsing
• Support for video chat using Google Talk
• Hardware acceleration
• Support for multi-core processors
Ice Cream Sandwich : Possible mid-2011 release.
8. LIFE CYCLE
During its lifetime, each activity of an Android program can be in one of several states, as shown in Figure on the next page. You, the developer, do not have control over what state your program is in. That’s all managed by the system. However, you do get notified when the state is about to change through the onXX() method calls. You override these methods in your Activity class, and Android will call them at the appropriate time:
• onCreate(Bundle): This is called when the activity first starts up. You can use it to perform one-time initialization such as creating the user interface. onCreate( ) takes one parameter that is either null or some state information previously saved by the onSaveInstanceState() method.
• onStart( ): This indicates the activity is about to be displayed to the user.
• onResume( ): This is called when your activity can start interacting with the user. This is a good place to start animations and music.
• onPause( ): This runs when the activity is about to go into the background, usually because another activity has been launched in front of it. This is where you should save your program’s persistent state, such as a database record being edited.
• onStop( ): This is called when your activity is no longer visible to the user and it won’t be needed for a while. If memory is tight, onStop( ) may never be called (the system may simply terminate your process).
• onRestart( ): If this method is called, it indicates your activity is being redisplayed to the user from a stopped state.
• onDestroy( ): This is called right before your activity is destroyed. If memory is tight, onDestroy( ) may never be called (the system may simply terminate your process).
• onSaveInstanceState(Bundle): Android will call this method to allow the activity to save per-instance state, such as a cursor position within a text field. Usually you won’t need to override it because the default implementation saves the state for all your user interface controls automatically.
• onRestoreInstanceState(Bundle): This is called when the activity is being reinitialized from a state previously saved by the onSave-InstanceState( ) method. The default implementation restores the state of your user interface.
Activities that are not running in the foreground may be stopped, or the Linux process that houses them may be killed at any time in order to make room for new activities. This will be a common occurrence, so it’s important that your application be designed from the beginning with this in mind. In some cases, the onPause( ) method may be the last method called in your activity, so that’s where you should save any data you want to keep around for next time.
9. WHAT MAKES ANDROID SPECIAL?
There are already many mobile platforms on the market today, including Symbian, iPhone, Windows Mobile, BlackBerry, Java Mobile Edition, Linux Mobile (LiMo), and more. When I tell people about Android, their first question is often, why do we need another mobile standard? Where’s the “wow”?
Although some of its features have appeared before, Android is the first
Environment that combines the following:
• A truly open, free development platform based on Linux and open source: Handset makers like it because they can use and customize the platform without paying a royalty. Developers like it because they know that the platform “has legs” and is not locked into any one vendor that may go under or be acquired.
• A component-based architecture inspired by Internet mashups: Parts of one application can be used in another in ways not originally envisioned by the developer. You can even replace built-in components with your own improved versions. This will unleash a new round of creativity in the mobile space.
• Tons of built-in services out of the box: Location-based services use GPS or cell tower triangulation to let you customize the user experience depending on where you are. A full-powered SQL database lets you harness the power of local storage for occasionally connected computing and synchronization. Browser and map views can be embedded directly in your applications. All these built-incapability’s help raise the bar on functionality while lowering your development costs.
• Automatic management of the application life cycle: Programs are isolated from each other by multiple layers of security, which will provide a level of system stability not seen before in smart phones. The end user will no longer have to worry about what applications are active or close some programs so that others can run. Android is optimized for low-power, low-memory devices in a fundamental way that no previous platform has attempted.
• High-quality graphics and sound: Smooth, antialiased 2D vector graphics and animation inspired by Flash are melded with 3D accelerated OpenGL graphics to enable new kinds of games and business applications. Codec’s for the most common industry standard audio and video formats are built right in, including H.264 (AVC), MP3, and AAC.
• Portability across a wide range of current and future hardware: All your programs are written in Java and executed by Android’s Dalvik virtual machine, so your code will be portable across ARM, x86, and other architectures. Support for a variety of input methods is included such as keyboard, touch, and trackball. User interfaces can be customized for any screen resolution and orientation. Android offers a fresh take on the way mobile applications interact with users, along with the technical underpinnings to make it possible. But the best part of Android is the software that you are going to write for it.
• The mobile platform Android is an open platform.
• The installation of Android is possible on every cell phone.
• The installation of the whole environment to develop Android applications is possible on every operating system.
• Android requires a low footprint of 250 Kbyte
• The application model/life-cycle is future oriented with the source code separation of view and logic.
• The emulator of the Android platform has a modern design and is easy to use. Application installation on the emulator/device is possible via Android Debug Bridge
• Google offers a very good documentation as well as many examples which cover the most basic and important techniques used to get in touch with Android and the application development on it.
• Android supports all established techniques and standards for media, communication and data transfer.
• Android offers a real database which is SQLite.
• Android has an integrated web browser which allows a PC like usage
• Android relies on open operating system Linux version 2.6
• Android uses the standardized and open programming language Java
• The register based virtual machine Dalvik which is optimized for low memory
• Google itself
• Less experience with Android in the “real world”.
• The market leader is not present in the “Open Handset Alliance”.
• The openness regarding the source code could be a problem concerning security.
12. FUTURE PROSPECTS
In the present Master Thesis technical features of mobile operating systems were used to compare the Android platform with other mobile platforms like Symbian OS or Windows Mobile. For a future look not only actual techniques, standards and methods have to be considered. Also trends and user needs should be of interest. Which is the most important technology that is used at the moment and which will influence the future of normal and wireless communication most? These questions have to be answered if one
wants to know where the future of cell phones and operating systems will be.
The message “Internet is the future” which is as true now as it was in the past will most likely be the biggest challenge for cell phones and mobile operating systems in the future. the complete internet will have to take place on the cell phone as it does on the personal computer today. More cell phones than personal computers circulate around the world which shows the enormous potential of the mobile market. A successful operating system, which Android wants to be, has to focus on such a trend. It has to meet all possibilities of the internet, even if it is a web browser, connectivity standards or special applications. The important characteristic of being small and being able to go everywhere makes the cell phone interesting for more or less every industry. Based on an article in a German newspaper it should also be possible to use the cell phone as a wallet in the future. Contact-free payment with an implemented chip is another possibility. This example indicates again how important application development for mobile operating systems is. A successful mobile operating system needs to offer the actual and most important applications. The first step with an open platform, where everybody is able to develop applications, is done by Android. The trend for cell phones and its mobile devices is clear: Integrate as much functionality in a device as possible. Radio and Television, Timer and Clock, Internet and communication, everything is possible with the cell phone and its operating system.
The goal of this report is to describe, characterize and categorize the new mobile operating platform Android. The elaboration is divided in a more theoretical part where technical features are considered and a more practical part where an implementation of a simple application helps to assess Android. The systematic assessment of the technical features as well as features like openness of standards comes to the result that Android is superior to its competitive systems. When one adds the category “user needs” to this assessment then Symbian OS as well as Windows Mobile can have advantages for specific user groups. But even then one has to take into account that Android is not available on cell phones yet. When the system is further developed it could become a threat to the other two systems and make them superfluous.
The practical chapter demonstrates the comfortable way in which applications can be developed on the Android platform. The good information organization, the very useful examples, the well organized API and the innovative life-cycle of applications made it very easy to start developing on that system.
As an overall conclusion it can be said, that the Android mobile operating system seems to be a good decision for an operating system on every cell phone. It meets all the requirements that mobile operating system has to meet in the future but practical experience in the real world is indispensable. Consequently one has to keep in mind that Android is not available on a cell phone at the moment which makes it difficult to give a final and realistic conclusion.
1. Hello Android by Ed Burnette
2. Android- Bots for Android by D. C. S. Weerasinghe