1. What is Android?
Android is a very popular mobile operating system developed by Android Inc. which was later taken over by Google. Android was initially used for smartphones and for tablet computers but now it is also being used on televisions, games consoles, digital cameras and other electronics. In order to contribute to android development, Google formed Open Handset Alliance which included several hardware, software and telecommunication companies. Google releases the android code under Apache License. Logo of android is shown below.
Android is based on Linux kernel with middleware, libraries and APIs written in C and application software running on an application framework which includes Java-compatible libraries based on Apache Harmony. Google releases most of the Android code under the Apache License which is a free software license. Android’s interface provides a fluid touch experience to the users who can perform actions like tapping, swiping, pinching to execute various tasks on their android device. Some applications use internal hardware such as accelerometers, gyroscopes and proximity sensors to perform certain functions like changing the screen mode from landscape to portrait depending how the device is oriented. Android is open source and Google has made it free for distribution and modification by hardware manufacturers, application developers and wireless carriers. Since it is free, developers can create their own applications, upgrades and sell them through Google Play or any other third party vendor. Android is also very famous among the device manufacturers because they get the readily available fast and customizable Operating System for their smartphones without paying a single penny. Android has become the world’s most widely used mobile OS platform.
2. Android System Architecture
Major components of android OS are shown in the below diagram.
Android core applications usually include Messaging program, calendar, clock, email client, maps, contacts etc. All of these applications are written using Java programming language.
II. Application Framework:
Developers have full access to the same framework APIs used by the core applications. The application architecture is designed such a way that any application can use the capabilities of any other application to simplify the reuse of components.
Underlying all applications is a set of services and systems, including the following: -An Activity Manager manages the lifecycle of applications
-Views System can be used to build an application, including lists, grids, text boxes, buttons, and even an embeddable web browser -Content Providers enable applications to access data from other applications (such as Contacts), or to share their own data -A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files
-A Notification Manager that enables all applications to display custom alerts in the status bar III. Libraries:
Various components of android system use a set of C/C++ libraries and these components are made available to developers through application framework.
IV. 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.
V. Linux Kernel:
Linux kernel provides the core system services such as security, memory management, process management, network stack, and driver model.
3. Android versions
After an operating system is upgraded with new functionalities, the new version is created. The updates are made to the base operating system typically to fix bugs and add new features. Beta version of android was released in 2007 for testing purpose and the first commercial version Android 1.0 was released in 2008. Since then there have been many versions of android. Each version is developed under a code name based on a dessert item and the code names were released in alphabetic order: Cupcake, Donut, Eclair, Froyo, Gingerbread, Honeycomb, Ice Cream Sandwich and Jelly Bean. Below diagram shows the android versions, version names and their logos.
4. Application Lifecycle
In the Android system, each application runs in its own process. Hence, android is responsible to run and shutdown this process whenever needed. Various application components decide the lifecycle of an application
process. Thus, it is very important for developers to use correct components to avoid the unexpected killing of the application processes. Based on the components running in the application and their states, Android places each process into an “importance hierarchy”. These process types are mentioned below in the order of their importance.
This process is required for the current tasks performed by the user. This process will only be killed as a last resort if memory is so low that not even this process can run.
This process holds an activity that is visible to the user onscreen but not in the foreground. Visible process is very important and hence, it will not be killed unless it is required to keep all foreground processes running.
This process is the one holding a Service that has been started with the startService() method. System always keeps such processes running unless there is a memory problem because these generally take care of things that users need such as background mp3 playback.
This process is the one that is holding an Activity that is not currently visible to the user. Since these processes have no direct impact on the user experience, they can be killed anytime to free the memory for more important processes.
This process is the one that does not hold any active application components. Such process works as a cache to improve startup time the next time a component of its application needs to run.
5. Software Development
Most of the android developers use Software Development Kit(SDK) for developing an application. The SDK provides the API libraries and developer tools necessary to build, test and debug apps for android.
Android SDK includes development tools, debugger libraries, a handset emulator, documentation, sample code and tutorials. Requirements also include Java Development Kit, Apache Ant, and Python 2.2 or later. The officially supported integrated development environment (IDE) is Eclipse (3.2 or later) using the Android Development Tools (ADT) Plugin, though developers may use any text editor to edit Java and XML files then use command line tools to create, build and debug Android applications.
Android Development Tools(ADT) plugin for Eclipse allows developers to create and debug their applications quickly and easily.
Benefits of this plugin are:
-Developers can access other Android development tools from inside the Eclipse IDE. -A very handy New Project Wizard that can quickly create and set up all of the basic files needed for a new Android application. -It automates and simplifies the process of building the Android application. -It provides an Android code editor that helps developers write valid XML for their Android manifest and resource files. -It can also export the project into a signed APK, which can be distributed to users.
Emulator is a virtual device that comes with the SDK. Emulator helps to prototype, develop and test android applications without an actual physical device. The following image shows a typical emulator used by the developers.
For better modelling and testing of the application, emulator supports Android Virtual Device (AVD) configurations. Developer can specify the platform, hardware options and emulator skin in the AVD. And when the application is running on the emulator, it can use the services of the Android platform to invoke other applications, access the network, play audio and video, store and retrieve data, notify the user, and render graphical transitions and themes.
Limitations of Emulator:
-No support for placing or receiving actual phone calls. You can simulate phone calls (placed and received) through the emulator console, however. -No support for USB connections
-No support for camera/video capture (input).
-No support for device-attached headphones
-No support for determining connected state
-No support for determining battery charge level and AC charging state -No support for determining SD card insert/eject
-No support for Bluetooth
6. Whats’s new in Android 4.2 Jelly Bean
There are dozens of new features added in Android Jelly Bean. Here are the prominent ones that are more revolutionary than other relatively small changes. Camera:
-Completely redesigned camera app
-Photo sphere with which users can capture 3600 images
-Brand new photo editor to customize images
-Completely redesigned clock in both, digital and analog styles -Provision to run multiple timers at ones and label the timers Google Search:
-Voice search can be used to launch applications
-Package card: to check the status of your shipment
-Movie card: to check the showtimes of the movie playing in nearby theatre -Stock card: to see the live information on stocks you follow -Hotel card: one touch navigation to your hotel
– Improved font positioning with new fonts including Roboto Thin and Nanum Gothic -New gesture keyboard that lets you glide over letters to type a word while in dynamically predicts what you want to type -New dictionaries are added in Danish, Greek, Finnish, Lithuanian, Latvian, Polish, Slovenian, Serbian, Swedish and Turkish – Android 4.2 lets you place widgets on your device’s lock screen to give you faster access to your calendar, Gmail, SMS messages, and even third party app widgets.
7. Advantages with android development
-Open source platform, anyone can use it for development
-Since it is linux based, android is very stable and there are less chances of crashing down. -Porting of the apps is very easy
-Very cheap and less time required for creating apps
-Development tools are very easy to use
-Android facilitates swift information gathering and provides accurate information.
-Software fragmentation: Due to the rapid pace of new releases of Android versions, developers need to pay attention to the development of versions as well as the current downloads made -Hardware fragmentation: There are so many devices running Android with widely varying features from keyboard to cameras to buttons to screen sizes and shapes that developers find it really difficult to create an app that would run on all devices. -Lack of software/hardware integration. Same button may perform different functions on different devices. So developers simply cannot develop an app that relies
on a particular button to do the same thing for everyone. -As carriers keep making changes to the core OS of android in order to modify features and librariers, the fragmentation problem aggravates. -The openness of Android and lack of governance make android more exposed to various malicious codes, than controlled proprietary mobile operating systems. -It is less secure as the source code since anyone can see the code and compromise the security. -Platform does not run on an encrypted file system and has a vulnerable login -Google’s dependence on hardware and carrier partners puts the final product out of their control.
9. CONCLUSION AND FUTURE SCOPE
Due to the open nature of android and due to availability of Software Development Kit, application development in android is very easy. Since Android OS is linux based, it is more stable and hence there is very less chance of crashing down. Android is widely available which means that Android devices are compatible with most wireless carriers. All these factors make Android a strong contender for the shape of the future of mobile computing. But the same open nature also gives birth to a big problem of software and platform fragmentation. More to this, the device manufacturers also modify the core OS to customise the look and feel of the OS of their device. This troubles the application developers a lot because they have to make their application compatible with all different versions, platforms and hardware changes. Open nature of android also makes it less secure as it becomes vulnerable to hacking. Since the support of application developers is crucial to the success of any computing platform, fragmentation could be a serious threat to Android as the future of mobile computing. A very ambitious project Glass is under research and development by Google. It will be a head mounted display(HMD) device with android OS and it will allow users to access certain features from smartphone such as image search, applications and face recognition.
Several tech companies are working on a new model Flexiphone which is under research and development. Flexiphone will have material of display that won’t be breakable. LG, Samsung and Sony are the companies working on these
smartphones and they will introduce flexible, bendable and rollable displays with different types of screens. Android will be the first OS to run on these flexiphones. New version 5.0 of android called Lime Pie will be released in Summer 2013. This version will have smoother system performance, more control over user profiles, improved widgets for lockscreen etc.
Testing on various platforms:
Android application developers should try to ensure the compatibility of the application on many different devices, using dissimilar hardware, running various versions of the Android operating system and must take into account any customizations made to the Android operating system by the manufacturers. Hardware Specification Standardization:
Android runs on various devices having different screen sizes. If the hardware specifications of the devices on which a particular application runs are uniform, application developers’ lot of time would be saved in rework.
Browser for Data Encryption:
It will be great to have a browser may render Application Specific information from a given coded HTML browser which is the need of the hour considering limited resources in Mobile phones.
Using the cloud storage for apps:
If we could store the installed applications on the cloud instead of on the device, it would save lot of memory and we could access the same application from any other device.
Developers should support the development of competing technology platforms.
Then they should port their apps to these platforms such as android, iOS. Whenever possible, developers should create standalone platform independent applications. They should focus on creating a distinctive app that would cultivate a strong and dedicated following.
http://www.mobileburn.com/21261/news/android-42-jelly-bean-heres-everything-new-according-to-googles-changelog http://au.ibtimes.com/articles/417969/20121224/future-android-2013.htm#.UWt-DZM9_33 http://fernstrategy.com/2011/02/28/the-risk-of-app-development-for-facebook-and-ios/ http://www.goharsh.com/cell-phone/what-is-android/
http://venturebeat.com/2013/01/28/android-captured-almost-70-global-smartphone-market-share-in-2012-apple-just-under-20/ http://www.scribd.com/doc/31665805/Mini-project-report-on-Android-Technology-with-sample-code http://elanemergingtechnologies.blogspot.com/2011/02/advantages-of-android-application.html http://www.techrepublic.com/blog/10things/10-things-i-hate-about-developing-for-android-and-some-workarounds-that-help/2650 http://www.mobileburn.com/21261/news/android-42-jelly-bean-heres-everything-new-according-to-googles-changelog