What is Android?
Android is a software stack for mobile devices that includes an operating system, middleware and key applications. Developers can create applications for the platform using the Android SDK.
The API is extensive and comprehensive. It covers most of the mobile developer needs, including sensors (for accelerometer applications – iPhone like apps) and camera access. Also noteworthy is the android.os package that gives developers access to a lower level of tasks than what is usual in J2ME development. Here is a graphical overview of the platform.
The above architecture helps in achieving the following features which form the crux of mobile applications:
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.
Developers will be able to create compelling mobile applications that take full advantage of all a handset has to offer.
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.
For Java developers, the most relevant information is about the Android Runtime:
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.
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.
Equal access to the phone’s capabilities for all applications
Android treats the phone’s core applications and third-party applications equally. They can all be built to have equal access to a phone’s capabilities providing users with a broad spectrum of applications and services.
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.
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 & easy application 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.
With the release of the SDK, features and specifications for Android are slowly being released. Some of them I have mentioned below:
The platform is adaptable to both larger, VGA, 2D graphics library, 3D graphics library based on OpenGL ES 1.0 specifications, traditional smartphone layouts.
SQLite – a powerful and lightweight relational database engine available to all applications
Android supports a wide variety of connectivity technologies including GSM, Bluetooth, EDGE, 3G, and Wi-Fi.
Both SMS and MMS are available forms of messaging including threaded text messaging.
The web browser available in Android is based on the open-source WebKit application framework.
Android will support advanced audio/video/still media formats such as MPEG-4, H.264, MP3, and AAC, AMR, JPEG, PNG, GIF. T
Additional hardware support
Android is fully capable of utilizing video/still cameras, touchscreens, GPS, compasses, accelerometers, and accelerated 3D graphics.
Includes a device emulator, tools for debugging, memory and performance profiling, a plug-in for the Eclipse IDE
A lot of external services can be consumed from Android applications. Google has made it easier to integrate these services with the applications by providing specific APIs.
Some of these services are:
Location-Based Services (LBS) allow software to obtain the phone’s current location. This includes location obtained from the Global Positioning System (GPS) satellite constellation.
Android has capabilities to allow third-party code to display and control a Google Map. Users will have access to the normal map navigation functions such as pan and zoom—and developers can capture keypresses, draw overlays, and perform other view manipulations through code.
Imagine a scenario where goods are to be delivered to a particular location. The delivery person’s phone’s current location is obtained from a GPS and is fed into Google Maps to locate him on the map instantly. The destination location is entered and the person then sees directions to reach the destination. Further he could actually see the street view to verify his position.
Have a look at these videos which demonstrates the maps feature along with other features:
P2P services using XMPP
Applications will frequently need to communicate between devices. For instance, you might wish to send messages back and forth between two devices, to implement a social application where you want to send a message to a buddy.
One way to do this is to simply send an SMS message to the other phone. It’s possible to receive notifications of incoming SMS messages, inspect them to see if they contain data intended for your application, and then consume the message, preventing other applications (and the user) from ever seeing it directly. This works well, but it has two major down-sides: SMS messages can take several minutes to deliver, and they typically cost users money to send and receive.
As an alternative, Google provides an API that passes messages between users. GTalkService includes presence notification, meaning that it provides a convenient way for phones to notify each other when they are online and available for message-passing. The response time is much faster than SMS, allowing for a more fluid user experience.
Other Google Services
Google intends to provide applications that help the end-user to access Gmail, Youtube and such other Google services in the future. APIs for these have been provided but have not yet been documented which suggests that the APIs are still under enhancement.
Android thereby can utilize a lot of services as mentioned above. But those who have read this blog very carefully would notice that Android also uses services for its internal processing. Yes Android is a Service-Oriented platform. Considering it’s provided by a services company that Google is, this was expected.
Android & SAP:
Thanks to Mr.Ignacio Hernández we can also connect an Android application to an ECC system.
We could all have helpful mobile applications like the one presented by Mr. Paolo Romano for Health Care.
Now, consider the following scenario related to Sales operations:
A sales executive creates a sales order in the ECC system directly from his mobile phone. This leads to an automated sms sent to the delivery person along with the delivery location which he feeds in the Maps application to get the directions as I discussed above.
This scenario is now much easier to develop, thanks to Android.
The contents of this blog have been compiled with references from code.google.com/android and www.anddev.org.