Android Application Development Tutorial Accessing Sensors and the Network Deepa Shinde and Cindy Atherton.

Slides:



Advertisements
Similar presentations
Android Application Development A Tutorial Driven Course.
Advertisements

Android Application Development Tutorial. Topics Lecture 6 Overview Programming Tutorial 3: Sending/Receiving SMS Messages.
Android Application Development Tutorial. Topics Lecture 4 Overview Overview of Sensors Programming Tutorial 1: Tracking location with GPS and Google.
Android architecture overview
Joemarie Comeros Amparo Android Development Orientation for Starters.
Android Aims to bring Internet-style innovation and openness to mobile phones.
CS378 - Mobile Computing Maps. Using Google Maps Like other web services requires an API key from Google ons/google-apis/mapkey.html.
Chapter 11: Discover! Incorporating Google Maps
Application Fundamentals. See: developer.android.com/guide/developing/building/index.html.
Location & Maps.  Mobile applications can benefit from being location-aware, e.g.,  Routing from a current to a desired location  Searching for stores.
Filip Debelić What is it? Android is a mobile operating system (OS) based on the Linux kernel and currently developed by Google Android,
DEPARTMENT OF COMPUTER ENGINEERING
ANDROID OPERATING SYSTEM Guided By,Presented By, Ajay B.N Somashekar B.T Asst Professor MTech 2 nd Sem (CE)Dept of CS & E.
Android 101 Application Fundamentals January 29, 2010.
1 Working with Webservices Nilanjan Banerjee Mobile Systems Programming University of Arkansas Fayetteville, AR
Mobile Application Development
Cosc 5/4730 Android SMS. A note first Depending on the API level, an import changes because of a deprecated API 3 uses – import android.telephony.gsm.SmsManager;
SMS. Short Message Service – Primarily text messages between mobile phones – First one sent December 3, 1982 “Merry Christmas” – In 2008 Approximately.
Android Programming Beomjoo Seo Sep., 12 CS5248 Fall 2012.
Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department.
Android Application Development with Java UPenn CS4HS 2011 Chris Murphy
ANDROID PROGRAMMING MODULE 1 – GETTING STARTED
Android Application Development CSE 5520/4520 Wireless Networks.
Android Application Development Tutorial. Topics Lecture 5 Overview Overview of Networking Programming Tutorial 2: Downloading from the Internet.
Android Programming. Outline Preparation Create new project Build and Run a project Debug a project Deploy on devices.
Android Application Development 2013 PClassic Chris Murphy 1.
Android Introduction Platform Overview.
Mobile Programming Lecture 1 Getting Started. Today's Agenda About the Eclipse IDE Hello, World! Project Android Project Structure Intro to Activities,
Introduction to Android Programming Content Basic environmental structure Building a simple app Debugging.
Mobile Application Development with ANDROID. Agenda Mobile Application Development (MAD) Intro to Android platform Platform architecture Application building.
About me Yichuan Wang Android Basics Credit goes to Google and UMBC.
1 CSCE 4013: Mobile Systems Programming Nilanjan Banerjee Mobile Systems Programming (Acknowledgment to Deepa Shinde and Cindy Atheron University of Arkansas.
Google Maps Android API v2 吳俊興 國立高雄大學 資訊工程學系 CSF645 – Mobile Computing 行動計算
 Understanding an activity  Starting an activity  Passing information between activities  Understanding intents  Understanding the activity lifecycle.
© Keren Kalif Intro to Android Development Written by Keren Kalif, Edited by Liron Blecher Contains slides from Google I/O presentation.
@2011 Mihail L. Sichitiu1 Android Introduction Platform Overview.
Android Programming By Mohsen Biglari Android Programming, Part1: Introduction 1 Part1: Introduction By Mohsen Biglari.
Mobile Computing Lecture#08 IntentFilters & BroadcastReceivers.
Copyright© Jeffrey Jongko, Ateneo de Manila University Android.
Presentation Seminar on “IMAGE SLIDER –AN ANDROID APPLICATION”
ANDROID Presented By Mastan Vali.SK. © artesis 2008 | 2 1. Introduction 2. Platform 3. Software development 4. Advantages Main topics.
Integrating with Android Services. Introduction  Android has numerous built-in functionality that can be called from within your applications  SMS/MMS.
DUE Hello World on the Android Platform.
1 Announcements Homework #2 due Feb 7 at 1:30pm Submit the entire Eclipse project in Blackboard Please fill out the when2meets when your Project Manager.
ANDROID 응용 프로그래밍 과정 – 목차 - 안드로이드란 - 안드로이드가 만들어지게 된배경 - 안드로이드의 철학 - 안드로이드 환경설정 ( SDK download, eclipse plug-in 설정, 간단한 프로그램 실행 ) - 안드로이드 동작원리 - 안드로이드 핵심.
10/10/2015 E.R.Edwards 10/10/2015 Staffordshire University School of Computing Introduction to Android Overview of Android System Android Components Component.
Chapter 2 The Android User Interface. Objectives  In this chapter, you learn to:  Develop a user interface using the TextView, ImageView, and Button.
Maps Dr. David Janzen Except as otherwise noted, the content of this presentation is licensed under the Creative Commons Attribution 2.5 License.
Created By. Jainik B Patel Prashant A Goswami Gujarat Vidyapith Computer Department Ahmedabad.
HW#9 Clues CSCI 571 Fall, HW#9 Prototype
Lecture 2: Android Concepts
1 Android Workshop Platform Overview. 2 What is Android?  Android is a software stack for mobile devices that includes an operating system, middleware.
Android Development For Beginners. What is Android? Android is an open mobile phone platform that was developed by Google and later by Open Handset Alliance.
David Sutton SMS TELEPHONY IN ANDROID. OUTLINE  This week’s exercise, an SMS Pub Quiz  Simulating telephony on an emulator  Broadcast Intents and broadcast.
Accelerometer based motion gestures for mobile devices Presented by – Neel Parikh Advisor Committee members Dr. Chris Pollett Dr. Robert Chun Dr. Mark.
Messaging and Networking. Objectives Send SMS messages using the Messaging app Send SMS messages programmatically from within your app Receive and consume.
Android. Android An Open Handset Alliance Project A software platform and operating system for mobile devices Based on the Linux kernel Developed by Google.
CS499 – Mobile Application Development Fall 2013 Location & Maps.
Android Programming.
Android Application -Architecture.
Android 01: Fundamentals
Android Application Development 1 6 May 2018
Android N Amanquah.
Sensors, maps and fragments:
CMPE419 Mobile Application Development
תכנות ב android אליהו חלסצ'י.
CIS 470 Mobile App Development
Application Development A Tutorial Driven Course
CIS 470 Mobile App Development
CMPE419 Mobile Application Development
Presentation transcript:

Android Application Development Tutorial Accessing Sensors and the Network Deepa Shinde and Cindy Atherton

Topics Background Introduction to Android Overview of Sensors Programming Tutorial 1: Tracking location with GPS and Google Maps Overview of Networking Programming Tutorial 2: Downloading from the Internet Programming Tutorial 3: Sending/Receiving SMS Messages Questions/Comments Resources

Introduction to Android A brief guide to the Android Application Development Environment

Background Software platform from Google and the Open Handset Alliance July 2005, Google acquired Android, Inc. November 2007, Open Handset Alliance formed to develop open standards for mobile devices October 2008, Android available as open source December 2008, 14 new members joined Android project

Update History April 30, 2009: Official 1.5 Cupcake release September 15, 2009: 1.6 SDK Donut release October 26, 2009: 2.0 SDK Éclair release ◦Updates to the Éclair release:  on December 3, 2009  2.1 on January 12, 2010

Platform Versions

Android and the Hardware Built-in Apps ≡ Apps created in SDK Leverage Linux kernel to interface with hardware Open source platform promotes development from global community

Android Features Reuse and replacement of components Dalvik virtual machine Integrated browser Optimized graphics SQLite Media support GSM Telephony Bluetooth, EDGE, 3G, and WiFi Camera, GPS, compass, and accelerometer Rich development environment

Android Architecture

Application Fundamentals Apps are written in Java Bundled by Android Asset Packaging Tool Every App runs its own Linux process Each process has it’s own Java Virtual Machine Each App is assigned a unique Linux user ID Apps can share the same user ID to see each other’s files

Application Components Activity ◦Present a visual user interface for one focused endeavor the user can undertake ◦Example: a list of menu items users can choose from Services ◦Run in the background for an indefinite period of time ◦Example: calculate and provide the result to activities that need it Broadcast Receivers ◦Receive and react to broadcast announcements ◦Example: announcements that the time zone has changed Content Providers ◦Store and retrieve data and make it accessible to all applications ◦Example: Android ships with a number of content providers for common data types (e.g., audio, video, images, personal contact information, etc.) Intents ◦Hold the content of a message ◦Example: convey a request for an activity to present an image to the user or let the user edit some text

Installation Preparing your system and system requirements Downloading and Installing the SDK Installing ADT plug-in for Eclipse Adding Platforms and Components Exploring the SDK Completing tutorials Troubleshooting

Overview of Sensors The Android Sensor Platform and how to use it

Open Source Platform Developer’s are able to access “goodies” Hardware capabilities made available

Hardware-oriented Features FeatureDescription Camera A class that enables your application to interact with the camera to snap a photo, acquire images for a preview screen, and modify parameters used to govern how the camera operates. SensorClass representing a sensor. Use getSensorList(int) to get the list of available Sensors. SensorManagerA class that permits access to the sensors available within the Android platform. SensorEventListener An interface used for receiving notifications from the SensorManager when sensor values have changed. An application implements this interface to monitor one or more sensors available in the hardware. SensorEvent This class represents a sensor event and holds information such as the sensor type (e.g., accelerometer, orientation, etc.), the time-stamp, accuracy and of course the sensor's data. MediaRecorder A class, used to record media samples, that can be useful for recording audio activity within a specific location (such as a baby nursery). Audio clippings can also be analyzed for identification purposes in an access-control or security application. For example, it could be helpful to open the door to your time-share with your voice, rather than having to meet with the realtor to get a key. GeomagneticField This class is used to estimated estimate magnetic field at a given point on Earth, and in particular, to compute the magnetic declination from true north. FaceDetector A class that permits basic recognition of a person's face as contained in a bitmap. Using this as a device lock means no more passwords to remember — biometrics capability on a cell phone.

Sensor and SensorManager Sensor type (Sensor class) ◦Orientation, accelerometer, light, magnetic field, proximity, temperature, etc. Sampling rate ◦Fastest, game, normal, user interface. ◦When an application requests a specific sampling rate, it is really only a hint, or suggestion, to the sensor subsystem. There is no guarantee of a particular rate being available. Accuracy ◦High, low, medium, unreliable.

Programming Tutorial Simulating an Android application that accesses positioning sensors

Preparing for the Tutorial Must have Eclipse IDE installed Must have Android SDK installed Must have knowledge of Java Must have the external Google Maps library installed in your SDK environment. The Maps library is included with the Google APIs add-on, which you can install using the Android SDK and AVD Manager.

Get a Google Maps API Key A Google Maps API key is required to integrate Google Maps into your Android application. To apply for a key: 1.Locate the SDK debug certificate in the default folder of "C:\Documents and Settings\ \Local Settings\Application Data\Android". The filename of the debug keystore is debug.keystore. 2.Copy the debug.keystore file to a folder named C:\Android\. 3.Open the command window and navigate to C:\Program Files\Java\ \bin to locate the Keytool.exe. 4.Execute the following to extract the MD5 fingerprint: keytool.exe -list -alias androiddebugkey -keystore "C:\Android\debug.keystore" -storepass android -keypass android 5.Copy the MD5 certificate fingerprint and navigate your web browser to: 6.Follow the instructions on the page to complete the application and obtain the Google Maps key. For more information on using Google Maps in Android application development:

Create an Android Virtual Device (AVD) Defines the system image and device settings used by the Emulator To create an AVD in Eclipse: 1.Select Window > Android SDK and AVD Manager. The Android SDK and AVD Manager displays. 2.Make sure the entry for Virtual Devices is selected and click New. The Create new AVD window displays. 3.Enter a Name for the AVD. 4.Select Google APIs (API level 3) as the Target. 5.Click Create AVD. 6.Close the Android SDK and AVD Manager.

Create the Android Project To create the project in Eclipse: 1.Select File > New > Project. 2.Select Android Project in the Android folder and click Next. 3.Enter GPSSimulator as the Project Name. 4.Select Google APIs (Platform 1.5) as the Build Target. 5.Enter GPSSimulator as the Application name. 6.Enter com.android.gpssimulator as the Package name. 7.Enter GPSSimulator as the Activity name. 8.Click Finish.

The New Android Project

Modify the AndroidManifest.xml File Add permissions for GPS To modify the AndroidManifest.xml file: 1.Click on the res folder in the GPSSimulator project. 2.Double-click AndroidManifest.xml to display the GPSSimulator Manifest. 3.Enter the following lines before the application tag. 4.Save the changes to the file.

Add LocationManager to get Updates public class GPSSimulator extends Activity { private LocationManager lm; private LocationListener locationListener; // Called when the activity is first public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // use the LocationManager class to obtain GPS locations lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationListener = new MyLocationListener(); lm.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, locationListener); }

Add MyLocationListener private class MyLocationListener implements LocationListener public void onLocationChanged(Location loc) { if (loc != null) { Toast.makeText(getBaseContext(), "Location changed : Lat: " + loc.getLatitude() + " Lng: " + loc.getLongitude(), Toast.LENGTH_SHORT).show(); public void onProviderDisabled(String provider) { // TODO Auto-generated method stub public void onProviderEnabled(String provider) { // TODO Auto-generated method stub public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub }

Test the GPSSimulator To test in Eclipse: 1.Switch to DDMS view. 2.Find the Location Controls in the Emulator Control tab. 3.Click the GPX tab and click Load GPX. 4.Locate and select the GPX file. 5.Click Play to begin sending coordinates to the Emulator.

Add ability to use Google Maps Update the Manifest with two lines. <manifest xmlns:android=" package="com.android.GPSSimulator"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <application

Add MapView to main.xml <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <com.google.android.maps.MapView android:layout_width="fill_parent" android:layout_height="fill_parent" android:enabled="true" android:clickable="true" android:apiKey=“Your API Key Here" />

Modify GPSSimulator to use Google Maps public class GPSSimulator extends MapActivity { private LocationManager lm; private LocationListener locationListener; private MapView mapView; private MapController mc; // Called when the activity is first public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // use the LocationManager class to obtain GPS locations lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationListener = new MyLocationListener(); lm.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, locationListener); mapView = (MapView) findViewById(R.id.mapview1); mc = mapView.getController(); protected boolean isRouteDisplayed() { return false; } private class MyLocationListener implements LocationListener public void onLocationChanged(Location loc) { if (loc != null) { Toast.makeText(getBaseContext(), "Location changed : Lat: " + loc.getLatitude() + " Lng: " + loc.getLongitude(), Toast.LENGTH_SHORT).show(); GeoPoint p = new GeoPoint( (int) (loc.getLatitude() * 1E6), (int) (loc.getLongitude() * 1E6)); mc.animateTo(p); mc.setZoom(16); mapView.invalidate(); public void onProviderDisabled(String provider) { public void onProviderEnabled(String provider) { public void onStatusChanged(String provider, int status, Bundle extras) { }

View the Location on the Map

Internet Layers The Internet, is based on a layered architecture called the TCP/IP stack. Link Layer ◦Protocols: ARP and RARP Internet Layer ◦Protocols: IP, ping, etc. Transport ◦Protocols: TCP and UDP Application Layer ◦Protocols: HTTP, FTP, DNS, etc.

Client-Server Communication A server machine is identified on the Internet by some IP address Daemons are the processes running in the background which are listening all the time for connection requests from clients on a particular port number. Once a connection request comes into the server on a given port, the corresponding daemon can choose to accept it, and if so, a connection is established. Then the application layer protocol is typically used for the client to get or send data to the server.

Programming Tutorial 2 Accessing a website from the Android Emulator

Required Packages

Layout

Link Activity and View View object may have an integer ID associated with it To get the reference of the view object in activity Button myButton = (Button)findViewById(R.id.my_button);

Adding Event to View Object View.OnClickListener() ◦Interface definition for a callback to be invoked when a view is clicked. onClick(View v) ◦Called when a view has been clicked. Inside this function you can specify what actions to perform on a click.

Strings.xml

AndroidManifest.xml

Network Settings If you are using the emulator then there are limitations. Each instance of the emulator runs behind a virtual router/firewall service that isolates it from your development machine's network interfaces and settings and from the internet. Communication with the emulated device may be blocked by a firewall program running on your machine. Reference

Behind Proxy Server

App to Download jpg file Step1 Add permissions to AndroidManifest.xml Step 2 Import files import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast;

App to Download jpg file Step 3 Writing OpenHttpConnection() ◦To open a connection to a HTTP server using OpenHttpConnection() ◦We first create an instance of the URL class and initialize it with the URL of the server ◦When the connection is established, you pass this connection to an URLConnection object. To check if the connection established is using a HTTP protocol. ◦The URLConnection object is then cast into an HttpURLConnection object and you set the various properties of the HTTP connection. ◦Next, you connect to the HTTP server and get a response from the server. If the response code is HTTP_OK, you then get the InputStream object from the connection so that you can begin to read incoming data from the server ◦The function then returns the InputStream object obtained.

App to Download jpg file public class HttpDownload extends Activity { /** Called when the activity is first public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } private InputStream OpenHttpConnection(String urlString) throws IOException { InputStream in = null; int response = -1; URL url = new URL(urlString); URLConnection conn = url.openConnection(); if (!(conn instanceof HttpURLConnection)) throw new IOException("Not an HTTP connection"); try{ HttpURLConnection httpConn = (HttpURLConnection) conn; httpConn.setAllowUserInteraction(false); httpConn.setInstanceFollowRedirects(true); httpConn.setRequestMethod("GET"); httpConn.connect(); response = httpConn.getResponseCode(); if (response == HttpURLConnection.HTTP_OK) { in = httpConn.getInputStream(); } } catch (Exception ex) { throw new IOException("Error connecting"); } return in; }

App to Download jpg file Step 4 Modify the Main.xml code <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> <TextView android:textStyle="bold" android:layout_width="wrap_content" android:layout_height="wrap_content" />

App to Download jpg file Step 5 writing DownloadImage() ◦The DownloadImage() function takes in a string containing the URL of the image to download. ◦It then calls the OpenHttpConnection() function to obtain an InputStream object for reading the image data. ◦The InputStream object is sent to the decodeStream() method of the BitmapFactory class. ◦The decodeStream() method decodes an InputStream object into a bitmap. ◦The decoded bitmap is then returned by the DownloadImage() function. private Bitmap DownloadImage(String URL) { Bitmap bitmap = null; InputStream in = null; try { in = OpenHttpConnection(URL); bitmap = BitmapFactory.decodeStream(in); in.close(); } catch (IOException e1) { e1.printStackTrace(); } return bitmap; }

Step 6 T est the DownloadImage() function, modify the onCreate() event as public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Bitmap bitmap = DownloadImage( " img = (ImageView) findViewById(R.id.img); img.setImageBitmap(bitmap); }

App to Download jpg file Step 7:Output

Programming Tutorial 3 Transmitting SMS messages across the network

Intent and IntentFilter Intents request for an action to be performed and supports interaction among the Android components. ◦For an activity it conveys a request to present an image to the user ◦For broadcast receivers, the Intent object names the action being announced. Intent Filter Registers Activities, Services and Broadcast Receivers(as being capable of performing an action on a set of data).

SMS Sending STEP 1 ◦In the AndroidManifest.xml file, add the two permissions - SEND_SMS and RECEIVE_SMS. STEP 2 ◦In the main.xml, add Text view to display "Enter the phone number of recipient“ and "Message" ◦EditText with id txtPhoneNo and txtMessage ◦Add the button ID "Send SMS“

SMS Sending Step 3 Import Classes and Interfaces import android.app.Activity; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsManager; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;

SMS Sending Step 4 Write the SMS class public class SMS extends Activity { Button btnSendSMS; EditText txtPhoneNo; EditText txtMessage; /** Called when the activity is first created. public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnSendSMS = (Button) findViewById(R.id.btnSendSMS); txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo); txtMessage = (EditText) findViewById(R.id.txtMessage); btnSendSMS.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String phoneNo = txtPhoneNo.getText().toString(); String message = txtMessage.getText().toString(); if (phoneNo.length()>0 && message.length()>0) sendSMS(phoneNo, message); else Toast.makeText(getBaseContext(), "Please enter both phone number and message.", Toast.LENGTH_SHORT).show(); } }); } Input from the user (i.e., the phone no, text message and sendSMS is implemented).

SMS Sending Step 5 ◦To send an SMS message, you use the SmsManager class. And to instantiate this class call getDefault() static method. ◦The sendTextMessage() method sends the SMS message with a PendingIntent. ◦The PendingIntent object is used to identify a target to invoke at a later time. private void sendSMS(String phoneNumber, String message) { PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, SMS.class), 0); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phoneNumber, null, message, pi, null); }

SMS Sending

Receiving SMS Step 1

Receiving SMS Step 2 ◦In the AndroidManifest.xml file add the element so that incoming SMS messages can be intercepted by the SmsReceiver class. <action android:name= "android.provider.Telephony.SMS_RECEIVED" />

Receiving SMS Step 3 import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.SmsMessage; import android.widget.Toast;

Receiving SMS Step 4 public class SmsReceiver extends BroadcastReceiver public void onReceive(Context context, Intent intent) { //---get the SMS message passed in--- Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null; String str = ""; if (bundle != null){ //---retrieve the SMS message received--- Object[] pdus = (Object[]) bundle.get("pdus"); msgs = new SmsMessage[pdus.length]; for (int i=0; i<msgs.length; i++) { msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); str += "SMS from " + msgs[i].getOriginatingAddress(); str += " :"; str += msgs[i].getMessageBody().toString(); str += "\n"; } //---display the new SMS message--- Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); } In the SmsReceiver class, extend the BroadcastReceiver class and override the onReceive() method. The message is attached to the Intent The messages are stored in a object array PDU format. To extract each message, you use the static createFromPdu() method from the SmsMessage class. The SMS message is then displayed using the Toast class

Receiving SMS

Conclusions What is Android? What are the sensor and networking capabilities in Android? How to use location data and Google maps in Android? How to access websites? How to send SMS messages across the network? Questions/Comments?

Resources Ableson, Frank. “Tapping into Android’s sensors.” January 30, Ableson, Frank; Collins, Charlie; Sen, Robi. Unlocking Android, A Developer’s Guide. Greenwich: Manning Publications Co Android Development Guide. January 30, Lee, Wei-Meng. “Using Google Maps in Android.” mobiforge.com. January 30, Lee, Wei-Meng. “You Are Here: Using GPS and Google Maps in Android.” January 30, Lee, Wei-Meng “SMS Messaging in Android” mobiforge.com. January 30, Lee, Wei-Meng “Connecting to the Web: I/O Programming in Android” November 5, 2008 Android” Open Handset Alliance, Patterson, Don. “Android Development Guide.” getsatisfaction.com. January 30, January 30, Xianhua Shu; Zhenjun Du; Rong Chen, "Research on Mobile Location Service Design Based on Android," Wireless Communications, Networking and Mobile Computing, WiCom '09. 5th International Conference on, vol., no., pp.1-4, Sept