1 / 8

Android Introduction

Develop a simple chat app using UDP broadcast to send and receive messages on the local network. Enhance the app further by adding features like message names, images, and handling app lifecycle.

hitt
Download Presentation

Android Introduction

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Android Introduction Hello Threads @2010 Mihail L. Sichitiu

  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%) You: Your text @2010 Mihail L. Sichitiu

  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 You: Your text @2010 Mihail L. Sichitiu

  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 @2010 Mihail L. Sichitiu

  5. Main Activity (HelloThreads) • ClassMembers • EditTextmsg; // For typing the message • Button send; // For sending the message • ListViewmsgList; // For displaying the message list • ArrayAdapter <String>receivedMessages; // Holds the list of messages • ServerThreadmyThread; // 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 ArrayAdapter<String>(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( ) case PACKET_CAME: String incomingMessage = (String) msg.obj; receivedMessages.add("You: "+incomingMessage); @2010 Mihail L. Sichitiu

  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) • DatagramSocketserverSocket; // Socket used both for sending and receiving • booleansocketOK=true; // True as long as we don't get socket errors • InetAddressmyBcastIPAddress; // my broadcast IP addresses • InetAddressmyIPAddress; // 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

  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 byte[4]; for (int k = 0; k < 4; k++) quads[k] = (byte) ((myIntegerIPAddress>> 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

  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 @2010 Mihail L. Sichitiu

More Related