Google Android, Google’s new product and its first attempt to enter the mobile market, might have an equal impact on mobile users like Apple’s hyped product, the iPhone. In this Technical report I am going to present the Google Android platform, what is Android. A simple Hello Android Application has been studied to show you how easier it is to develop applications for this platform. This report is basically a recommendation report for all the students who have studied Java that they should study Andriod Programming as well because it is easy to understand and you don’t even need any physical device to test our applications. But, of course, if you are working on Bluetooth then obviously you cannot test it without any
TABLE OF CONTENTS
TABLE OF CONTENTS iii LIST OF FIGURES v ACKNOWLEDGEMENTS vi CHAPTER#1: INTRODUCTION 1
I would like to thank all those people who supported me and have made this report possible. Further more I would like to thank Donn Felker. Without his explanations on this subject I would never have been motivated to study Android Programming and write a recommendation report for my class fellows. I would also like to thank Miss Narmeen Shawoo Bawani who had taught us Java this semester.
Operating Systems have developed a lot in last 15 years. Starting from black and white phones to recent smart phones or mini computers, mobile OS has come far away. Especially for smart phones, Mobile OS has greatly evolved from Palm OS in 1996 to Windows pocket PC in 2000 then to Blackberry OS and Android.
One of the most widely used mobile OS these days is Android. Android comprises not only operating system but also middleware and key applications. Android Inc was founded in Palo Alto of California, U.S. by Andy Rubin, Rich miner, Nick sears and Chris White in 2003. Later Android Inc. was acquired by Google in 2005.
Google Android, a Linux-kernel-based operating system, comes along with a quite new credo within this market: it is supposed to be open! This, in particular, means all elements used shall be provided in source code form so that developers will have the possibility to take a closer look into the system to maybe alter it to their needs. In order to guarantee a great impact of Google Android on the market, Google organized several developer contests in order to create a rich set of ready-to-go applications for the Android platform before the actual phone got available on the market, hoping to enter the competition with Apple’s iPhone market. As strategic partners Google picked HTC as provider for the first physical device running Android and T-Mobile as telephone provider.
See appendices for mobile operating systems and list of companies that support Android in their hardware.
FEATURES AND SPECIFICATIONS
Android is a powerful Operating System supporting a large number of applications in Smart Phones. These applications make life more comfortable and advanced for the users. Taking a closer look at the operating system, we are dealing with an ARM-architecture based system (armv5tejl) which is quite common for small or handheld devices. The provided 2.6 kernel (2.6.25-00350-g40fff9a in SDK version 1.0_r1) is slightly modified - specialized for handheld devices - and offers support for the most commonly used hardware devices in the embedded field of use (SD-Card, USB, and more). Some of the current features and specifications of android are:
Dalvik Virtual machine
Bluetooth, EDGE, 3G, Wi-fi
Camera, GPS, Compass etc
GOOGLE ANDROID ARCHITECTURE
The architecture basically consists of four sections: the Linux kernel (system) as underlying operating system interface, the libraries as important part of the operating system; the Android framework providing all necessary classes and methods in order to write Android compatible applications; and, as top section, the actual Android applications.
Figure 1.1:The Google Android Architecture overview
VERSIONS OF ANDROID
After original release there have been number of updates in the original version of Android.
Figure 1.2: Versions of Android
As no officially obtainable physical device is available at time of writing, developers will have to rely on the provided development kit: Google Android SDK. A core element of the SDK is the actual Google Android Emulator which provides a graphical emulation of a possible handheld device running Google Android. Further-more, the SDK not only provides the core classes of the Android framework packed into a Java Jar-file: it also includes the documentation in HTML-form and several tools that improve the usability and interaction with the emulator.
Once the SDK has been downloaded, developers can directly start creating Android-applications, compiling them and deploying them to the emulator. Nothing more than an editor and a working JDK (Sun JDK) is required.For this, Google optionally provides an Android Plugin made for Eclipse that will take over a few basic tasks like creating the Android Project layout on disk, the integration of your SDK, eventually starting your emulator if not running yet and the deployment of you application on the emulator.Once the SDK-archive is unpacked on the host system, a quick glance at the file system structure reveals the tools directory is, by far, the most interesting directory to inspect: in its root directory it offers several executables consisting of shell scripts, binaries, python scripts, basically everything that enables the developer to create Android projects and work with them. Furthermore, the tools/lib directory contains several Java-libraries in form of Jar-files. And, last but not least, the tools/lib/images directory accommodates the emulator base images which are loaded upon emulator start.
All important tools for successfully developing applications for the Android platform can be found in the tools directory. If the developer uses Eclipse as standard development IDE, he will most likely not be confronted with any of these: the optionally available Eclipse plugin provided on the Google Android project website takes over the responsibility for all necessary tasks. One can simply concentrate on writing the code, a simple click on the build button will automatically do the rest.In case, you are not using any IDE or simply not using the plugin, see appendix#3 for a short overview of each tool and its meaning .
No development without appropriate documentation. Google is aware of this and offers two valuable sets of information resources .
Each SDK includes an offline documentation set including the Android Java API and code examples for most basic issues when developing for Android. The documentation can be easily observed with any given browser .
Google offers an easy to understand API, enriched with various code examples, guidelines for naming conventions, extensive descriptions to all parts of the Android platform on the project website .
DEVELOPING ANDROID APPLICATIONS
Luckily, getting started developing with Android is easy. You don’t even need access to an Android phone, just a computer where you can install the Android SDK and phone emulator. The Android software development kit (SDK) works on Windows, Linux, and Mac OS. The applications you create, of course, can be deployed on any Android devices. Before you start coding, you need to install Java, an IDE, and the Android SDK.
Android applications are written in java-not the full blown Java that J2EE developers are used to, but a subset of Java that is sometimes known as the Dalvik Virtual Machine. This smaller subset of Java excludes classes that don’t make sense for mobile devices.
It’s not enough to just have a runtime environment (JRE); you need the full development kit. It is recommended to get the latest Sun JDK update from the Sun download site.
Next, you should install a Java development environment if you don’t have one already. I recommend Eclipse, because it’s free and because it’s used and supported by the Google developers who created Android.
If you don’t want to use Eclipse (there’s always one in every crowd), support for other IDEs such as NetBeans and JetBrains IDEA is available from their respective communities. Or if you’re really old-school, you can forgo an IDE entirely and just use the command-line tools.
The minimum version of Eclipse is 3.3.1, but you should always use whatever is the most up-to-date production version. Note that you need more than just the standard Eclipse SDK “classic” platform. Go to the Eclipse downloads page, and pick “Eclipse IDE for Java Developers.” Follow the directions there for downloading, unpacking, and installing Eclipse into a suitable location (like C:\Eclipse on Windows).
DOWNLOADING THE SDK STARTER PACKAGE
The SDK starter package is not a full development environment—it includes only the core SDK Tools, which you can use to download the rest of the SDK components (such as the latest Android platform).If you haven't already, get the latest version of the SDK starter package from the SDK download page.
If you downloaded a .zip or .tgz package (instead of the SDK installer), unpack it to a safe location on your machine. By default, the SDK files are unpacked into a directory named android-sdk-.
If you downloaded the Windows installer (.exe file), run it now and it will check whether the proper Java SE Development Kit (JDK) is installed (installing it, if necessary), then install the SDK Tools into a default location (which you can modify).
Make a note of the name and location of the SDK directory on your system—you will need to refer to the SDK directory later, when setting up the ADT plugin and when using the SDK tools from the command line.
INSTALLING THE ADT PLUGIN FOR ECLIPSE
Android offers a custom plugin for the Eclipse IDE, called Android Development Tools(ADT) that is designed to give you a powerful, integrated environment in which to build Android applications. It extends the capabilities of Eclipse to let you quickly set up new Android projects, create an application UI, debug your applications using the Android SDK tools, and even export signed (or unsigned) APKs in order to distribute your application. In general, developing in Eclipse with ADT is a highly recommended approach and is the fastest way to get started with Android.
If you'd like to use ADT for developing Android applications, install it now. Follow these steps to download the ADT plugin and install it in your Eclipse environment.
Start Eclipse, then select Help > Install New Software....
Click Add, in the top-right corner.
In the Add Repository dialog that appears, enter "ADT Plugin" for the Name and the following URL for the Location:
Note: If you have trouble acquiring the plugin, try using "http" in the Location URL, instead of "https" (https is preferred for security reasons).
In the Available Software dialog, select the checkbox next to Developer Tools and click Next.
In the next window, you'll see a list of the tools to be downloaded. Click Next.
Read and accept the license agreements, then click Finish.
Note: If you get a security warning saying that the authenticity or validity of the software can't be established, click OK.
When the installation completes, restart Eclipse.
If you prefer to work in a different IDE, you do not need to install Eclipse or ADT. Instead, you can directly use the SDK tools to build and debug your application .
CREATING YOUR FIRST PROGRAM
ADT comes with a built-in example program, or template, that we’re going to use to create a simple “Hello, Android” program in just a few seconds. Select File > New > Project... to open the New Project dialog box. Then select Android > Android Project, and click Next.
Enter the following information:
Project name: HelloAndroid
Build Target: Android 1.6
Application name: Hello, Android
Package name: org.example.hello
Create Activity: Hello When you’re done, it should look something like Figure 2.1. Click Finish. The Android plug-in will create the project and fill it in with some default files. Eclipse will build it and package it up so it will be ready to execute. If you get an error about missing source folders, select Project > Clean to fix it. First we’ll run the program under the Android Emulator .
Figure 2.1: New Android Project
RUNNING ON THE EMULATOR
To run your Android program, go to the Package Explorer window, right-click the HelloAndroid project, and select Run As > Android Application. If you’re following along in Eclipse you may see an error dialog like the one in. This indicates we haven’t told the Emulator what kind of phone to emulate.
To do this, you need to create an Android Virtual Device (AVD), using either Eclipse or the android avd command.6 It’s easier to use Eclipse, so select Yes in the AVD Error dialog to open the AVD Manager. You can open the manager again later by selecting Window > Android AVD Manager.
In the AVD Manager dialog, fill out the fields for the new AVD as follows:
Target: Android 1.6 - API Level 4
Skin: Default (HVGA)
Figure 2.2: Creating an AVD This tells Eclipse to set up a generic device called “em16,” which has the Android 1.6 (Donut) firmware installed. A 128MB virtual Secure Digital (SD) Card will be allocated, along with a half-VGA (320×480) display. Due to updates in the plug-in since this was written your screen may look slightly different. Click Create AVD to create the virtual device. A few seconds later you should see a message that the device has been created. Click OK, and then select the AVD and click Start... to bring it up. Close the AVD Manager window when you’re done.
Once you have a valid AVD, the Android emulator window will start up and boot the Android operating system. The first time you do this, it may take a minute or two, so be patient. You may need to right-click on the project and select Run As > Android Application again. If you see an error message saying that the application is not responding, select the option to continue waiting.
Eclipse will send a copy of your program over to the emulator to execute. The application screen comes up, and your “Hello, Android” program is now running. That’s it! Congratulations on your first Android program .
Figure 2.3: Running Program on Emulator
RUNNING ON A REAL PHONE
Running an Android program on a physical device such as the T-Mobile G1 during development is almost identical to running it on the emulator. All you need to do is connect your phone to the computer with a USB cable and install a special device driver .
FALSE ASSUMPTIONS FOR ANDROID PROGRAMMING
There is no hard and fast rule for programming android applications. If you know basic of Java, you have an IDE and you want to program android applications then that’s all you need.
YOU SHOULD KNOW JAVA PERFECTLY
Most of very serious experts would say “You have to know Java language perfectly or you can not even dream about Android development!” That is not so true. If you know the basics then that is all you need!
YOU SHOULD KNOW ECLIPSE OR NETBEANS PERFECTLY
Another thing that expert would say “You need to know your IDE perfectly or you will be lost in it before learning a new language!” The truth is you just need to start using an IDE to learn it.
YOU NEED TO HAVE AN ANDROID BASED PHONE
It is good to have and Android phone. it would be best to have a few phones with different Android versions and different add-ons (Android tablet may be useful too) to test if your app is working with all of them! But it still won’t help you to get rid of all problems that an app may cause on another device. It is helpful to test your app with real touch screen but for most cases an Android phone emulator (that is included in Android SDK) is really enough. 
MOBILE OPERATING SYSTEMS
There are different other Mobile operating systems also present in market in competition with Android. Apple's iOS and Windows Phone give strong competition to Android. A simple comparison between features and specifications of latest version of Android and other Operating Systems can be seen in the table given below.
Figure A1.1: Mobile Operating System According to Canalys, In Q2 2009 Android had 2.8% market share which had grown to 33% market share by Q4 2010 which made Android leader of smart phone OSs worldwide. The market share for commonly used mobile OSs is shown in the following pie chart.
Figure A1.2: Market Share of Mobile OS
COMPANIES SUPPORTING ANDROID
A list of companies supporting Android in their hardware is:
ALCATEL ( TCL corporation )
NCE casio Mobile Communications
TOOLS WITHIN ANDROID SDK
In case, you are not using any IDE or simply not using the plugin, following will give a short overview of each tool and its meaning :
AAPT: Android Asset Packaging Tool enables the developer to view, create and update Zip-compatible archives. It can also compile resources into binary assets.
activityCreator: The shell script is used to create basic file system structure for a new Android project. From then on, any IDE or Editor can be used to alter the code.
ADB: Android Debug Bridge is a very powerful service basically enables all communication to and from the emulator. Connecting with the emulator via port 5555, it enables the user to execute remote shell commands or simply provides a login shell.
AIDL: The Android Interface Definition Language tool is used to generate code that enables two processes on an Android-powered device to communicate with each other using IPC.
DDMS: Dalvik Debug Monitor Service. This tool provides port-forwarding ser-vices, screen capturing on the device, thread and heap information, log cat and much more.
DMTraceDump: Alternative to generate graphical call-stack diagrams from trace log files.
DX: Generates bytecode from .class files. It converts the files into the .dex file format which can be run in the Android environment.
MKSDCard:Creates a FAT32 disk image which can be loaded upon emulator start. Sim-ulate the presence of an SD card.
SQLite:The well-know SQLite database which saves its databases in plain files. It can be used for debugging issues (inspecting databases in Android).
TraceView: Traceview is used to view trace files which can be created on the device.
Emulator: Executable to start the Android Emulator.
More than 500,000 new Android devices were being activated daily, and the number was growing at 4.4 percent week over week, Google's (Nasdaq: GOOG) Andy Rubin tweeted in late June. comScore's figures show that for the three-month period ending in May, Android was the leading mobile platform in the United States, with 38 percent of the market. It's on the fast track to be the most expensive free product ever created. Android is the leading smartphone OS in the US now and it powers more than 130 million devices across the world including a phalanx of cheap handsets across Asia. Android is a killer app from Google. The future of Android developers is looking very bright and there is a lot of space for new applications ideas. 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. In addition, Android includes a full set of tools that have been built from the ground up alongside the platform providing developers with high productivity and deep insight into their applications. 
There are a few things you need to start a real Android development. Here are the points that in my honest opinion are really required:
Basic Java knowledge (or any other object oriented language)
Free to download Android SDK with included Android phone emulator
Free IDE like Eclipse
Free Android documentation
Other things that are not necessary but are very helpful (in my case):
Good Android book to get to know the basics (“Hello, Android” and “Beginning Android 2“)
So if you really want to be an Android developer – don’t be scared by the “experts” – just try to learn it and you will be surprised how easy it may be!