410 likes | 525 Views
Client / Server Programming in Android. Eclipse IDE Android Development Tools (ADT) Android SDK. http://www.vogella.com/articles/Android/article.html. TCP Echo Client (1). Android Mobile Development. Install Eclipse IDE Install Android Development Tools (ADT) Install Android SDK
E N D
Client / Server Programmingin Android Eclipse IDE Android Development Tools (ADT) Android SDK http://www.vogella.com/articles/Android/article.html
Android Mobile Development • Install Eclipse IDE • Install Android Development Tools (ADT) • Install Android SDK • Install specific Android Versions through SDK Manager • Create / install an Android Virtual Device (AVD)
Provide a unique package name (reverse Domain Name + project)
EchoClientActivity.java package edu.umkc.cotterr.echo; import android.app.Activity; android.os.Bundle; android.view.View; android.widget.EditText; android.widget.Toast; java.net.*; java.io.*; import edu.umkc.cotterr.echo.R; public class EchoClientActivity extends Activity { /** Called when the activity is first created. */ private EditText portNumber; private EditText hostName; private EditText inputMsg; private EditText resultMsg; private InetAddress ia; private Socket mySocket; private InputStream isIn; private PrintStream psOut; private byte abIn[];
EchoClientActivity.java public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); hostName = (EditText) findViewById(R.id.editText1); portNumber = (EditText) findViewById(R.id.editText2); resultMsg = (EditText) findViewById(R.id.editText3); inputMsg = (EditText) findViewById(R.id.editText4); }
EchoClientActivity.java public void myEchoHandler(View view) { switch (view.getId()) { case R.id.button1: /* This is the connect button String sHostName = hostName.getText().toString(); int iPortNumber = Integer.parseInt(portNumber.getText().toString()); try { ia = InetAddress.getByName(sHostName); mySocket = new Socket (ia, iPortNumber); Toast.makeText(this,"We are now connected to: " + hostName + "\n", Toast.LENGTH_LONG).show(); } catch (Exception ex) { Toast.makeText(this,"Connect to " + hostName + "failed. Exception" + ex + "\n", Toast.LENGTH_LONG).show(); } break;
EchoClientActivity.java case R.id.button2: /* This is the send data button */ String sResponse, sTemp String sInputMsg = inputMsg.getText().toString(); intiNumRead; abIn= new byte[1024]; try { isIn = mySocket.getInputStream(); psOut = new PrintStream(mySocket.getOutputStream()); psOut.print(sInputMsg); iNumRead = isIn.read(abIn,0,1024); sTemp = new String(abIn, 0, iNumRead); sResponse = "We got back: " + sTemp; resultMsg.setText(sResponse); } catch (Exception ex) { Toast.makeText(this,"Send data failed. Exception" + ex + "\n", Toast.LENGTH_LONG).show(); } break;
EchoClientActivity.java case R.id.button3: // This is the quit button. String sTemp2; try { mySocket.close(); inputMsg.setText(""); sTemp2 = new String ("Goodbye ..."); resultMsg.setText(sTemp2); } catch (Exception ex) { Toast.makeText(this,"Close socket failed. Exception“ + ex + "\n", Toast.LENGTH_LONG).show(); } } //end of switch } //end of myEchoHandler } //end of EchoClientActivity
R.java package edu.umkc.cotterr.echo; public final class R { public static final class attr { } public static final class color { public static final intbackgroundColor=0x7f050000; } public static final class drawable { public static final intic_launcher=0x7f020000; } public static final class layout { public static final int main=0x7f030000; }
R.java public static final class id { public static final int button1=0x7f060004; public static final int button2=0x7f060008; public static final int button3=0x7f060009; public static final int editText1=0x7f060001; public static final int editText2=0x7f060003; public static final int editText3=0x7f06000b; public static final int editText4=0x7f060006; public static final int linearLayout1=0x7f060007; public static final int textView1=0x7f060000; public static final int textView2=0x7f060002; public static final int textView3=0x7f060005; public static final int textView4=0x7f06000a; }
R.java public static final class string { public static final intConvertButton=0x7f040002; public static final intDefaultHost=0x7f040003; public static final intDefaultPort=0x7f040004; public static final intapp_name=0x7f040001; public static final intconnectButton=0x7f040007; public static final int hello=0x7f040000; public static final int hostname=0x7f040005; public static final int input=0x7f040008; public static final int port=0x7f040006; public static final int quit=0x7f04000b; public static final int result=0x7f040009; public static final int send=0x7f04000a; } }
main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent“ android:layout_height="fill_parent" android:background="@color/backgroundColor" android:orientation="vertical" > <TextView android:id="@+id/textView1“ android:layout_width="wrap_content“ android:layout_height="wrap_content" android:text="@string/hostname" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/editText1“ android:layout_width="201dp" android:layout_height="wrap_content“ android:hint="@string/DefaultHost“ android:inputType="text" > <requestFocus /> </EditText>
main.xml <TextView android:id="@+id/textView2" android:layout_width="wrap_content“ android:layout_height="wrap_content" android:text="@string/port" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/editText2“ android:layout_width="73dp" android:layout_height="wrap_content" android:hint="@string/DefaultPort“ android:inputType="text" android:width="100dp" /> <Button android:id="@+id/button1" android:layout_width="wrap_content“ android:layout_height="wrap_content" android:onClick="myEchoHandler" android:text="@string/connectButton" />
main.xml <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/input" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/editText4" android:layout_width="match_parent" android:inputType="text" android:layout_height="wrap_content" />
main.xml <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" > <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="myEchoHandler" android:text="@string/send" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/quit" android:onClick="myEchoHandler"/> </LinearLayout>
main.xml <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/result" android:textAppearance="?android:attr/textAppearanceLarge" /> <EditText android:id="@+id/editText3" android:layout_width="match_parent" android:layout_height="wrap_content" android:height="100dp" android:inputType="textMultiLine" /> </LinearLayout>
strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, EchoClientActivity!</string> <string name="app_name">Bob\'s EchoClient</string> <color name="backgroundColor">#002864</color> <string name="ConvertButton">Convert</string> <string name="DefaultHost">localhost</string> <string name="DefaultPort">3456</string> <string name="hostname">Hostname</string> <string name="port">Port</string> <string name="connectButton">Connect</string> <string name="input">User Input</string> <string name="result">Echo Results</string> <string name="send">Send Echo</string> <string name="quit">Exit Echo</string> </resources>
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="edu.umkc.cotterr.echo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.INTERNET"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".EchoClientActivity" 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>
Summary • Android Development has strong support in Eclipse IDE • Core Android language is Java, with a full library of Android classes