From 40592c2ae7506bfb4694f59f3b4825099acdcd0e Mon Sep 17 00:00:00 2001 From: goblin911 Date: Fri, 23 Aug 2013 15:52:00 +0800 Subject: add activity demo --- .../src/com/example/piztor/Controller.java | 30 +++++ .../src/com/example/piztor/Login.java | 18 +++ .../src/com/example/piztor/MainActivity.java | 104 +++++++++++++++++ .../src/com/example/piztor/MyView.java | 75 +++++++++++++ .../src/com/example/piztor/Myrequest.java | 10 ++ .../src/com/example/piztor/Myrespond.java | 12 ++ .../src/com/example/piztor/Running.java | 42 +++++++ .../src/com/example/piztor/SocketClient.java | 114 +++++++++++++++++++ .../src/com/example/piztor/Transam.java | 124 +++++++++++++++++++++ 9 files changed, 529 insertions(+) create mode 100644 client/activity-demo/src/com/example/piztor/Controller.java create mode 100644 client/activity-demo/src/com/example/piztor/Login.java create mode 100644 client/activity-demo/src/com/example/piztor/MainActivity.java create mode 100644 client/activity-demo/src/com/example/piztor/MyView.java create mode 100644 client/activity-demo/src/com/example/piztor/Myrequest.java create mode 100644 client/activity-demo/src/com/example/piztor/Myrespond.java create mode 100644 client/activity-demo/src/com/example/piztor/Running.java create mode 100644 client/activity-demo/src/com/example/piztor/SocketClient.java create mode 100644 client/activity-demo/src/com/example/piztor/Transam.java diff --git a/client/activity-demo/src/com/example/piztor/Controller.java b/client/activity-demo/src/com/example/piztor/Controller.java new file mode 100644 index 0000000..6e55581 --- /dev/null +++ b/client/activity-demo/src/com/example/piztor/Controller.java @@ -0,0 +1,30 @@ +package com.example.piztor; + +import java.io.Serializable; +import android.content.Intent; + +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) { + run.v.drawLocation(x, y); + } +} diff --git a/client/activity-demo/src/com/example/piztor/Login.java b/client/activity-demo/src/com/example/piztor/Login.java new file mode 100644 index 0000000..e7712c4 --- /dev/null +++ b/client/activity-demo/src/com/example/piztor/Login.java @@ -0,0 +1,18 @@ +package com.example.piztor; + +public class Login { + MainActivity main; + + Login(MainActivity main) { + this.main = main; + } + + void success(int token) { + main.start(); + System.out.println("token!"); + } + + void failed() { + System.out.println("fuck!!"); + } +} diff --git a/client/activity-demo/src/com/example/piztor/MainActivity.java b/client/activity-demo/src/com/example/piztor/MainActivity.java new file mode 100644 index 0000000..333bfd4 --- /dev/null +++ b/client/activity-demo/src/com/example/piztor/MainActivity.java @@ -0,0 +1,104 @@ +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; + 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); + b = (Button) findViewById(R.id.login); + b.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + cout.println(username.getText().toString()); + cout.println(password.getText().toString()); + cout.println(ip.getText().toString()); + cout.println(port.getText().toString()); + ip.setText("192.168.1.102"); + port.setText("9990"); + username.setText("hello"); + password.setText("world"); + Vector r = new Vector(); + 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(); + } + }); + 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(); + 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/src/com/example/piztor/MyView.java b/client/activity-demo/src/com/example/piztor/MyView.java new file mode 100644 index 0000000..1627e4c --- /dev/null +++ b/client/activity-demo/src/com/example/piztor/MyView.java @@ -0,0 +1,75 @@ +package com.example.piztor; + +import java.io.*; +import android.content.*; +import android.graphics.*; +import android.graphics.Paint.Style; +import android.util.*; +import android.view.*; + +public class MyView extends View { + static PrintStream cout = System.out; + private Paint mPaint; + public Canvas c = null; + public Bitmap b = null; + public double scale = 100; + public double centerX, centerY; +// Vector v; + + void setup(Canvas c, Bitmap b, double x, double y) { + this.c = c; + this.b = b; + centerX = x; + centerY = y; + } + + public MyView(Context context) { + super(context); +// v = new Vector(); + mPaint = new Paint(); + mPaint.setColor(Color.RED); + mPaint.setStyle(Style.FILL); + } + + public MyView(Context context, AttributeSet attr) { + super(context, attr); +// v = new Vector(); + mPaint = new Paint(); + mPaint.setColor(Color.RED); + mPaint.setStyle(Style.FILL); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + canvas.drawBitmap(b, 0, 0, mPaint); + // 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 drawLocation(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); + c.drawRect(x1 - 1, y1 + 1, x1 + 1, y1 - 1, mPaint); + 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/src/com/example/piztor/Myrequest.java b/client/activity-demo/src/com/example/piztor/Myrequest.java new file mode 100644 index 0000000..9397e0c --- /dev/null +++ b/client/activity-demo/src/com/example/piztor/Myrequest.java @@ -0,0 +1,10 @@ +package com.example.piztor; + +import java.util.Vector; + +public class Myrequest{ + public Vector contain; + Myrequest(Vector info){ + contain = info; + } +} \ No newline at end of file diff --git a/client/activity-demo/src/com/example/piztor/Myrespond.java b/client/activity-demo/src/com/example/piztor/Myrespond.java new file mode 100644 index 0000000..2398f2b --- /dev/null +++ b/client/activity-demo/src/com/example/piztor/Myrespond.java @@ -0,0 +1,12 @@ +package com.example.piztor; + +import java.util.Vector; + +public class Myrespond{ + public Vector contain; + public String wrong; + Myrespond(){ + wrong = null; + contain = new Vector(); + } +} \ No newline at end of file diff --git a/client/activity-demo/src/com/example/piztor/Running.java b/client/activity-demo/src/com/example/piztor/Running.java new file mode 100644 index 0000000..4ea1526 --- /dev/null +++ b/client/activity-demo/src/com/example/piztor/Running.java @@ -0,0 +1,42 @@ +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, 31, 121); + } + + @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/src/com/example/piztor/SocketClient.java b/client/activity-demo/src/com/example/piztor/SocketClient.java new file mode 100644 index 0000000..e66b5bc --- /dev/null +++ b/client/activity-demo/src/com/example/piztor/SocketClient.java @@ -0,0 +1,114 @@ +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.writeUTF(id); + out.writeUTF(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.writeUTF(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); + 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 lot = in.readDouble(); + double lat = in.readDouble(); + r.contain.add(tid); + r.contain.add(lot); + r.contain.add(lat); + } + 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/src/com/example/piztor/Transam.java b/client/activity-demo/src/com/example/piztor/Transam.java new file mode 100644 index 0000000..e39abd5 --- /dev/null +++ b/client/activity-demo/src/com/example/piztor/Transam.java @@ -0,0 +1,124 @@ +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){ + }catch (IOException e){ + } + + } + } + + @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 -- cgit v1.2.3