Date post: | 22-Dec-2015 |
Category: |
Documents |
Upload: | imogen-flynn |
View: | 246 times |
Download: | 2 times |
Client / Server Programmingin Android
Eclipse IDEAndroid Development Tools (ADT)
Android SDK
http://www.vogella.com/articles/Android/article.html
TCP Echo Client (1)
cs423- cotter 2
Android Mobile Development
1. Install Eclipse IDE2. Install Android Development Tools (ADT)3. Install Android SDK4. Install specific Android Versions through SDK
Manager5. Create / install an Android Virtual Device
(AVD)
cs423- cotter 3
Android SDK / AVD Managers
cs423- cotter 4
Android SDK Manager
cs423- cotter 5
AVD Manager
cs423- cotter 6
From file menu, select “New” then
“Project”
cs423- cotter 7
Identify project name
cs423- cotter 8
Identify the desired SDK (based on the target
device)
cs423- cotter 9
Provide a unique
package name (reverse
Domain Name + project)
cs423- cotter 10
Empty Project Configuration
cs423- cotter 11
Main.xml – Graphical LayoutEmpty Project
cs423- cotter 12
Main.xml – Graphical LayoutCompleted Project
cs423- cotter 13
Main.xml
cs423- cotter 14
EchoClientActivity.xml
cs423- cotter 15
Strings.xml
cs423- cotter 16
AndroidManifest.xml
cs423- cotter 17
Base Android 2.2 Phone VD
cs423- cotter 18
Base Android 2.2 Phone VD
cs423- cotter 19
UDP Echo Client (1)
cs423- cotter 20
UDP Echo Client (2)
cs423- cotter 21
UDP Echo Client (3)
cs423- cotter 22
echoClient.apk
cs423- cotter 23
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[];
cs423- cotter 24
EchoClientActivity.javapublic 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);
}
cs423- cotter 25
EchoClientActivity.javapublic 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;
cs423- cotter 26
EchoClientActivity.javacase R.id.button2: /* This is the send data button */
String sResponse, sTempString sInputMsg = inputMsg.getText().toString();int iNumRead; 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;
cs423- cotter 27
EchoClientActivity.javacase 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
cs423- cotter 28
R.javapackage edu.umkc.cotterr.echo;
public final class R { public static final class attr { } public static final class color { public static final int backgroundColor=0x7f050000; } public static final class drawable { public static final int ic_launcher=0x7f020000; } public static final class layout { public static final int main=0x7f030000; }
cs423- cotter 29
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; }
cs423- cotter 30
R.java public static final class string { public static final int ConvertButton=0x7f040002; public static final int DefaultHost=0x7f040003; public static final int DefaultPort=0x7f040004; public static final int app_name=0x7f040001; public static final int connectButton=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; }}
cs423- cotter 31
main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns: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>
cs423- cotter 32
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" />
cs423- cotter 33
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" />
cs423- cotter 34
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> cs423- cotter 35
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>
cs423- cotter 36
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>
cs423- cotter 37
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>
cs423- cotter 38
Summary
• Android Development has strong support in Eclipse IDE
• Core Android language is Java, with a full library of Android classes
cs423- cotter 39