summaryrefslogtreecommitdiff
path: root/client/activity-demo/Piztor/src/com
diff options
context:
space:
mode:
Diffstat (limited to 'client/activity-demo/Piztor/src/com')
-rw-r--r--client/activity-demo/Piztor/src/com/example/piztor/Controller.java29
-rw-r--r--client/activity-demo/Piztor/src/com/example/piztor/GPSTracker.java206
-rw-r--r--client/activity-demo/Piztor/src/com/example/piztor/Login.java20
-rw-r--r--client/activity-demo/Piztor/src/com/example/piztor/MainActivity.java120
-rw-r--r--client/activity-demo/Piztor/src/com/example/piztor/MyView.java99
-rw-r--r--client/activity-demo/Piztor/src/com/example/piztor/Myrequest.java10
-rw-r--r--client/activity-demo/Piztor/src/com/example/piztor/Myrespond.java12
-rw-r--r--client/activity-demo/Piztor/src/com/example/piztor/Rmsg.java12
-rw-r--r--client/activity-demo/Piztor/src/com/example/piztor/Running.java44
-rw-r--r--client/activity-demo/Piztor/src/com/example/piztor/SocketClient.java113
-rw-r--r--client/activity-demo/Piztor/src/com/example/piztor/Tracker.java41
-rw-r--r--client/activity-demo/Piztor/src/com/example/piztor/Transam.java126
12 files changed, 832 insertions, 0 deletions
diff --git a/client/activity-demo/Piztor/src/com/example/piztor/Controller.java b/client/activity-demo/Piztor/src/com/example/piztor/Controller.java
new file mode 100644
index 0000000..d6e75d7
--- /dev/null
+++ b/client/activity-demo/Piztor/src/com/example/piztor/Controller.java
@@ -0,0 +1,29 @@
+package com.example.piztor;
+
+
+public class Controller {
+ String userToken;
+ Running run;
+
+ Controller() {
+ run = null;
+ userToken = null;
+ }
+
+ void setRun(Running run) {
+ this.run = run;
+ }
+
+ void recieveInfo(Myrespond r) {
+ if (r.wrong != null) {
+ System.out.println(r.wrong);
+ } else {
+ System.out.println("yeal!");
+ }
+ }
+
+ void recieveLocation(double x, double y) {
+ System.out.println(x + " xxxx " + y);
+ run.v.changMyLocation(x, y);
+ }
+}
diff --git a/client/activity-demo/Piztor/src/com/example/piztor/GPSTracker.java b/client/activity-demo/Piztor/src/com/example/piztor/GPSTracker.java
new file mode 100644
index 0000000..13cb868
--- /dev/null
+++ b/client/activity-demo/Piztor/src/com/example/piztor/GPSTracker.java
@@ -0,0 +1,206 @@
+package com.example.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 10; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ getLocation();
+ }
+
+ public Location getLocation() {
+ try {
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("Network", "Network");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+ }
+ }
+ }
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (location == null) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS Enabled", "GPS Enabled");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+ }
+ }
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return location;
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+
+ // return latitude
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+
+ // return longitude
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+}
diff --git a/client/activity-demo/Piztor/src/com/example/piztor/Login.java b/client/activity-demo/Piztor/src/com/example/piztor/Login.java
new file mode 100644
index 0000000..de5cded
--- /dev/null
+++ b/client/activity-demo/Piztor/src/com/example/piztor/Login.java
@@ -0,0 +1,20 @@
+package com.example.piztor;
+
+public class Login {
+ MainActivity main;
+ int tk;
+
+ Login(MainActivity main) {
+ this.main = main;
+ }
+
+ void success(int token) {
+ //main.start();
+ tk = token;
+ System.out.println("token!");
+ }
+
+ void failed() {
+ System.out.println("fuck!!");
+ }
+}
diff --git a/client/activity-demo/Piztor/src/com/example/piztor/MainActivity.java b/client/activity-demo/Piztor/src/com/example/piztor/MainActivity.java
new file mode 100644
index 0000000..bf8d755
--- /dev/null
+++ b/client/activity-demo/Piztor/src/com/example/piztor/MainActivity.java
@@ -0,0 +1,120 @@
+package com.example.piztor;
+
+import java.io.PrintStream;
+import java.util.Vector;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class MainActivity extends Activity {
+ PrintStream cout = System.out;
+ Button b;
+ EditText username, password, ip, port;
+ Login login;
+ Controller c;
+ boolean flag = false;
+ public final static String SER_KEY = "CONTROL";
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ login = new Login(this);
+ c = new Controller();
+ b = (Button) findViewById(R.id.login);
+
+ b.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ if(flag==false){
+ Vector<Object> r = new Vector<Object>();
+ r.add(0);
+ r.add(username.getText().toString());
+ r.add(password.getText().toString());
+ Transam t = new Transam(ip.getText().toString(), Integer
+ .parseInt(port.getText().toString()), new Myrequest(r),
+ login);
+ new Thread(t).run();
+ flag = true;
+ }
+ else{
+ Vector<Object> r = new Vector<Object>();
+ r.add(2);
+ r.add(login.tk);
+ double lot = 123.456;
+ double lat = 654.321;
+ r.add(lot);
+ r.add(lat);
+ Transam t = new Transam(ip.getText().toString(), Integer
+ .parseInt(port.getText().toString()), new Myrequest(r),
+ c);
+ new Thread(t).run();
+ }
+ }
+ });
+ username = (EditText) findViewById(R.id.username);
+ password = (EditText) findViewById(R.id.password);
+ ip = (EditText) findViewById(R.id.ip);
+ port = (EditText) findViewById(R.id.port);
+ cout.println("onCreate!");
+ }
+
+ void start() {
+ Intent i = new Intent();
+ i.setClass(MainActivity.this, Running.class);
+ startActivity(i);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ ip.setText("192.168.1.101");
+ port.setText("9990");
+ username.setText("hello");
+ password.setText("world");
+ cout.println("onStart!");
+ }
+
+ @Override
+ protected void onRestart() {
+ super.onRestart();
+ cout.println("onRestart!");
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ // cout.println("onResume!");
+ // v.drawString("!!!!!");
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ cout.println("onPause!");
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ cout.println("onStop!");
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ cout.println("onDestroy!");
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/activity-demo/Piztor/src/com/example/piztor/MyView.java b/client/activity-demo/Piztor/src/com/example/piztor/MyView.java
new file mode 100644
index 0000000..a213013
--- /dev/null
+++ b/client/activity-demo/Piztor/src/com/example/piztor/MyView.java
@@ -0,0 +1,99 @@
+package com.example.piztor;
+
+import java.io.PrintStream;
+import java.util.Vector;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Paint.Style;
+import android.graphics.Point;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+
+public class MyView extends View {
+ static PrintStream cout = System.out;
+ private Paint mPaint, oPaint;
+ public Canvas c = null;
+ public Bitmap b = null;
+ public double scale = 1;
+ public double centerX, centerY;
+
+
+ Point myLocation;
+ Vector<Point> Location;
+
+ void setup(Canvas c, Bitmap b, double x, double y) {
+ this.c = c;
+ this.b = b;
+ centerX = x;
+ centerY = y;
+ myLocation = new Point(10, 10);
+ Location = new Vector<Point>();
+ Location.add(myLocation);
+ }
+
+ public MyView(Context context) {
+ super(context);
+ // v = new Vector<PointF>();
+ mPaint = new Paint();
+ mPaint.setColor(Color.RED);
+ mPaint.setStyle(Style.FILL);
+ oPaint = new Paint();
+ oPaint.setColor(Color.BLUE);
+ oPaint.setStyle(Style.FILL);
+ }
+
+ public MyView(Context context, AttributeSet attr) {
+ super(context, attr);
+ // v = new Vector<PointF>();
+ mPaint = new Paint();
+ mPaint.setColor(Color.RED);
+ mPaint.setStyle(Style.FILL);
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+ cout.println(myLocation.x + " -- " + myLocation.y);
+ canvas.drawCircle(myLocation.x, myLocation.y, 5, mPaint);
+ //canvas.drawBitmap(b, 0, 0, mPaint);
+ /*for (int i = 1; i < Location.size(); i++) {
+ canvas.drawCircle(Location.get(i).x, Location.get(i).y, 2, oPaint);
+ }*/
+ // canvas.restore();
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent e) {
+ // v.add(new PointF(e.getX(), e.getY()));
+ c.drawRect(e.getX() - 1, e.getY() + 1, e.getX() + 1, e.getY() - 1,
+ mPaint);
+
+ invalidate();
+ return true;
+ }
+
+ void changMyLocation(double x, double y) {
+ if (centerX < 0) {
+ centerX = x;
+ centerY = y;
+ }
+ int x1 = (int) (getWidth() / 2 + (x - centerX) * scale);
+ int y1 = (int) (getHeight() / 2 + (y - centerY) * scale);
+ myLocation.x = x1;
+ myLocation.y = y1;
+ cout.println(x + " " + y);
+ invalidate();
+ }
+
+ void drawString(String s) {
+ mPaint.setTextSize(15);
+ c.drawText(s, 0, getHeight() / 2, mPaint);
+ invalidate();
+ }
+
+} \ No newline at end of file
diff --git a/client/activity-demo/Piztor/src/com/example/piztor/Myrequest.java b/client/activity-demo/Piztor/src/com/example/piztor/Myrequest.java
new file mode 100644
index 0000000..9397e0c
--- /dev/null
+++ b/client/activity-demo/Piztor/src/com/example/piztor/Myrequest.java
@@ -0,0 +1,10 @@
+package com.example.piztor;
+
+import java.util.Vector;
+
+public class Myrequest{
+ public Vector<Object> contain;
+ Myrequest(Vector<Object> info){
+ contain = info;
+ }
+} \ No newline at end of file
diff --git a/client/activity-demo/Piztor/src/com/example/piztor/Myrespond.java b/client/activity-demo/Piztor/src/com/example/piztor/Myrespond.java
new file mode 100644
index 0000000..2398f2b
--- /dev/null
+++ b/client/activity-demo/Piztor/src/com/example/piztor/Myrespond.java
@@ -0,0 +1,12 @@
+package com.example.piztor;
+
+import java.util.Vector;
+
+public class Myrespond{
+ public Vector<Object> contain;
+ public String wrong;
+ Myrespond(){
+ wrong = null;
+ contain = new Vector<Object>();
+ }
+} \ No newline at end of file
diff --git a/client/activity-demo/Piztor/src/com/example/piztor/Rmsg.java b/client/activity-demo/Piztor/src/com/example/piztor/Rmsg.java
new file mode 100644
index 0000000..8f4f587
--- /dev/null
+++ b/client/activity-demo/Piztor/src/com/example/piztor/Rmsg.java
@@ -0,0 +1,12 @@
+package com.example.piztor;
+
+public class Rmsg{
+ int id;
+ double lat;
+ double lot;
+ Rmsg(int i,double l,double ll){
+ id = i;
+ lat = l;
+ lot = ll;
+ }
+} \ No newline at end of file
diff --git a/client/activity-demo/Piztor/src/com/example/piztor/Running.java b/client/activity-demo/Piztor/src/com/example/piztor/Running.java
new file mode 100644
index 0000000..f4b6135
--- /dev/null
+++ b/client/activity-demo/Piztor/src/com/example/piztor/Running.java
@@ -0,0 +1,44 @@
+package com.example.piztor;
+
+import java.io.PrintStream;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.view.Menu;
+
+public class Running extends Activity {
+ PrintStream cout = System.out;
+ MyView v;
+ Bitmap b;
+ Canvas c;
+ Controller controller;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ b = Bitmap.createBitmap(720, 1280, Bitmap.Config.ARGB_8888);
+ c = new Canvas(b);
+ controller = new Controller();
+ controller.setRun(this);
+ setContentView(R.layout.activity_running);
+ cout.println("running is created!!!");
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ v = (MyView) findViewById(R.id.view);
+ v.setup(c, b, -1, -1);
+ Tracker tr = new Tracker(controller, Running.this);
+ new Thread(tr).run();
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.running, menu);
+ return true;
+ }
+
+}
diff --git a/client/activity-demo/Piztor/src/com/example/piztor/SocketClient.java b/client/activity-demo/Piztor/src/com/example/piztor/SocketClient.java
new file mode 100644
index 0000000..472da0d
--- /dev/null
+++ b/client/activity-demo/Piztor/src/com/example/piztor/SocketClient.java
@@ -0,0 +1,113 @@
+package com.example.piztor;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.net.Socket;
+import java.net.UnknownHostException;
+
+public class SocketClient {
+ static PrintStream cout = System.out;
+ static Socket client;
+
+ public SocketClient(String site, int port) throws UnknownHostException,
+ IOException {
+ try {
+ cout.println(site + " " + port);
+ client = new Socket(site, port);
+ cout.println("connected successfully!!!");
+ } catch (UnknownHostException e) {
+ cout.println("unknownhostexception!!");
+ throw e;
+ } catch (IOException e) {
+ cout.println("IOException!!");
+ throw e;
+ }
+ }
+
+ public Myrespond sendMsg(Myrequest req) throws IOException {
+ try {
+ DataOutputStream out = new DataOutputStream(
+ client.getOutputStream());
+ int tmp = (Integer) req.contain.get(0);
+ out.writeByte(tmp);
+ switch (tmp) {
+ case 0:
+ String id = (String) req.contain.get(1);
+ String pass = (String) req.contain.get(2);
+ out.writeBytes(id + "\0" + pass);
+ break;
+ case 1:
+ int tk1 = (Integer) req.contain.get(1);
+ int acc = (Integer) req.contain.get(2);
+ String mess = (String) req.contain.get(3);
+ out.writeInt(tk1);
+ out.writeInt(acc);
+ out.writeBytes(mess);
+ break;
+ case 2:
+ int tk2 = (Integer) req.contain.get(1);
+ double slot = (Double) req.contain.get(2);
+ double slat = (Double) req.contain.get(3);
+ out.writeInt(tk2);
+ out.writeDouble(slot);
+ out.writeDouble(slat);
+ break;
+ case 3:
+ int tk3 = (Integer) req.contain.get(1);
+ int gid = (Integer) req.contain.get(2);
+ out.writeInt(tk3);
+ out.writeInt(gid);
+ break;
+ }
+ out.flush();
+ client.shutdownOutput();
+ DataInputStream in = new DataInputStream(client.getInputStream());
+ int type = in.readUnsignedByte();
+ Myrespond r = new Myrespond();
+ switch (type) {
+ case 0:
+ int id = in.readInt();
+ int status = in.readUnsignedByte();
+ r.contain.add(0);
+ r.contain.add(id);
+ r.contain.add(status);
+ System.out.println(id);
+ break;
+ case 1:
+ r.contain.add(1);
+ // reserved
+ break;
+ case 2:
+ r.contain.add(2);
+ // reserved
+ break;
+ case 3:
+ int n = in.readInt();
+ r.contain.add(3);
+ r.contain.add(n);
+ for (int i = 1; i <= n; i++) {
+ int tid = in.readInt();
+ double lat = in.readDouble();
+ double lot = in.readDouble();
+ Rmsg a = new Rmsg(tid,lat,lot);
+ r.contain.add(a);
+ }
+ break;
+ }
+ return r;
+ } catch (IOException e) {
+ throw e;
+ }
+ }
+
+ public void closeSocket() {
+ try {
+ client.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/client/activity-demo/Piztor/src/com/example/piztor/Tracker.java b/client/activity-demo/Piztor/src/com/example/piztor/Tracker.java
new file mode 100644
index 0000000..0222325
--- /dev/null
+++ b/client/activity-demo/Piztor/src/com/example/piztor/Tracker.java
@@ -0,0 +1,41 @@
+package com.example.piztor;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.content.Context;
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 10; // 10 seconds
+ public Timer timer;
+ private final Context mContext;
+ Controller controller;
+
+ public Tracker(Controller newController, Context context) {
+ timer = new Timer();
+ mContext = context;
+ controller = newController;
+ }
+
+ public void run() {
+ GPSTask t = new GPSTask();
+ t.run();
+ //timer.s
+// timer.schedule(new GPSTask(), 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ GPSTracker tracker;
+ tracker = new GPSTracker(mContext);
+ System.out.println("can get location?");
+ if(tracker.canGetLocation()) {
+ double latitude = tracker.getLatitude();
+ double longitude = tracker.getLongitude();
+ System.out.println("yes!");
+ controller.recieveLocation(latitude, longitude);
+ }
+ }
+ }
+}
diff --git a/client/activity-demo/Piztor/src/com/example/piztor/Transam.java b/client/activity-demo/Piztor/src/com/example/piztor/Transam.java
new file mode 100644
index 0000000..db76d06
--- /dev/null
+++ b/client/activity-demo/Piztor/src/com/example/piztor/Transam.java
@@ -0,0 +1,126 @@
+package com.example.piztor;
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.annotation.SuppressLint;
+import android.os.Handler;
+import android.os.Message;
+
+public class Transam implements Runnable {
+ public Timer timer;
+ public boolean flag = true;
+ public boolean reqlog = false;
+ public int cnt = 4;
+ public int port;
+ public String ip;
+ Thread thread;
+ Myrequest req;
+ Myrespond res;
+ Controller core;
+ Login log;
+
+
+ Transam(String i,int p,Myrequest r,Login l){
+ port = p;
+ ip = i;
+ req = r;
+ log = l;
+ reqlog = true;
+ }
+
+ Transam(String i,int p,Myrequest r,Controller c){
+ port = p;
+ ip = i;
+ req = r;
+ core = c;
+ }
+
+ public void run() {
+ final thd t = new thd();
+ flag = false;
+ thread = new Thread(t);
+ cnt = 4;
+ thread.start();
+ timer = new Timer();
+ TimerTask task = new Timertk();
+ timer.schedule(task,2000,2000);
+ }
+
+ class thd implements Runnable {
+ @Override
+ public void run() {
+ try{
+ SocketClient client = new SocketClient(ip,port);
+ res = client.sendMsg(req);
+ if(!reqlog){
+ core.recieveInfo(res);
+ }
+ else{
+ if((Integer) res.contain.get(2)==0){
+ int t = (Integer) res.contain.get(1);
+ log.success(t);
+ }
+ else{
+ log.failed();
+ }
+ }
+ Message msg = new Message();
+ msg.what = 1;
+ handler.sendMessage(msg);
+ client.closeSocket();
+ }catch (UnknownHostException e){
+ e.printStackTrace();
+ }catch (IOException e){
+ e.printStackTrace();
+ }
+
+ }
+ }
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler(){
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case 1:
+ flag = true;
+ break;
+ case 2:
+ if(!reqlog){
+ res = new Myrespond();
+ res.wrong = msg.obj.toString();
+ core.recieveInfo(res);
+ }
+ else{
+ log.failed();
+ }
+ break;
+ case 3:
+ final thd t = new thd();
+ thread = new Thread(t);
+ thread.start();
+ break;
+ }
+ super.handleMessage(msg);
+ }
+ };
+
+ class Timertk extends TimerTask {
+ public void run() {
+ if(flag==false&&cnt>0){
+ cnt--;
+ }
+ else if(cnt==0) {
+ Message msg = new Message();
+ msg.obj = "connecting failed";
+ msg.what = 2;
+ handler.sendMessage(msg);
+ timer.cancel();
+ }
+ else if(flag==true){
+ timer.cancel();
+ }
+ }
+ };
+} \ No newline at end of file