Android Introduction - PowerPoint PPT Presentation

About This Presentation
Title:

Android Introduction

Description:

Android Introduction Hello Threads * * Goal Create a basic chat application that uses broadcast UDP to send and receive messages on the local network (75%) Improve ... – PowerPoint PPT presentation

Number of Views:86
Avg rating:3.0/5.0
Slides: 9
Provided by: mls9
Category:

less

Transcript and Presenter's Notes

Title: Android Introduction


1
Android Introduction
  • Hello Threads

2
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)

3
Layout
ListView showing both the messages sent as well
as received
EditText allowing users to enter text to be sent
Send button sends the text
4
Application Structure
ServerThread
Main Activity
Constructor Open the Socket If successful
Server Started Find the broadcast IP
Address Find the IP Address
OnCreate( ) Create the thread Start the
thread
run( ) while (socketStillOpen) receive
packet display Message send reply
Message Handler
OnDestroy( ) close the socket
sendPacket( ) send UDP
OnClickListener( ) Send Message
5
Main Activity (HelloThreads)
  • ClassMembers
  • EditText msg // For typing the message
  • Button send // For sending the
    message
  • ListView msgList // For displaying the
    message list
  • ArrayAdapter ltStringgtreceivedMessages // Holds
    the list of messages
  • ServerThread myThread // The server thread
    handling all networking
  • Handler myHandler...... Similar to the one in
    HelloThreads
  • OnCreate( )
  • Get handles (findViewById) to all GUI elements
  • msgList (ListView)findViewById(R.id.msgList)
  • receivedMessages new ArrayAdapterltStringgt(this,
    R.layout.message)
  • msgList.setAdapter(receivedMessages)
  • Create ServerThread myThreadnew
    ServerThread(getApplicationContext(),mHandler
    )
  • Start the Thread myThread.start()
  • Register the OnClickListener for the Send Button
  • OnDestroy( )
  • OnClickListener( )

case PACKET_CAME String incomingMessage
(String) msg.obj receivedMessages.add("You
"incomingMessage)
6
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 socketOKtrue // 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

7
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 byte4
  • for (int k 0 k lt 4 k)
  • quadsk (byte) ((myIntegerIPAddressgtgt k
    8) 0xFF)
  • try
  • InetAddress myIPAddress InetAddress.getByAdd
    ress(quads)
  • return myIPAddress
  • catch(Exception e)
  • if(D) Log.e(TAG,"Cannot Get My Own IP
    Address")
  • return null

8
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
Write a Comment
User Comments (0)
About PowerShow.com