Android Application
Development Tutorial
 By Chau Ngo
EEL 6788- Advanced Topics in Wireless Networks
 Objectives
Android application development overview
Getting started
 Outline
Background information
Creating development environment
“Hello, Android” tutorial/demo
Install/Debug application on Android phone device
“Sensors” API sample demo
 What is Android?
Android is a software stack for mobile devices that includes an operating system,
 middleware, and key applications.
Android Software Development Kit (SDK)
  Provides the tools and APIs necessary to begin developing applications on the Android
 platform using the Java programming language.
  Includes a debugger, libraries, a handset emulator (based on QEMU), documentation,
 sample code, and tutorials
Android Market is an online software store developed by Google for Android devices
  An application program ("app") called "Market" is preinstalled on most Android devices
 and allows users to browse and download apps published by third-party developers,
 hosted on Android Market
  As of December 2010, the Android Market had over 200,000 applications
 History
Android mobile operating system initially developed by Android Inc,
 based in Palo Alto, CA.
Android's co-founders
  Andy Rubin (co-founder of Danger),
  Rich Miner (co-founder of Wildfire Communications, Inc.)
  Nick Sears (once VP at T-Mobile)
  Chris White (headed design and interface development at WebTV)
Android was bought by Google in 2005.
  Its co-founders went to work for Google
Google and other members of the Open Handset Alliance
 collaborated on Android's development and release
Android has been available under a free software / open source
 license since October ,2008
 Meet Android
 Co-Founders
Rick Miner Andy Rubin Nick Sears
 Chris White picture not yet found
 Operating System Overview
Powered by the Linux kernel
Consists of 12 million lines of code including:
  3 million lines of XML
  2.8 million lines of C
  2.1 million lines of Java
  1.75 million lines of C++
 http://en.wikipedia.org/wiki/Android_(operating_system)
 Current API Distribution
Version 1.0 was released on 23rd September 2008
Newest version, 3.0, was release on 26th January
 2011.
Distribution as of 01/04/11
 Android Architecture
 5 major components: Applications, Application Frameworks, Libraries,
 Android Runtime, and Linux Kernel
 Platform Architecture Videos
Presenter: Mike Cleron, Android development team
 member.
Video 1 of 3 (13 minute): architecture overview +
 replacing and reusing components example
 Application Components
An activity presents a visual user interface
  Present a list of menu items users can choose
  Display photographs along with their captions
  Activities work together to form a cohesive user
 interface, however each activity is independent of the
 others.
Service doesn't have a visual user interface, runs in the
 background for an indefinite period of time
  Media player’s music playback service
 Application Components
 (Cont.)
 Broadcast receiver: is a component that receives and reacts to
 broadcast announcements
  let other applications know that some data has been downloaded
 to the device and is available for use.
 Content provider :
  Makes a specific set of the application's data available to other
 applications
  Enables other applications to retrieve and store data of the type it
 controls
 http://developer.android.com/guide/topics/fundamentals.html
 Activity Life Cycle
http://developer.android.com/guide/topics/fundamentals.html
 Android Features
 Part 1
Application framework enabling reuse and replacement of components
Dalvik virtual machine optimized for mobile devices
Integrated browser based on the open source WebKit engine
Optimized graphics powered by
 Custom 2D graphics library;
 3D graphics based on the OpenGL ES 1.0 specification (hardware acceleration
 optional)
SQLite for structured data storage
http://developer.android.com/guide/basics/what-is-android.html
 Android Features
 Part 2
Media support for common audio, video, and still image formats (MPEG4,
 H.264, MP3, AAC, AMR, JPG, PNG, GIF)
GSM Telephony (hardware dependent)
Bluetooth, EDGE, 3G, and WiFi (hardware dependent)
Camera, GPS, compass, and accelerometer (hardware dependent)
Rich development environment including a device emulator, tools for
 debugging, memory and performance profiling, and a plug-in for the Eclipse
 IDE
http://developer.android.com/guide/basics/what-is-android.html
 Application Fundamentals
Written in the Java programming language.
Code along with any required data and resource files are
 compiled into an Android package, .apk file.
Installed on mobile devices
Runs in its own Linux process
Has its own virtual machine (VM),
Is assigned a unique Linux user ID
  Permissions are set so that the application's files are visible
 only to that user and only to the application itself
http://developer.android.com/guide/topics/fundamentals.
 html
 Android Central Feature
 Replace and Reuse
  One application can make use of elements of other applications provided
 those applications permit it.
  One application doesn't incorporate the code of the other application or
 link to it. Rather, it simply starts up that piece of the other application
 when the need arises.
 For this to work, the system must be able to start an application process
 when any part of it is needed, and instantiate the Java objects for that part.
 Unlike applications on most other systems, Android applications don't have
 a single entry point for everything in the application (no main() function, for
 example).
 Rather, they have essential components that the system can instantiate and
 run as needed.
 http://developer.android.com/guide/topics/fundamentals.html
 Intents
Is the 5th key class
Objects that hold the content of the message
Activities, services, and broadcast receivers — are activated by
 intents
  For activities and services, it names the action being requested
 and specifies the URI of the data to act on, among other things
  Request for an activity to present an image to the user or let the user
 edit some text
  For broadcast receivers, it names the action being announced
  Announce to interested parties that the camera button has been pressed
 http://developer.android.com/guide/topics/fundamentals.html
 Manifest file
Before Android can start an application component, it must
 learn that the component exists.
Applications must declare their components in a manifest file
Is a structured XML file, named AndroidManifest.xml for all
 applications.
 Declares the application's components
 Names any libraries the application needs to be linked against
 (besides the default Android library)
 Identifies any permissions the application expects to be granted
 http://developer.android.com/guide/topics/fundamentals.html
 Manifest File Example
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.example.helloandroidtoo"
 android:versionCode="1"
 android:versionName="1.0">
 <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
 <activity android:name=".HelloAndroid"
 android:label="@string/app_name">
 <intent-filter>
 <action android:name="android.intent.action.MAIN" />
 <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
 </activity>
 android:debuggable="true"
 </application>
 <uses-sdk android:minSdkVersion="8" />
</manifest>
 http://developer.android.com/guide/topics/fundamentals.html
Supported Operating Systems
 Windows XP (32-bit), Vista (32- or 64-bit), or
 Windows 7 (32- or 64-bit)
 Mac OS X 10.5.8 or later (x86 only)
 Linux (tested on Ubuntu Linux, Lucid Lynx)
  GNU C Library (glibc) 2.7 or later is required.
  On Ubuntu Linux, version 8.04 or later is required.
  64-bit distributions must be capable of running 32-bit
 applications
 Supported Development
 Environments
Recommended: Eclipse
  Eclipse IDE 3.4 (Ganymede) or greater
  Eclipse IDE for Java Developers
  Eclipse Classic (versions 3.5.1 and higher)
  Eclipse IDE for Java EE Developers
  Eclipse JDT plug-in (included in most Eclipse IDE packages)
  JDK 5 or JDK 6 (JRE alone is not sufficient)
  Android Development Tools plug-in (recommended)
Other development environments or IDEs
  JDK 5 or JDK 6 (JRE alone is not sufficient)
  Apache Ant 1.8 or later
Not compatible with Gnu Compiler for Java (gcj)
 Set up Development
 Environment
Review system requirements
Installing Java SDK
Download Eclipse IDE
Install Android SDK
Installing ADT plug-in for Eclipse
Adding Platforms and Components
http://developer.android.com/sdk/installing.html
 Installing Java SDK
Website:
 http://www.oracle.com/technetwork/java/javase/downloads/index.html
Takes about 5 minutes
Latest version: 1.6.23
Select the standard edition
Select platform
Check license agreement
Select file in the “Available Files”
Select “Run” to start installing
Accept all default settings unless you want to customize.
Don’t need immediate registration
Java SDK will be installed on C drive by default
  For example: C:\Program Files\Java\jdk1.6.0_23
Java SDK Directory
 Download Eclipse
http://www.eclipse.org/downloads/
Takes about 3 Minutes
Select package
Select zip file for your OS
Click on “Download”
On “File Download” dialog, select “Save” to save the .zip file
After zip file is completely downloaded, unzip it.
Eclipse application is located under “eclipse” folder
 For example: C:\Users\chau\Desktop\eclipse-SDK-3.6.1-
 win32\eclipse\
Eclipse Directory
 Notes on Eclipse Tutorial
Instructions written based on older version
Missing steps
 HelloWorld tutorial: check on “Create public static
 main ….”
 First time “Run as  Java application” is not available
Other note: by default, Eclipse project is configured
 to “Build Automatically” (Project->Build
 Automatically)
 Install Android SDK
Website: http://developer.android.com/sdk/index.html
Takes 10-15 minutes
Installer will verify if Java has been installed and stop
 installing if Java SDK is missing
Accept most defaults
Accept license agreement
Optionally, install additional packages when Android SDK
 and Android Virtual Device (AVD) Manager dialog open.
  Select “Available Packages” and select package (s) to install
● AndroidSDKInstallation.pptx
 Install ADT Plugin
 For Eclipse
Go to Android SDK Installing website for
 instructions.
2 main steps.
 Use Eclipse to download
  Download ADT Plugin.pptx
 Configure
  Configure ADT Plugin.pptx
 Android Emulator
 Virtual mobile device that runs on computer.
 Can be used to prototype, develop, and test Android applications
 without using a physical device.
 http://developer.android.com/guide/developing/tools/emulator.html
 Create Android
 Virtual Device (AVD)
An Android Virtual Device (AVD) is a device configuration
 for the emulator that allows you to model real world devices.
In order to run an instance of the emulator, you must create
 an AVD.
On Eclipse, select Window -> Android SDK and AVD
 Manager
Click New to create a new AVD.
Fill in the details for the AVD. Give it a name, a platform
 target, an SD card size (512), and a skin (HVGA is default).
Click Create AVD.
Launch an emulator with the AVD by clicking Start
 Hello Android Tutorial
 Step 1
Create New Android Project
 From Eclipse IDE: Select File -> New ->
 Project to open “New File” dialog
  On “New File” dialog: expand “Android”
 folder, then select “Android Project”, then
 click on “Next” button
  http://developer.android.com/guide/tutorials/hello-w
 orld.html
Create Project
Select Android Project
 Hello Android Tutorial
 Step 2
Specify project properties
  Project name: HelloAndroid
 Build target: 2.2
  Might need to create the target first (See Create AVD)
 Application name: Hello, Android
 Package name: com.example.HelloAndroid
 Select “Create Activity” with “HelloAndroid” as name
 Min SDK Version: 8
 Click on “Finish” button.
  http://developer.android.com/guide/tutorials/hello-world.html
 Hello Android Tutorial
 Step 3
Edit/Add code in the “onCreate” method
  Comment out the following line
 //setContentView(R.layout.main);
  Add the following lines
 TextView tv = new TextView(this);
 tv.setText("Hello, Android!!!\nWhat's up urban?");
 setContentView(tv);
 Save the file , then Build the project if needed
*** Might need to import 2 new packages by clicking on the
 red cross on the left hand side of that line
 Project Files
Project Files Newly added code
 Hello Android Tutorial
 Step 4
Run application using emulator
 Click “Run As” to open “Run As” dialog
Might need to create an Android Virtual device.
Select “Android Application
Click on “OK”
2 command prompts pop up and go away
Emulator pop ups, then go through a few stages and displays.
Wait for a few minutes for Activity Manager to complete launching the activity. Console
 displays message below.
  “Activity Manager: Starting: Intent { act=an ….}”, click on “Menu” to see the “Hello World
 Message”
After Emulator “locked” screen appear.
 Click on “Menu” button, “Hello Android” message will display.
 Click “Home” button on emulator
 Click on “…” on screen, “Hello, Android” application icon display on screen.
 Double click on app icon to display the app message
“Run As” Dialog
Emulator Initializing
Console Messages
Emulator Startup Screen
Hello Android Running
Emulator Home
Applications Screen
 Run On Device
Must set up device, Android environment, and
 driver first (see next slide)
Connect USB cable from phone to PC
Run
 Eclipse automatically install the application, .apk file,
 and run it
 Developing on a Device
Declare your application as "debug-able" in your Android Manifest.
Turn on "USB Debugging" on your device.
Install USB driver
 If using Android Developer Phone (ADP): Nexus One, or Nexus S, install
 Google Windows USB Driver
 Otherwise, find a link to the appropriate OEM driver in the OEM USB Drivers
 document
Install HTC Sync
  Make sure generic/incomparable driver has been removed
  Take about 5 minutes
  Choose “Complete” Set up type.
  Install HTC Sync.pptx
● Connect phone as “Disk Drive”, not “Charge Only” or “USB Tethering”
http://developer.android.com/guide/developing/device.html
 Install APK File
 via Android Market
Copy the APK file to your Android’s memory card
 and insert the card into your phone.
Download and install the Apps Installer application
 from the Android Market
Once installed, run Apps Installer , browse to the
 APK file on the memory card.
Click and install your APK file.
 Install APK File
 Using Android SDK
Android Debug Bridge is a tool that allows manage
 the state of an emulator instance or Android-
 powered device
Install appropriate driver
Connect phone to PC via USB data cable
Run command line from SDK's platform-tools/
 directory :
 adb -d install
 C:\Users\chau\workspace\HelloFormStuffs\bin\Hell
 oFormStuffs.apk
Install APK File Result
 Create Project From Existing
 Source
For example: platform ApiDemos
Create a new project from existing source
Browse to and select ApiDemos folder
Select Build Target
Click on “Finish”
Create ApiDemos Project
 Android Phone Sensors
Accelerometer
  Senses changes in orientation allowing the device to know when it is tilted
 on its side
Proximity sensor
  Deactivates the display and touch screen when the device is brought near
 the face during a call
Ambient light sensor
  Adjusts the display brightness which in turn saves battery power
E-compass
  Provides orientation with respect to Earth's magnetic field
Camera
GPS
Microphone
 Sensing Related Packages
Media
 http://developer.android.com/reference/android/me
 dia/package-summary.html
Location
 http://developer.android.com/reference/android/loca
 tion/package-summary.html
Hardware
 http://developer.android.com/reference/android/har
 dware/Sensor.html
 Sensor API Demo
Package: com.example.android.apis.os;
Displays the values of the acceleration sensor graphically.
Get sensor manager
  mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
Register listener for 4 sensor types
  mSensorManager.registerListener(mGraphView,
 SensorManager.SENSOR_ACCELEROMETER |
 SensorManager.SENSOR_MAGNETIC_FIELD |
 SensorManager.SENSOR_ORIENTATION,
 SensorManager.SENSOR_DELAY_FASTEST);
 Override onSensorChanged(…) to display the changed value
Questions/Answers
Additional
Hardware Package Summary
Android SDK Disk Storage