Android application development tutorial
Download
1 / 67

android application development tutorial - PowerPoint PPT Presentation


  • 815 Views
  • Updated On :

Android Application Development Tutorial. Accessing Sensors and the Network Deepa Shinde and Cindy Atherton. Background Introduction to Android Overview of Sensors Programming Tutorial 1: Tracking location with GPS and Google Maps Overview of Networking

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'android application development tutorial' - Leo


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Android application development tutorial l.jpg

Android Application Development Tutorial

Accessing Sensors and the Network

Deepa Shinde and Cindy Atherton


Topics l.jpg

  • 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

Topics


Introduction to android l.jpg
Introduction to Android

A brief guide to the Android Application Development Environment


Background l.jpg

Background


Update history l.jpg

Update History



Android and the hardware l.jpg

  • Built-in Apps ≡ Apps created in SDK

  • Leverage Linux kernel to interface with hardware

  • Open source platform promotes development from global community

Android and the Hardware


Android features l.jpg

  • 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 Features



Application fundamentals l.jpg

  • 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 Fundamentals


Application components l.jpg

  • 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

Application Components


Installation l.jpg

  • http://developer.android.com/sdk/installing.html

  • 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

Installation


Overview of sensors l.jpg
Overview of Sensors

The Android Sensor Platform and how to use it


Open source platform l.jpg

Open Source Platform



Sensor and sensormanager l.jpg

  • 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.

Sensor and SensorManager


Programming tutorial l.jpg
Programming Tutorial

Simulating an Android application that accesses positioning sensors


Preparing for the tutorial l.jpg

  • 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.

Preparing for the Tutorial


Get a google maps api key l.jpg

  • A Google Maps API key is required to integrate Google Maps into your Android application.

  • To apply for a key:

    • Locate the SDK debug certificate in the default folder of "C:\Documents and Settings\<username>\Local Settings\Application Data\Android". The filename of the debug keystore is debug.keystore.

    • Copy the debug.keystore file to a folder named C:\Android\.

    • Open the command window and navigate to C:\Program Files\Java\<JDK_version_number>\bin to locate the Keytool.exe.

    • Execute the following to extract the MD5 fingerprint:

      keytool.exe -list -alias androiddebugkey -keystore "C:\Android\debug.keystore" -storepass android -keypass android

    • Copy the MD5 certificate fingerprint and navigate your web browser to: http://code.google.com/android/maps-api-signup.html.

    • 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:

      http://mobiforge.com/developing/story/using-google-maps-android

Get a Google Maps API Key


Create an android virtual device avd l.jpg

  • Defines the system image and device settings used by the Emulator

  • To create an AVD in Eclipse:

    • Select Window > Android SDK and AVD Manager.

      The Android SDK and AVD Manager displays.

    • Make sure the entry for Virtual Devices is selected and click New.

      The Create new AVD window displays.

    • Enter a Name for the AVD.

    • Select Google APIs (API level 3) as the Target.

    • Click Create AVD.

    • Close the Android SDK and AVD Manager.

Create an Android Virtual Device (AVD)


Create the android project l.jpg

  • To create the project in Eclipse: Emulator

    • Select File > New > Project.

    • Select Android Project in the Android folder and click Next.

    • Enter GPSSimulator as the Project Name.

    • Select Google APIs (Platform 1.5) as the Build Target.

    • Enter GPSSimulator as the Application name.

    • Enter com.android.gpssimulator as the Package name.

    • Enter GPSSimulator as the Activity name.

    • Click Finish.

Create the Android Project



Modify the androidmanifest xml file l.jpg

  • Add permissions for GPS Emulator

  • To modify the AndroidManifest.xml file:

    • Click on the res folder in the GPSSimulator project.

    • Double-click AndroidManifest.xml to display the GPSSimulator Manifest.

    • Enter the following lines before the application tag.

      <uses-permission android:name=“android.permission.ACCESS_FINE_LOCATION” />

    • Save the changes to the file.

Modify the AndroidManifest.xml File


Add locationmanager to get updates l.jpg

public class EmulatorGPSSimulator extends Activity

{

private LocationManager lm;

private LocationListenerlocationListener;

// Called when the activity is first created.

@Override

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 LocationManager to get Updates


Add mylocationlistener l.jpg

private class EmulatorMyLocationListener implements LocationListener {

@Override

public void onLocationChanged(Location loc) {

if (loc != null) {

Toast.makeText(getBaseContext(),

"Location changed : Lat: " + loc.getLatitude() +

" Lng: " + loc.getLongitude(),

Toast.LENGTH_SHORT).show();

}

}

@Override

public void onProviderDisabled(String provider) {

// TODO Auto-generated method stub

}

@Override

public void onProviderEnabled(String provider) {

// TODO Auto-generated method stub

}

@Override

public void onStatusChanged(String provider, int status, Bundle extras) {

// TODO Auto-generated method stub

}

}

Add MyLocationListener


Test the gpssimulator l.jpg

  • To test in Eclipse: Emulator

    • Switch to DDMS view.

    • Find the Location Controls in the Emulator Control tab.

    • Click the GPX tab and click Load GPX.

    • Locate and select the GPX file.

    • Click Play to begin sending coordinates to the Emulator.

Test the GPSSimulator


Add ability to use google maps l.jpg

  • Update the Manifest with two lines. Emulator

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

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.android.GPSSimulator">

    <uses-permission

    android:name="android.permission.INTERNET" />

    <uses-permission

    android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application android:icon="@drawable/icon"

    android:label="@string/app_name">

    <uses-library android:name="com.google.android.maps" />

    <activity android:name=".GPS" 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>

Add ability to use Google Maps


Add mapview to main xml l.jpg

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<com.google.android.maps.MapView

android:id="@+id/mapview1"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:enabled="true"

android:clickable="true"

android:apiKey=“Your API Key Here" />

</LinearLayout>

Add MapView to main.xml


Modify gpssimulator to use google maps l.jpg

public class EmulatorGPSSimulator extends MapActivity {

private LocationManager lm;

private LocationListenerlocationListener;

private MapViewmapView;

private MapController mc;

// Called when the activity is first created.

@Override

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();

}

@Override

protected booleanisRouteDisplayed() {

return false;

}

private class MyLocationListener implements LocationListener {

@Override

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();

}

}

@Override

public void onProviderDisabled(String provider) {

}

@Override

public void onProviderEnabled(String provider) {

}

@Override

public void onStatusChanged(String provider, int status, Bundle extras) {

}

}

}

Modify GPSSimulator to use Google Maps



Internet layers l.jpg
Internet Layers Emulator

  • 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 l.jpg

  • 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.

Client-Server Communication


Programming tutorial 2 l.jpg
Programming Tutorial 2 address

Accessing a website from the Android Emulator



Layout l.jpg
Layout address


Link activity and view l.jpg

Link Activity and View


Adding event to view object l.jpg

  • View.OnClickListener() address

    • 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.

Adding Event to View Object


Strings xml l.jpg
Strings.xml address



Network settings l.jpg

  • 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

Network Settings


Behind proxy server l.jpg
Behind Proxy Server 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.


Behind proxy server42 l.jpg
Behind Proxy Server 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.


Behind proxy server43 l.jpg
Behind Proxy Server 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.


Behind proxy server44 l.jpg
Behind Proxy Server 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.


Behind proxy server45 l.jpg
Behind Proxy Server 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.


Behind proxy server46 l.jpg
Behind Proxy Server 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.


App to download jpg file l.jpg

  • Step1 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.Add permissions to AndroidManifest.xml

    <uses-permission android:name="android.permission.INTERNET" />

  • 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


App to download jpg file48 l.jpg

  • Step 3 Writing OpenHttpConnection() 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.

    • 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


App to download jpg file49 l.jpg

public class HttpDownload extends Activity { 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.

/** Called when the activity is first created.*/

@Override

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


App to download jpg file50 l.jpg

  • Step 4 Modify the Main.xml code 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.

    <?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"

    >

    <ImageView

    android:id="@+id/img"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_gravity="center"

    />

    <TextView

    android:id="@+id/text"

    android:textStyle="bold"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    />

    </LinearLayout>

App to Download jpg file


App to download jpg file51 l.jpg

  • Step 5 writing DownloadImage() 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.

    • 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;

}

App to Download jpg file


Slide52 l.jpg

  • Step 6 T 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.est the DownloadImage() function, modify the onCreate() event as follows

    @Override

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    Bitmap bitmap = DownloadImage(

    "http://www.streetcar.org/mim/cable/images/cable-01.jpg");

    img = (ImageView) findViewById(R.id.img);

    img.setImageBitmap(bitmap);

    }


App to download jpg file53 l.jpg

  • Step 7:Output 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.

App to Download jpg file


Programming tutorial 3 l.jpg
Programming Tutorial 3 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.

Transmitting SMS messages across the network


Intent and intentfilter l.jpg

  • 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).

Intent and IntentFilter


Sms sending l.jpg

  • STEP 1 interaction among the Android components.

    • 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


Sms sending57 l.jpg

  • Step 3 Import Classes and Interfaces interaction among the Android components.

  • 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


Sms sending58 l.jpg

  • Step 4 Write the SMS class interaction among the Android components.

    public class SMS extends Activity {

    Button btnSendSMS;

    EditTexttxtPhoneNo;

    EditTexttxtMessage;

    /** Called when the activity is first created. */

    @Override

    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


Sms sending59 l.jpg

  • Step 5 interaction among the Android components.

    • 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);

      SmsManagersms = SmsManager.getDefault();

      sms.sendTextMessage(phoneNumber, null, message, pi, null);

      }

SMS Sending


Sms sending60 l.jpg
SMS Sending interaction among the Android components.


Receiving sms l.jpg

  • Step 1 interaction among the Android components.

Receiving SMS


Receiving sms62 l.jpg

  • Step 2 interaction among the Android components.

    • In the AndroidManifest.xml file add the <receiver> element so that incoming SMS messages can be intercepted by the SmsReceiver class.

      <receiver android:name=".SmsReceiver">

      <intent-filter>

      <action android:name=

      "android.provider.Telephony.SMS_RECEIVED" />

      </intent-filter>

      </receiver>

Receiving SMS


Receiving sms63 l.jpg

  • Step 3 interaction among the Android components.

    import android.content.BroadcastReceiver;

    import android.content.Context;

    import android.content.Intent;

    import android.telephony.SmsMessage;

    import android.widget.Toast;

Receiving SMS


Receiving sms64 l.jpg

  • Step 4 interaction among the Android components.

    public class SmsReceiver extends BroadcastReceiver {

    @Override

    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 (inti=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


Receiving sms65 l.jpg
Receiving SMS interaction among the Android components.


Conclusions l.jpg

  • What is Android? interaction among the Android components.

  • 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?

Conclusions


Resources l.jpg

  • Ableson interaction among the Android components., Frank. “Tapping into Android’s sensors.” www.ibm.com. January 30, 2010. http://www.ibm.com/developerworks/opensource/library/os-android-sensor/index.html

  • Ableson, Frank; Collins, Charlie; Sen, Robi. Unlocking Android, A Developer’s Guide. Greenwich: Manning Publications Co. 2009.

  • Android Development Guide. January 30, 2010. http://developer.android.com/guide/index.html

  • Lee, Wei-Meng. “Using Google Maps in Android.” mobiforge.com. January 30, 2010. http://mobiforge.com/developing/story/using-google-maps-android

  • Lee, Wei-Meng. “You Are Here: Using GPS and Google Maps in Android.” www.devx.com. January 30, 2010. http://www.devx.com/wireless/Article/39239/1954

  • Lee, Wei-Meng “SMS Messaging in Android” mobiforge.com. January 30, 2010

  • http://mobiforge.com/developing/story/sms-messaging-android

  • Lee, Wei-Meng “Connecting to the Web: I/O Programming in Android” November 5, 2008   Android”http://www.devx.com/wireless/Article/39810

  • Open Handset Alliance, http://www.openhandsetalliance.com/

  • Patterson, Don. “Android Development Guide.” getsatisfaction.com. January 30, 2010. http://getsatisfaction.com/luci/topics/android_development_guide

  • www.androidcompetencycenter.com. January 30, 2010. http://www.androidcompetencycenter.com/2009/06/accessing-device-sensors

  • XianhuaShu; Zhenjun Du; Rong Chen, "Research on Mobile Location Service Design Based on Android," Wireless Communications, Networking and Mobile Computing, 2009. WiCom '09. 5th International Conference on , vol., no., pp.1-4, 24-26 Sept. 2009http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5302615&isnumber=5300799

Resources


ad