[Android Software Development] michael.the.don:
This for all those budding developers of android who are willing to develop for android but are unable to find the resources to do so. This tutorial is made my me and how i understood the whole deal. There will me many parts of this. I will keep updating with new development.

If this thread is useful to u plz hit thanks

Buy me a beer DONATE

PLZ VOTE THE THREAD

PART I

INTRODUCTION

Despite the name, Android will not help you create an unstoppable army of emotionless robot warriors on a relentless quest to cleanse the earth of the scourge of humanity. Instead, Android is an open source software stack that includes the operating system, middleware, and key applications along with a set of API libraries for writing mobile applications that can shape the look, feel, and function of mobile handsets.

As a disruptive addition to a mature field, it’s not hard to see why there has been some confusion about

what exactly Android is. Android is not:

A Java ME implementation Android applications are written using the Java language, but

they are not run within a Java ME virtual machine, and Java-compiled classes and executable

will not run natively in Android.

Part of the Linux Phone Standards Forum (LiPS) or the Open Mobile Alliance

Android runs on an open source Linux kernel, but, while their goals are similar,

Android’s complete software stack approach goes further than the focus of these standardsdefi

ning organizations.

Simply an application layer (like UIQ or S60) While it does include an application layer,

“Android” also describes the entire software stack encompassing the underlying operating system,

API libraries, and the applications themselves

Android is made up of several necessary and dependent parts including the following:

1. A hardware reference design that describes the capabilities required of a mobile device in order to support the software stack

2. A Linux operating system kernel that provides the low-level interface with the hardware, memory management, and process control, all optimized for mobile devices

3. Open source libraries for application development including SQLite, WebKit, OpenGL, and a media manager

4. A run time used to execute and host Android applications, including the Dalvik virtual machine and the core libraries that provide Android specific functionality. The run time is designed to be small and efficient for use on mobile devices.

5. An application framework that agnostically exposes system services to the application layer,including the window manager, content providers, location manager, telephony, and peer-to-peer services

6. A user interface framework used to host and launch applications

7. Preinstalled applications shipped as part of the stack

8. A software development kit used to create applications, including the tools, plug-ins, and documentation.

Android SDK Features

As an application-neutral platform, Android gives you the opportunity to create applications that are as much a part of the phone as anything provided out of the box. The following list highlights some of the most noteworthy Android features:

1. No licensing, distribution, or development fees

2. Wi-Fi hardware access

3. GSM, EDGE, and 3G networks for telephony or data transfer, allowing you to make or receive calls or SMS messages, or to send and retrieve data across mobile networks

4. Comprehensive APIs for location-based services such as GPS

5. Full multimedia hardware control including playback and recording using the camera and microphone

6. APIs for accelerometer and compass hardware

7. IPC message passing

8. Shared data stores

9. An integrated open source WebKit-based browser

10. Full support for applications that integrate Map controls as part of their user interface

11. Peer-to-peer (P2P) support using Google Talk

12. Mobile-optimized hardware-accelerated graphics including a path-based 2D graphics library and support for 3D graphics using OpenGL ES.

13. Media libraries for playing and recording a variety of audio/video or still image formats

14. An application framework that encourages reuse of application components and the replacement of native applications

SQLite Database for Data Storage and Retrieval

Android provides a lightweight relational database for each application using SQLite. Your applications can take advantage of the managed relational database engine to store data securely and efficiently.

By default, each application database is sandboxed — its content is available only to the application that created it — but Content Providers supply a mechanism for the managed sharing of these application databases

Extensive Media Support and 2D/3D Graphics

Bigger screens and brighter, higher-resolution displays have helped make mobiles multimedia devices.

To make the most of the hardware available, Android provides graphics libraries for 2D canvas drawing and 3D graphics with OpenGL.

Android also offers comprehensive libraries for handling still images, video, and audio fi les including the MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, and GIF formats.

The Android Software Development Kit (SDK)

The Android software development kit (SDK) includes everything you need to start developing, testing, and debugging Android applications. Included in the SDK download are:

1. The Android APIs The core of the SDK is the Android API libraries that provide developer access to the Android stack. These are the same libraries used at Google to create native Android applications.

2. Development Tools To turn Android source code into executable Android applications, the SDK includes several development tools that let you compile and debug your applications. You will learn more about the developer tools in Chapter 2.

3. The Android Emulator The Android Emulator is a fully interactive Android device emulator featuring several alternative skins. Using the emulator, you can see how your applications will look and behave on a real Android device. All Android applications run within the Dalvik VM so that the software emulator is an excellent environment — in fact, as it is hardware-neutral, it provides a better independent test environment than any single hardware implementation.

4. Full Documentation The SDK includes extensive code-level reference information detailing exactly what’s included in each package and class and how to use them. In addition to the code documentation, Android’s reference documentation explains how to get started and gives detailed explanations of the fundamentals behind Android development.

5. Sample Code The Android SDK includes a selection of sample applications that demonstrate some of the possibilities available using Android, as well as simple programs that highlight how to use individual API features.

6. Online Support Despite its relative youth, Android has generated a vibrant developer community.

Understanding the Android Software Stack

The Android software stack is composed of the elements shown in Figure 1-1 and described in further detail below it. Put simply, a Linux kernel and a collection of C/C++ libraries are exposed through an application framework that provides services for, and management of, the run time and applications.

1. Linux Kernel Core services (including hardware drivers, process and memory management, security, network, and power management) are handled by a Linux 2.6 kernel. The kernel also provides an abstraction layer between the hardware and the remainder of the stack.

2. Libraries Running on top of the kernel, Android includes various C/C++ core libraries such

as libc and SSL, as well as:

I. A media library for playback of audio and video media

II. A Surface manager to provide display management

III. Graphics libraries that include SGL and OpenGL for 2D and 3D graphics

IV. SQLite for native database support

V. SSL and WebKit for integrated web browser and Internet security

3. Android Run Time What makes an Android phone an Android phone rather than a mobile Linux implementation is the Android run time. Including the core libraries and the Dalvik virtual Machine, the Android run time is the engine that powers your applications and, along with the libraries, forms the basis for the application framework.

4. Core Libraries While Android development is done in Java, Dalvik is not a Java VM. The core Android libraries provide most of the functionality available in the core Java libraries as well as the Android-specific libraries.

I. Dalvik Virtual Machine Dalvik is a register-based virtual machine that’s been optimized to ensure that a device can run multiple instan