Вы находитесь на странице: 1из 36

SynapseIndia Android

Application
Development Tutorial
cases part 2

Programming Tutorial 2
Accessing a website from the Android Emulator

Required Packages

Layout

View

object may have an integer ID associated


with it
android:id="@+id/my_button

To

get the reference of the view object in activity

Button myButton =
(Button)findViewById(R.id.my_button);

Link Activity and View

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.

Adding Event to View Object

Strings.xml

AndroidManifest.xml

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.

Network Settings

Behind Proxy Server

Behind Proxy Server

Behind Proxy Server

Behind Proxy Server

Behind Proxy Server

Behind Proxy Server

Step1 Add permissions to AndroidManifest.xml


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

Step

2 Import files

import
import
import
import
import
import

java.io.IOException;
java.io.InputStream;
java.io.InputStreamReader;
java.net.HttpURLConnection;
java.net.URL;
java.net.URLConnection;

import
import
import
import

android.app.Activity;
android.graphics.Bitmap;
android.graphics.BitmapFactory;
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
created.*/
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

try{
HttpURLConnection httpConn =
(HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
response = httpConn.getResponseCode();

private InputStream OpenHttpConnection(String


urlString) throws IOException {
InputStream in = null;
int response = -1;

if (response ==
HttpURLConnection.HTTP_OK) {
in = httpConn.getInputStream();
}
} catch (Exception ex) {
throw new IOException("Error
connecting");
}
return in;

URL url = new URL(urlString);


URLConnection conn = url.openConnection();
if (!(conn instanceof HttpURLConnection))
throw new IOException("Not an HTTP
connection");

}
}

App to Download jpg file

Step 4 Modify the Main.xml code


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

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

App to Download jpg file

Step

6 Test 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);
}

Step

7:Output

App to Download jpg file

Programming Tutorial 3
Transmitting SMS messages across the network

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

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
import
import
import
import
import
import
import
import
import

3 Import Classes and Interfaces


android.app.Activity;
android.app.PendingIntent;
android.content.Intent;
android.os.Bundle;
android.telephony.SmsManager;
android.view.View;
android.widget.Button;
android.widget.EditText;
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. */
@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();
}
});
}
}

SMS Sending

Input from the


user (i.e., the
phone no, text
message and
sendSMS is
implemented).

Step

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

SMS Sending

Step

Receiving SMS

Step

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

Step
import
import
import
import
import

android.content.BroadcastReceiver;
android.content.Context;
android.content.Intent;
android.telephony.SmsMessage;
android.widget.Toast;

Receiving SMS

Step 4
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 = "";

In the SmsReceiver class,


extend the
BroadcastReceiver class and
override the onReceive()
method. The message is
attached to the Intent

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

Receiving SMS

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

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?

Conclusions

Ableson, Frank. Tapping into Androids 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 Developers 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
Androidhttp://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
Xianhua Shu; 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. 2009
http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5302615&isnumber=5300799

Resources