Android is an open software development platformbuilt upon Linux 2.6 kernel. And specially developed and tuned to run on resource constrain devices like mobile phone.. Android provide complete software stack starting from OS to middleware and all the way up to key applications..Android also provide tools and API for we developers to develop and publish application.It is an Open source under Apache license. Not GPL..
Android 3.0 is now available for the Android SDK. It offers a redesigned UI and all new developer APIs for an optimized experience on tablets and similar devices.Rich multimedia and connectivityHTTP Live streamingApplications can now pass an M3U playlist URL to the media framework to begin an HTTP Live streaming session. The media framework supports most of the HTTP Live streaming specification, including adaptive bit rate.Pluggable DRM frameworkAndroid 3.0 includes an extensible DRM framework that lets applications manage protected content according to a variety of DRM mechanisms that may be available on the device. For application developers, the framework API offers an consistent, unified API that simplifies the management of protected content, regardless of the underlying DRM engines.Digital media file transferThe platform includes built-in support for Media/Picture Transfer Protocol (MTP/PTP) over USB, which lets users easily transfer any type of media files between devices and to a host computer. Developers can build on this support, creating applications that let users create or manage media files that they may want to transfer or share across devices.More types of connectivityThe platform offers new connectivity that developers can build on. API support for Bluetooth A2DP and HSP profiles lets applications query Bluetooth profiles for connected devices, audio state, and more, then notify the user. For example, a music application can check connectivity and status and let the user know that music is playing through a stereo headset. Applications can also register to receive system broadcasts of pre-defined vendor-specific AT commands, such as PlatronicsXevent. For example, an application could receive broadcasts that indicate a connected device's battery level and could notify the user or take other action as needed. Applications can also take advantage of the platform's new support for full keyboards connected by USB or Bluetooth.Enhancements for enterpriseIn Android 3.0, developers of device administration applications can support new types of policies, including policies for encrypted storage, password expiration, password history, and password complex characters required.Compatibility with existing appsAndroid 3.0 brings a new UI designed for tablets and other larger screen devices, but it also is fully compatible with applications developed for earlier versions of the platform, or for smaller screen sizes. Existing applications can seamlessly participate in the new holographic UI theme without code changes, by adding a single attribute in their manifest files. The platform emulates the Menu key, which is replaced by the overflow menu in the Action Bar in the new UI. Developers wanting to take fuller advantage of larger screen sizes can also create dedicated layouts and assets for larger screens and add them to their existing applications.
Cross device/platform supportLimited access to device capability and information. Why to develop and application if we have rich browser.Why would I development 1 reason : The user experience, interaction with other application. Intent can be offered.Consistency in UI with other app on Andorid2. Browser can not run in background3. Work with limited connectivity.4. Faster.5. Retrieve only what is needed.6. User interface Content provider can be accessed.
Androidis open software paltform and include operating system (which is linuxkrenel here). This is the piece which Harware manufacturer generally worried about. This is the abstration layer between hardware and rest of the software stack..So if you want to bring Android on new hardware you just need to implement the driver and rest of the features comes free for you.Everthing in Green here you see is c/c++ implementation . And these all are c/c++ library. NDK I mentioned earlier comes gives you direct access at this layer.
Adrioid build upon Linux Kernal 2.6.X. So it started with 2.6.26 and now using 2.6.35. Android reliase uponlinux Kernel for core system services such as secrurity, Memory management, process management, network stack and driver model.-Linux Kernel also work as abstraction layer between Harware and rest of the software.. So the equipment manufacturer only need to deal with this part. Rest is taken care by android.Mostly user never see the linux.. But we would certainly see it today. In in Android developer kit and in real phone...
DALVIK Virtual machine, Dan Bornstine named it after Fishing village of Eyjafjörður Iceland. Dalvikicland (- Every application in Android runs into it’s own process. With it’s own instace of Dalvik machine.Dalvik has been written in such a way that a device can run multiple VM efficiently. This efficiency is achived by process call Zygot.Zygot is another Pre warmed VM service which is used in Android for reduce the startup time and memory footprint for an VM. As soon as request comes from a user to start an activity Zygot quickly fork a new process with a new instance otDalvik VM and execute the dex code.Dalvik rely upon the Linux Kernel for Memory, thread management.About Core library. Java i/o, util, collection…
The Android operating system is a multi-user Linux system in which each application is a different user.
This is the layer which is most visible and useful for application developers.Android gives a full fledged Java based application framework to access all underlying hardware, library and services.This framework provide developers an the framework to build the UI, way to run the serives in backgrouond, API for communication between different applciation or between component of same application.Let me touch on veriouscomponenets here. Activity manager manage the lifecycle of an application. Which application to bring in the fornt which application to pause or Kill all controled by Activity Manage.Window manager Manage your screen or display. It is an abstraction on Surface manager library. View System is responsible for managing variuos views like Button, list, Maps, Text, images.Packagemanger is responsible for keeping the track of your application on your device. So if you download the application from OTA or thru USB packange manager will keep track of it. Also responsible for installing application on your device hence knows what capability each of the application hasTelephony manager is abstraction for phone system and Application . Localtion manager will give you access of Location from GPS or any other machenism device has like cell tower triangulation method or Wifi network ID.Content provider is the one which lets your application share the data. As I said Linux keep each application as separate but Content provider is the secure mechanisimwher an application can provide the data to other application and use the data from other applicationThere are some application comes out of the box and they all are written using same App framework. So pretty much you can write any app on Android which is similar the app comes with Phone.
Activity is typically a piece of UI which is made of different view and represent one screen.For example.. A Mail activity can be decompose in three activity.Service run in the backgroud..The tipical example is music player.. How many of you like Pandora? .. It’s a service.. And they can be start and stop from other Actvity in the same application or other application using Intent.
Intent are message passing mechanism in Android between the application and within the application.You can have explicit intent which can be sent explicitly to and application to perform an operation.Or you can have implicit Intent which you sent to perform a task and let system decide who will do the Job. If you have more then one application registered for specific job system may ask user to decide which one to pick. So in order to receive these implicit event application use broadcast receviers. Example could be when you receive a phone call system broadcast and intent that phone is ringing and Pandora and other service will listen and do required operations.
Content provider is the one which lets your application share the data. As I said Linux keep each application as separate but Content provider is the only machenisim by which application can share the data.Andoird ships number of content provider for comman data like contact, image, video, audio and so on..To read these data application has to acquire certain permission..If your application wants to provide the data you can do in two why. Either you can write your content provider of you can use the existing one with right persmission
Use to notifying user without interrupting his current activity.
So let’s start the real work and see how we can develop and android application.