Embed
Email

chat

Document Sample

Shared by: xiagong0815
Categories
Tags
Stats
views:
5
posted:
2/14/2012
language:
pages:
8
Android Introduction

Hello Threads









@2010 Mihail L. Sichitiu 1

Goal

 Create a basic chat

application that uses

broadcast UDP to send and

receive messages on the

local network (75%)

 Improve the chat application

(25%)









You: Your text









@2010 Mihail L. Sichitiu 2

Layout

ListView showing

both the messages sent as

well as received









EditText allowing users

to enter text to be sent









You: Your text Send button –

sends the text







@2010 Mihail L. Sichitiu 3

Application Structure

Main Activity ServerThread





Constructor

OnCreate( ) Open the Socket

Create the thread If successful – “Server Started”

Find the broadcast IP Address

Start the thread Find the IP Address







Message run( )

while (socketStillOpen){

Handler receive packet

display Message

send reply

OnDestroy( ) }

close the socket

sendPacket( )

send UDP

OnClickListener( )

Send Message





@2010 Mihail L. Sichitiu 4

Main Activity (HelloThreads)

 ClassMembers

 EditText msg; // For typing the message

 Button send; // For sending the message

 ListView msgList; // For displaying the message list

 ArrayAdapter receivedMessages; // Holds the list of messages

 ServerThread myThread; // The server thread handling all networking

 Handler myHandler...... Similar to the one in HelloThreads

case PACKET_CAME:

String incomingMessage = (String) msg.obj;

 OnCreate( ) receivedMessages.add("You: "+incomingMessage);



 Get handles (findViewById) to all GUI elements

 msgList = (ListView)findViewById(R.id.msgList);

 receivedMessages = new ArrayAdapter(this, R.layout.message);

 msgList.setAdapter(receivedMessages);

 Create ServerThread: myThread=new

ServerThread(getApplicationContext(),mHandler)

 Start the Thread: myThread.start();

 Register the OnClickListener for the Send Button



 OnDestroy( )

 OnClickListener( )

@2010 Mihail L. Sichitiu 5

ServerThread

 public class ServerThread extends Thread

 Class Members

 Handler mHandler; // Handler for messages in the main thread

 Context mContext; // Context to the application (for getting ip Addresses)

 DatagramSocket serverSocket; // Socket used both for sending and receiving

 boolean socketOK=true; // True as long as we don't get socket errors

 InetAddress myBcastIPAddress; // my broadcast IP addresses

 InetAddress myIPAddress; // my IP addresses



 public ServerThread(Context currentContext,Handler handler){

 mContext = currentContext;

 mHandler = handler;

 try

 serverSocket = new DatagramSocket(PORT);



 serverSocket.setBroadcast(true); ... catch and handle the exception



 try getMyWiFiBcastAndIPAddress(); ... catch and handle the exception

 run( ) – similar to HelloThreads, without the reply

 sendPacket(String msg) – similar to UDP sender in HelloSockets



@2010 Mihail L. Sichitiu 6

Getting the IP Address:

getMyWiFiBcastAndIPAddress( );

WifiManager mWifi = (WifiManager)

(mContext.getSystemService(Context.WIFI_SERVICE));

WifiInfo info = mWifi.getConnectionInfo();

DhcpInfo dhcp = mWifi.getDhcpInfo();

int myIntegerIPAddress = dhcp.ipAddress;

int myIntBroadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask;

byte[] quads = new byte[4];

for (int k = 0; k > k * 8) & 0xFF);

try{

InetAddress myIPAddress = InetAddress.getByAddress(quads);

return myIPAddress;

}catch(Exception e){

if(D) Log.e(TAG,"Cannot Get My Own IP Address");

return null

}



@2010 Mihail L. Sichitiu 7

Improvements

 Your choice of examples – below are only examples

 Different improvements are worth different amount of points

 Max points 125%

 Examples (only examples – go wild!):

 Add names to the messages

 Add images

 Add voice

 Add preferences

 Handle Application lifecycle (on restart, on pause, on resume, etc.)

 Vibrate or notify on receipt of a new message

 Handle landscape/portrait

 Localize it

 Looks (background, icon, button, etc.)

 Make utility for saving all messages in a file







@2010 Mihail L. Sichitiu 8


Other docs by xiagong0815
ENUS108358
Views: 0  |  Downloads: 0
Fastener 3
Views: 0  |  Downloads: 0
2.2.3
Views: 1  |  Downloads: 0
dartford_e_performance_summary
Views: 0  |  Downloads: 0
bscdeanslist
Views: 0  |  Downloads: 0
efiworkshopzschockejansky_abstract
Views: 0  |  Downloads: 0
pp_chapter_06b
Views: 0  |  Downloads: 0
2011-General Instructions-fr-ExecSec
Views: 0  |  Downloads: 0
Review 2010 Russia
Views: 0  |  Downloads: 0
Replacing an existing network printer
Views: 0  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!