Key elements in Android Application are activities, views, intents, content providers, services, and the AndroidManifest.xml file.
View – are building blocks of a user interface, and they know how to draw themselves. This concept carries over to Android from J2EE and Swing.
Activity – usually represents as single screen in Android application. In general it contains one or more views, but there are viewless activity such as “Service”.
Intent – defines an “intention” to do some work. Developer can use intents to perform tasks, as broadcast a message, start a service, launch an activity or display a web page. Intents also could be used by the system to notify application of specific events (such as the arrival of a text message). Intents are loosely couple the action and action handler.
Content Provider – defines a standard mechanism for applications to share data (such as a list of contacts) without exposing the underlying storage, structure, and implementation.
Services – background processes that can potentially run for a long time. Android defines two types of services: local services (accessible by the application that is hosting the service) and remote services (that are meant to be accessed remotely by other applications running on the device). Developer can use existing services and write own services by extending the Service class.
AndroidManifest.xml – defines the contents and behavior of application, it lists application activities and services, along with the permissions.
Each Android application in general runs under its own unique ID, and it is different from desktop environment where most of the applications run under the logged-in user ID. Android OS creates an isolation boundary around each process to prevent one application from directly accessing another application’s data. From the other side it is possible to have a data sharing between applications. For example, process can query a content provider of another application, or invoke an activity in another application. To protect the user from malicious applications, Android requires applications to request permissions if they need to use a protected feature (such as contact data), features (such as the device’s camera) and by default applications cannot access them. At install time, the APK installer either grants or denies the requested permissions based on the signature of the .apk file and/or feedback from the user. If a permission is not granted, any attempt to execute or access the associated feature will result in a permission failure (access denied).
Location functionality makes possible totally new applications. Application can look up restaurants, hotels, taxis and other services. The world of LBS is just starting and Google’s Android offers features that makes the development of these applications easie. To enable this functionality Android application has to hold the apiKey attribute with the Google Maps API Key. This key is required in order to receive the map data, even while application is in development. Developers could register certificate and receive a Maps API Key for free. Application manifest should also request the INTERNET permissions. SDK provides a MapView class allows creating a map-viewing Activity, and ZoomControls widget for zooming in and out.
Before releasing Android application to Google Market is required to sign it. During application development Android SDK is signing binaries all time with debug certificate. But debug signature does not alow to publish application, it should be a new signature.
Google has minimized the hassle of getting applications signed. There are no need to go to a central signing authority like Verisign to get a signing certificate. Developer can generated the certificate by himself, and can sign it using the jarsigner tool that comes with the Java JDK.
That is a good news for developers comparing with other developers toolkits. For example to have access to functions like internet access in Sprint Sumsung Instinct SDK is required to buy Verisign certificate.
The Android platform lets you record audio and video, where supported by the mobile device hardware. To record audio or video, developers can use the MediaRecorder class. Note that the Android Emulator window doesn’t have hardware to capture audio or video, but actual mobile devices are likely to provide these capabilities, accessible through the MediaRecorder class.
Following latest announcement Google Android got a boost from recently released Ustream application. This application currently works on Android 1.5 “Cupcake” only. Ustream app can broadcast live content to the web over 3G or Wi-Fi, or it can record in offline mode and then upload to the Internet.
Adds CDMA Telephony Support, Emulator support for multiple screen sizes/densities, including new skins, Improved support for test packages in New Project Wizard. New SmsManager and other classes for sending and receiving SMS messages.