Vous êtes sur la page 1sur 12

Introduction to Android development http://www.ibm.com/developerworks/opensource/library/o...

English Sign in (or register)

Technical topics Evaluation software Community Events

Introduction to Android development


The open source appliance platform

Frank Ableson, Software designer

Summary: Android is a complete operating environment based upon the Linux® V2.6 kernel. Initially, the
deployment target for Android was the mobile-phone arena, including smart phones and lower-cost flip-phone
devices. However, Android's full range of computing services and rich functional support have the potential to
extend beyond the mobile-phone market. Android can be useful for other platforms and applications. In this
article, get an introduction to the Android platform and learn how to code a basic Android application.

Date: 12 May 2009


Level: Introductory
Also available in: Korean Russian Japanese Vietnamese Portuguese

Activity: 215431 views


Comments: 4 (View | Add comment - Sign in)

Average rating (143 votes)


Rate this article

Introduction

The BlackBerry and iPhone, which have appealing and high-volume mobile platforms, are addressing opposite
ends of a spectrum. The BlackBerry is rock-solid for the enterprise business user. For a consumer device, it's
hard to compete with the iPhone for ease of use and the "cool factor." Android, a young and yet-unproven
platform, has the potential to play at both ends of the mobile-phone spectrum and perhaps even bridge the gulf
between work and play.

Today, many network-based or network-capable appliances run a flavor of the Linux kernel. It's a solid platform:
cost-effective to deploy and support and readily accepted as a good design approach for deployment. The UI for
such devices is often HTML-based and viewable with a PC or Mac browser. But not every appliance needs to be
controlled by a general computing device. Consider a conventional appliance, such as a stove, microwave or
bread maker. What if your household appliances were controlled by Android and boasted a color touch screen?
With an Android UI on the stove-top, the author might even be able to cook something.

In this article, learn about the Android platform and how it can be used for mobile and nonmobile applications.
Install the Android SDK and build a simple application. Download the source code for the example application
in this article.

A brief history of Android

The Android platform is the product of the Open Handset Alliance, a group of organizations collaborating to
build a better mobile phone. The group, led by Google, includes mobile operators, device handset
manufacturers, component manufacturers, software solution and platform providers, and marketing companies.
From a software development standpoint, Android sits smack in the middle of the open source world.

The first Android-capable handset on the market was the G1 device manufactured by HTC and provisioned on
T-Mobile. The device became available after almost a year of speculation, where the only software development
tools available were some incrementally improving SDK releases. As the G1 release date neared, the Android
team released SDK V1.0 and applications began surfacing for the new platform.

To spur innovation, Google sponsored two rounds of "Android Developer Challenges," where millions of dollars
were given to top contest submissions. A few months after the G1, the Android Market was released, allowing
users to browse and download applications directly to their phones. Over about 18 months, a new mobile

1 of 12 Monday 14 February 2011 03:18 PM


Introduction to Android development http://www.ibm.com/developerworks/opensource/library/o...

platform entered the public arena.

The Android platform

With Android's breadth of capabilities, it would be easy to confuse it with a desktop operating system. Android
is a layered environment built upon a foundation of the Linux kernel, and it includes rich functions. The UI
subsystem includes:

Windows
Views
Widgets for displaying common elements such as edit boxes, lists, and drop-down lists

Android includes an embeddable browser built upon WebKit, the same open source browser engine powering
the iPhone's Mobile Safari browser.

Android boasts a healthy array of connectivity options, including WiFi, Bluetooth, and wireless data over a
cellular connection (for example, GPRS, EDGE, and 3G). A popular technique in Android applications is to link
to Google Maps to display an address directly within an application. Support for location-based services (such
as GPS) and accelerometers is also available in the Android software stack, though not all Android devices are
equipped with the required hardware. There is also camera support.

Historically, two areas where mobile applications have struggled to keep pace with their desktop counterparts
are graphics/media, and data storage methods. Android addresses the graphics challenge with built-in support
for 2-D and 3-D graphics, including the OpenGL library. The data-storage burden is eased because the Android
platform includes the popular open source SQLite database. Figure 1 shows a simplified view of the Android
software layers.

Figure 1. Android software layers

Application architecture

As mentioned, Android runs atop a Linux kernel. Android applications are written in the Java programming
language, and they run within a virtual machine (VM). It's important to note that the VM is not a JVM as you
might expect, but is the Dalvik Virtual Machine, an open source technology. Each Android application runs
within an instance of the Dalvik VM, which in turn resides within a Linux-kernel managed process, as shown
below.

Figure 2. Dalvik VM

2 of 12 Monday 14 February 2011 03:18 PM


Introduction to Android development http://www.ibm.com/developerworks/opensource/library/o...

An Android application consists of one or more of the following classifications:

Activities
An application that has a visible UI is implemented with an activity. When a user selects an application
from the home screen or application launcher, an activity is started.
Services
A service should be used for any application that needs to persist for a long time, such as a network
monitor or update-checking application.
Content providers
You can think of content providers as a database server. A content provider's job is to manage access to
persisted data, such as a SQLite database. If your application is very simple, you might not necessarily
create a content provider. If you're building a larger application, or one that makes data available to
multiple activities or applications, a content provider is the means of accessing your data.
Broadcast receivers
An Android application may be launched to process a element of data or respond to an event, such as the
receipt of a text message.

An Android application, along with a file called AndroidManifest.xml, is deployed to a device.


AndroidManifest.xml contains the necessary configuration information to properly install it to the device. It
includes the required class names and types of events the application is able to process, and the required
permissions the application needs to run. For example, if an application requires access to the network — to
download a file, for example — this permission must be explicitly stated in the manifest file. Many applications
may have this specific permission enabled. Such declarative security helps reduce the likelihood that a rogue
application can cause damage on your device.

The next section discusses the development environment required to build an Android application.

Required tools

The easiest way to start developing Android applications is to download the Android SDK and the Eclipse IDE
(see Resources). Android development can take place on Microsoft® Windows®, Mac OS X, or Linux.

This article assumes you are using the Eclipse IDE and the Android Developer Tools plug-in for Eclipse.
Android applications are written in the Java language, but compiled and executed in the Dalvik VM (a non-Java
virtual machine). Coding in the Java language within Eclipse is very intuitive; Eclipse provides a rich Java
environment, including context-sensitive help and code suggestion hints. Once your Java code is compiled
cleanly, the Android Developer Tools make sure the application is packaged properly, including the
AndroidManifest.xml file.

It's possible to develop Android applications without Eclipse and the Android Developer Tools plug-in, but you
would need to know your way around the Android SDK.

The Android SDK is distributed as a ZIP file that unpacks to a directory on your hard drive. Since there have
been several SDK updates, it is recommended that you keep your development environment well organized so
you can easily switch between SDK installations. The SDK includes:

android.jar
Java archive file containing all of the Android SDK classes necessary to build your application.

3 of 12 Monday 14 February 2011 03:18 PM


Introduction to Android development http://www.ibm.com/developerworks/opensource/library/o...

documention.html and docs directory


The SDK documentation is provided locally and on the Web. It's largely in the form of JavaDocs, making it
easy to navigate the many packages in the SDK. The documentation also includes a high-level Development
Guide and links to the broader Android community.
Samples directory
The samples subdirectory contains full source code for a variety of applications, including ApiDemo, which
exercises many APIs. The sample application is a great place to explore when starting Android application
development.
Tools directory
Contains all of the command-line tools to build Android applications. The most commonly employed and
useful tool is the adb utility (Android Debug Bridge).
usb_driver
Directory containing the necessary drivers to connect the development environment to an Android-enabled
device, such as the G1 or the Android Dev 1 unlocked development phone. These files are only required for
developers using the Windows platform.

Android applications may be run on a real device or on the Android Emulator, which ships with the Android
SDK. Figure 3 shows the Android Emulator's home screen.

Figure 3. Android Emulator

Android Debug Bridge

The adb utility supports several optional command-line arguments that provide powerful features, such as
copying files to and from the device. The shell command-line argument lets you connect to the phone itself and

4 of 12 Monday 14 February 2011 03:18 PM


Introduction to Android development http://www.ibm.com/developerworks/opensource/library/o...

issue rudimentary shell commands. Figure 4 shows the adb shell command against a real device connected to a
Windows laptop with a USB cable.

Figure 4. Using the adb shell command

Within this shell environment, you can:

Display the network configuration that shows multiple network connections. Note the multiple network
connections:
lo is the local or loopback connection.
tiwlan0 is the WiFi connection with an address provisioned by a local DHCP server.
Display the contents of the PATH environment variable.
Execute the su command to become the super-user.
Change the directory to /data/app, where user applications are stored.
Do a directory listing where you see a single application. Android application files are actually archive files
that are viewable with WinZip or equivalent. The extension is apk.
Issue a ping command to see if Google.com is available.

From this same command-prompt environment, you can also interact with SQLite databases, start programs,
and many other system-level tasks. This is fairly remarkable function, considering you're connected to a
telephone.

In the next section, you'll create a simple Android application.

Coding a basic application

This section provides a whirlwind tour of building an Android application. The example application is about as
simple as you can imagine: a modified "Hello Android" application. You'll add a minor modification to make the
screen background color all white so you can use the phone as a flashlight. Not very original, but it will be
useful as an example. Download the full source code.

To create an application in Eclipse, select File > New > Android project, which starts the New Android
Project wizard.

Figure 5. New Android project wizard

5 of 12 Monday 14 February 2011 03:18 PM


Introduction to Android development http://www.ibm.com/developerworks/opensource/library/o...

Next, you create a simple application with a single activity, along with a UI layout stored in main.xml. The
layout contains a text element you're going to modify to say Android FlashLight. The simple layout is shown
below.

Listing 1. Flashlight layout

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/all_white">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" android:textColor="@color/all_black"
android:gravity="center_horizontal"/>
</LinearLayout>

Create a couple of color resources in strings.xml.

Listing 2. Color in strings.xml

<?xml version="1.0" encoding="utf-8"?>


<resources>
<string name="hello">Android FlashLight</string>
<string name="app_name">FlashLight</string>
<color name="all_white">#FFFFFF</color>
<color name="all_black">#000000</color>
</resources>

The main screen layout has a background color defined as all_white. In the strings.xml file, you see that all_white is
defined as an RGB triplet value of #FFFFFF, or all white.

6 of 12 Monday 14 February 2011 03:18 PM


Introduction to Android development http://www.ibm.com/developerworks/opensource/library/o...

The layout contains a single TextView, which is really just a piece of static text; it is not editable. The text is set to
be black and is centered horizontally with the gravity attribute.

The application has a Java source file called FlashLight.java, as shown below.

Listing 3. Flashlight.java

package com.msi.flashlight;
import android.app.Activity;
import android.os.Bundle;
public class FlashLight extends Activity {
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}

The code is boiler-plate directly from the New Project wizard:

It is part of a Java package called com.msi.flashlight.


It has two imports:
One for the activity class
One for the bundle class
When this activity is initiated, the onCreate method is invoked, passing in a savedInstanceState. Don't be
concerned with this bundle for our purposes; it is used when an activity is suspended and then resumed.
The onCreate method is an override of the activity class method of the same name. It calls the super class's
onCreate method.
A call to setContentView() associates the UI layout defined in the file main.xml. Anything in main.xml and
strings.xml gets automatically mapped to constants defined in the R.java source file. Never edit this file
directly, as it is changed upon every build.

Running the application presents a white screen with black text.

Figure 6. White screen of flashlight

7 of 12 Monday 14 February 2011 03:18 PM


Introduction to Android development http://www.ibm.com/developerworks/opensource/library/o...

The AndroidManifest.xml file setup for the FlashLight application is shown below.

Listing 4. AndroidManifest.xml for FlashLight

<?xml version="1.0" encoding="utf-8"?>


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.msi.flashlight"
android:versionCode="1"
android:versionName="1.0.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".FlashLight"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

This file was created automatically by the Android Developer Tools plug-in for Eclipse. You didn't have to do
anything.

Of course, the application is not terribly magnificent. But it could come in handy if you want to do some reading

8 of 12 Monday 14 February 2011 03:18 PM


Introduction to Android development http://www.ibm.com/developerworks/opensource/library/o...

without disturbing your sleeping spouse, or if you need to find your way to the fuse box in the basement during
a power outage.

Summary

In this article, you learned about Android at a very high level and built a small application. Hopefully, the
example got you excited enough to explore more of the Android platform. Android promises to be a market-
moving open source platform that will be useful well beyond cell phones.

Download

Description Name Size Download method


FlashLight source code os-android-devel-FlashLight.zip 22KB HTTP

Information about download methods

Resources

Learn

The Open Handset Alliance is a group of 47 technology and mobile companies who have come together to
accelerate innovation in mobile and offer consumers a richer, less expensive, and better mobile experience.
Together, they have developed Android, the first complete, open, and free mobile platform.

The Android developers site offers documentation, downloads, blogs, and more.

Learn more about the Dalvik Virtual Machine.

Check out the tutorials hosted on YouTube that discuss the internals of the Dalvik VM.

Unlocking Android: A Developer's Guide provides concise, hands-on instruction for the Android operating
system and development tools.

To listen to interesting interviews and discussions for software developers, check out developerWorks
podcasts.

Stay current with developerWorks' Technical events and webcasts.

Follow developerWorks on Twitter.

Check out upcoming conferences, trade shows, webcasts, and other Events around the world that are of
interest to IBM open source developers.

Visit the developerWorks Open source zone for extensive how-to information, tools, and project updates to
help you develop with open source technologies and use them with IBM's products.

Watch and learn about IBM and open source technologies and product functions with the no-cost
developerWorks On demand demos.

Get products and technologies

Download the Android SDK.

Get the latest Eclipse IDE.

Innovate your next open source development project with IBM trial software, available for download or on
DVD.

9 of 12 Monday 14 February 2011 03:18 PM


Introduction to Android development http://www.ibm.com/developerworks/opensource/library/o...

Download IBM product evaluation versions or explore the online trials in the IBM SOA Sandbox and get
your hands on application development tools and middleware products from DB2®, Lotus®, Rational®,
Tivoli®, and WebSphere®.

Discuss

Participate in developerWorks blogs and get involved in the developerWorks community.

About the author

After his college basketball career came to an end without a multiyear contract to play for the L.A. Lakers,
Frank Ableson shifted his focus to computer software design. He enjoys solving complex problems, particularly
in the areas of communications and hardware interfacing. When not working, he can be found spending time
with his wife Nikki and their children. You can reach Frank at frank@cfgsolutions.com.

Close [x]

developerWorks: Sign in
If you do not have an IBM ID and password, register here.

IBM ID:
Forgot your IBM ID?

Password:
Forgot your password?
Change your password?

After sign in: Stay on the current page

By clicking Submit, you agree to the developerWorks terms of use.

Submit Cancel

The first time you sign into developerWorks, a My developerWorks profile is created for you. This profile
includes the first name, last name, and display name contained in the profile you created when you registered
with My developerWorks. Selected information in your My developerWorks profile is displayed to the public, but
you may edit the information at any time. Your first name, last name (unless you choose to hide them), and
display name will accompany the content that you post.

All information submitted is secure.

Close [x]

Choose your display name


The first time you sign in to developerWorks a profile is created for you, so you need to choose a display name.
Your display name accompanies the content you post on developerWorks.

Display name: (Must be between 3 – 31 characters.)

Note: Please choose a display name between 3-31 characters. Your display name must be unique in the
developerWorks community and should not be your email for privacy reasons.

By clicking Submit, you agree to the developerWorks terms of use.

10 of 12 Monday 14 February 2011 03:18 PM


Introduction to Android development http://www.ibm.com/developerworks/opensource/library/o...

Submit Cancel

All information submitted is secure.

Average rating (143 votes)

1 star 1 star
2 stars 2 stars
3 stars 3 stars
4 stars 4 stars
5 stars 5 stars

Submit

Add comment:

Sign in or register to leave a comment.

Note: HTML elements are not supported within comments.

Notify me when a comment is added1000 characters left

Post

Total comments (4)

Nice article....
After reading this i developed my own android application
please have a look at this and give me reviews and ratings: http://goo.gl/T8hx2
Regards,
Amit Panchal
http://amitech.co

Posted by go2amitech on 11 February 2011

Report abuse

Excellent Article to get started.


Once you have a hands on this making a simple application you will require additional tools to develop UI
Please find this article for additional information
http://xebee.xebia.in/2010/10/20/android-ui-development-tools/

Posted by sohilr on 21 October 2010

Report abuse

Nice Article, Android 2.2 is best :D

Posted by Rupeshr00n3y on 09 July 2010

Report abuse

Just wanted to post a thank you for a very nice ariticle. It help me get my brain around what Android is and is

11 of 12 Monday 14 February 2011 03:18 PM


Introduction to Android development http://www.ibm.com/developerworks/opensource/library/o...

not. The history section provided a clear understanding why others in the industry are advocating this
technology.

Posted by Russell Ray on 21 February 2010

Report abuse

Print this page Share this page Follow developerWorks

Technical topics Evaluation software Community About developerWorks IBM


AIX and UNIX Java technology By IBM product Forums Site help and feedback Solutions
Information Linux By evaluation method Groups Contacts Software
Management
Open source By industry Blogs Article submissions Software services
Lotus
SOA and web services Wikis Support
Rational Events Related resources
Web development Terms of use Product information
Tivoli Briefings Students
XML Report abuse Redbooks
WebSphere Webcasts Business partners
More... More... Privacy
Find events
Accessibility
Cloud computing
Industries

12 of 12 Monday 14 February 2011 03:18 PM

Vous aimerez peut-être aussi