summaryrefslogtreecommitdiff
path: root/client/Piztor/src/com/macaroon
diff options
context:
space:
mode:
Diffstat (limited to 'client/Piztor/src/com/macaroon')
-rw-r--r--client/Piztor/src/com/macaroon/piztor/AppMgr.java25
-rw-r--r--client/Piztor/src/com/macaroon/piztor/Infomation.java (renamed from client/Piztor/src/com/macaroon/piztor/UserInfo.java)5
-rw-r--r--client/Piztor/src/com/macaroon/piztor/InitAct.java2
-rw-r--r--client/Piztor/src/com/macaroon/piztor/Login.java7
-rw-r--r--client/Piztor/src/com/macaroon/piztor/Main.java192
-rw-r--r--client/Piztor/src/com/macaroon/piztor/MapInfo.java67
-rw-r--r--client/Piztor/src/com/macaroon/piztor/PiztorAct.java2
-rw-r--r--client/Piztor/src/com/macaroon/piztor/ReqLogout.java12
-rw-r--r--client/Piztor/src/com/macaroon/piztor/ResLogout.java13
-rw-r--r--client/Piztor/src/com/macaroon/piztor/Rlocation.java2
-rw-r--r--client/Piztor/src/com/macaroon/piztor/Settings.java124
-rw-r--r--client/Piztor/src/com/macaroon/piztor/SocketClient.java21
-rw-r--r--client/Piztor/src/com/macaroon/piztor/Transam.java5
13 files changed, 379 insertions, 98 deletions
diff --git a/client/Piztor/src/com/macaroon/piztor/AppMgr.java b/client/Piztor/src/com/macaroon/piztor/AppMgr.java
index 99171cc..0ba28e0 100644
--- a/client/Piztor/src/com/macaroon/piztor/AppMgr.java
+++ b/client/Piztor/src/com/macaroon/piztor/AppMgr.java
@@ -2,6 +2,7 @@ package com.macaroon.piztor;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Stack;
import android.annotation.SuppressLint;
import android.content.Intent;
@@ -17,7 +18,7 @@ public class AppMgr {
static ActivityStatus status;
static PiztorAct nowAct;
// TODO fix
- static Handler fromTransam, fromGPS;
+ static Handler handler, fromGPS;
static Transam transam = null;
static Tracker tracker = null;
static Thread tTransam, tGPS;
@@ -27,6 +28,9 @@ public class AppMgr {
final static int errorToken = 103;
final static int hasToken = 104;
final static int toSettings = 105;
+ final static int logout = 106;
+
+ static MapInfo mapInfo;
static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
static HashSet<PiztorAct> acts;
@@ -63,7 +67,12 @@ public class AppMgr {
System.out.println("second");
i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
if (event == errorToken)
- UserInfo.token = null;
+ Infomation.token = null;
+ if (event == toSettings) {
+ if (nowAct.actMgr.nowStatus.getClass() == Main.FetchStatus.class)
+ i.putExtra("status", true);
+ else i.putExtra("status", false);
+ }
nowAct.startActivity(i);
}
@@ -95,19 +104,16 @@ public class AppMgr {
static void init() {
mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
- fromTransam = new Handler();
- transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
- fromGPS = new Handler();
- tracker = new Tracker(nowAct.getApplicationContext(), fromGPS);
+ handler = new Handler();
+ transam = new Transam(Infomation.ip, Infomation.port, handler);
tTransam = new Thread(transam);
tTransam.start();
- tGPS = new Thread(tracker);
- tGPS.start();
- System.out.println("!!!!!!");
+ mapInfo = new MapInfo();
addStatus(InitAct.class);
addStatus(Login.class);
addStatus(Main.class);
addStatus(Settings.class);
+ addTransition(Main.class, logout, Login.class);
addTransition(InitAct.class, noToken, Login.class);
addTransition(Login.class, loginSuccess, Main.class);
addTransition(Main.class, errorToken, Login.class);
@@ -115,6 +121,7 @@ public class AppMgr {
addTransition(InitAct.class, hasToken, Main.class);
addTransition(InitAct.class, errorToken, Login.class);
addTransition(Main.class, toSettings, Settings.class);
+ addTransition(Settings.class, logout, Login.class);
}
}
diff --git a/client/Piztor/src/com/macaroon/piztor/UserInfo.java b/client/Piztor/src/com/macaroon/piztor/Infomation.java
index d404c7e..3cad2ba 100644
--- a/client/Piztor/src/com/macaroon/piztor/UserInfo.java
+++ b/client/Piztor/src/com/macaroon/piztor/Infomation.java
@@ -1,10 +1,11 @@
package com.macaroon.piztor;
-public class UserInfo {
+public class Infomation {
// static String ip = "69.85.86.42";
static String ip = "192.168.1.101";
static int port = 2222;
static String token = null;
static String username = null;
- static int id = -1;
+ static int uid = -1;
+ static int gid = -1;
}
diff --git a/client/Piztor/src/com/macaroon/piztor/InitAct.java b/client/Piztor/src/com/macaroon/piztor/InitAct.java
index 4d2b656..8090f3b 100644
--- a/client/Piztor/src/com/macaroon/piztor/InitAct.java
+++ b/client/Piztor/src/com/macaroon/piztor/InitAct.java
@@ -17,7 +17,7 @@ public class InitAct extends PiztorAct {
@Override
protected void onStart() {
super.onStart();
- if (UserInfo.token == null)
+ if (Infomation.token == null)
AppMgr.trigger(AppMgr.noToken);
else {
//TODO jump to main
diff --git a/client/Piztor/src/com/macaroon/piztor/Login.java b/client/Piztor/src/com/macaroon/piztor/Login.java
index 3ad6cfb..ab523f8 100644
--- a/client/Piztor/src/com/macaroon/piztor/Login.java
+++ b/client/Piztor/src/com/macaroon/piztor/Login.java
@@ -13,7 +13,6 @@ import android.widget.Toast;
public class Login extends PiztorAct {
- ActMgr actMgr;
Button btnLogin;
EditText edtUser, edtPass;
@@ -35,9 +34,9 @@ public class Login extends PiztorAct {
actMgr.trigger(loginFailed);
return;
}
- UserInfo.token = res.t;
- UserInfo.id = res.uid;
- UserInfo.username = edtUser.getText().toString();
+ Infomation.token = res.t;
+ Infomation.uid = res.uid;
+ Infomation.username = edtUser.getText().toString();
System.out.println(res.s + " :!!! " + res.t);
actMgr.trigger(AppMgr.loginSuccess);
} else {
diff --git a/client/Piztor/src/com/macaroon/piztor/Main.java b/client/Piztor/src/com/macaroon/piztor/Main.java
index 8b0918d..28a32ff 100644
--- a/client/Piztor/src/com/macaroon/piztor/Main.java
+++ b/client/Piztor/src/com/macaroon/piztor/Main.java
@@ -2,8 +2,9 @@ package com.macaroon.piztor;
import java.util.Timer;
import java.util.TimerTask;
+import java.util.Vector;
+
import android.annotation.SuppressLint;
-import android.location.Location;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
@@ -12,41 +13,35 @@ import android.view.Menu;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
+import android.widget.Toast;
public class Main extends PiztorAct {
final static int SearchButtonPress = 1;
- final static int FetchButtonPress = 2;
final static int FocuseButtonPress = 3;
final static int SuccessFetch = 4;
final static int FailedFetch = 5;
- final static int TimerFlush = 6;
- ActMgr actMgr;
+ final static int Fetch = 6;
+ final static int mapViewtouched = 7;
ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
Timer autodate;
- @SuppressLint("HandlerLeak")
- Handler fromGPS = new Handler() {
- @Override
- public void handleMessage(Message m) {
- if (m.what != 0) {
- Location l = (Location) m.obj;
- if (l == null)
- System.out.println("fuck!!!");
- else {
- ReqUpdate r = new ReqUpdate(UserInfo.token,
- UserInfo.username, l.getLatitude(),
- l.getLongitude(), System.currentTimeMillis(), 1000);
- AppMgr.transam.send(r);
- }
- }
- }
- };
+ MapInfo mapInfo;
+ /*
+ * @SuppressLint("HandlerLeak") Handler fromGPS = new Handler() {
+ *
+ * @Override public void handleMessage(Message m) { if (m.what != 0) {
+ * Location l = (Location) m.obj; if (l == null)
+ * System.out.println("fuck!!!"); else { ReqUpdate r = new
+ * ReqUpdate(Infomation.token, Infomation.username, l.getLatitude(),
+ * l.getLongitude(), System.currentTimeMillis(), 1000);
+ * AppMgr.transam.send(r); } } } };
+ */
@SuppressLint("HandlerLeak")
- Handler fromTransam = new Handler() {
+ Handler handler = new Handler() {
@Override
public void handleMessage(Message m) {
switch (m.what) {
- case 1:
+ case 1:// 上传自己信息成功or失败
ResUpdate update = (ResUpdate) m.obj;
if (update.s == 0)
System.out.println("update success");
@@ -55,31 +50,48 @@ public class Main extends PiztorAct {
actMgr.trigger(AppMgr.errorToken);
}
break;
- case 2:
+ case 2:// 得到别人的信息
ResLocation location = (ResLocation) m.obj;
if (location.s == 0) {
- for (int i = 0; i < location.n; i++) {
- System.out.println(location.l.get(i).i + " : "
- + location.l.get(i).lat + " "
- + location.l.get(i).lot);
+ mapInfo.clear();
+ for (Rlocation i : location.l) {
+ System.out.println(i.i + " : " + i.lat + " " + i.lot);
+ UserInfo info = new UserInfo(i.i);
+ info.setLocation(i.lat, i.lot);
+ mapInfo.addUserInfo(info);
}
actMgr.trigger(SuccessFetch);
} else {
- System.out
- .println("resquest for location must be wrong!!!");
+ System.out.println("resquest for location failed!");
actMgr.trigger(AppMgr.errorToken);
}
break;
- case 3:
+ case 3:// 得到用户信息
ResUserinfo r = (ResUserinfo) m.obj;
if (r.s == 0) {
System.out.println("id : " + r.uid + " sex : " + r.sex
+ " group : " + r.gid);
+ if (r.uid == Infomation.uid) {
+ Infomation.gid = r.gid;
+ autodate.schedule(new AutoUpdate(), 0, 5000);
+ } else {
+ UserInfo user = mapInfo.getUserInfo(r.uid);
+ if (user != null)
+ user.setInfo(r.gid, r.sex);
+ else
+ System.out.println("fuck!!!!");
+ }
+ flushMap();
} else {
System.out.println("reqest for userInfo must be wrong!!!");
actMgr.trigger(AppMgr.errorToken);
}
break;
+ case 4:// 登出
+ Toast toast = Toast.makeText(getApplicationContext(),
+ "logout failed", Toast.LENGTH_LONG);
+ toast.show();
+ break;
default:
break;
}
@@ -90,16 +102,14 @@ public class Main extends PiztorAct {
switch (t) {
case SearchButtonPress:
return "Search Button Press";
- case FetchButtonPress:
- return "Fetch Button Press";
+ case Fetch:
+ return "Fetch ";
case FocuseButtonPress:
return "Focuse Button Press";
case SuccessFetch:
return "Success Fetch";
case FailedFetch:
return "Failed Fetch";
- case TimerFlush:
- return "TimerFlush";
default:
return "Fuck!!!";
}
@@ -116,15 +126,16 @@ public class Main extends PiztorAct {
void enter(int e) {
System.out.println("enter start status!!!!");
if (e == ActMgr.Create) {
- AppMgr.transam.send(new ReqUserinfo(UserInfo.token,
- UserInfo.username, UserInfo.id, System
+ System.out.println(Infomation.token + " "
+ + Infomation.username + " " + Infomation.uid);
+ AppMgr.transam.send(new ReqUserinfo(Infomation.token,
+ Infomation.username, Infomation.uid, System
.currentTimeMillis(), 5000));
+ // TODO flush mapinfo.myinfo
}
- if (e == TimerFlush) {
- ReqLocation r = new ReqLocation(UserInfo.token,
- UserInfo.username, 1, System.currentTimeMillis(), 1000);
- AppMgr.transam.send(r);
+ if (e == Fetch) {
+ requesLocation(Infomation.gid);
}
if (e == SuccessFetch)
flushMap();
@@ -142,10 +153,11 @@ public class Main extends PiztorAct {
@Override
void enter(int e) {
System.out.println("enter Fetch status!!!!");
- if (e == FetchButtonPress) {
- ReqLocation r = new ReqLocation(UserInfo.token,
- UserInfo.username, 1, System.currentTimeMillis(), 1000);
- AppMgr.transam.send(r);
+ if (e == Fetch) {
+ requesLocation(Infomation.gid);
+ }
+ if (e == SuccessFetch) {
+ flushMap();
}
}
@@ -160,51 +172,72 @@ public class Main extends PiztorAct {
@Override
void enter(int e) {
+ // TODO
+ switch (e) {
+ case Fetch:
+ requesLocation(Infomation.gid);
+ break;
+ case FocuseButtonPress:
+ // TODO setFocus
+ break;
+ case SuccessFetch:
+ requesLocation(Infomation.gid);
+ break;
+ default:
+ break;
+ }
System.out.println("enter focus status!!!!");
-
}
@Override
void leave(int e) {
+ // TODO leave focus
System.out.println("leave focus status!!!! because" + cause(e));
-
}
}
- class AutoUpdate extends TimerTask {
+ void requesLocation(int gid) {
+ ReqLocation r = new ReqLocation(Infomation.token, Infomation.username,
+ gid, System.currentTimeMillis(), 2000);
+ System.out.println("get others infomation!!!");
+ AppMgr.transam.send(r);
+ }
+ class AutoUpdate extends TimerTask {
@Override
public void run() {
- actMgr.trigger(Main.TimerFlush);
+ actMgr.trigger(Main.Fetch);
}
-
}
@Override
protected void onCreate(Bundle savedInstanceState) {
id = "Main";
super.onCreate(savedInstanceState);
- AppMgr.tracker.setHandler(fromGPS);
+ mapInfo = AppMgr.mapInfo;
ActStatus[] r = new ActStatus[3];
- r[0] = new StartStatus();
- r[1] = new FetchStatus();
- r[2] = new FocusStatus();
- actMgr = new ActMgr(this, r[0], r);
- actMgr.add(r[0], FocuseButtonPress, r[2]);
- actMgr.add(r[0], FetchButtonPress, r[1]);
- actMgr.add(r[0], SuccessFetch, r[0]);
- actMgr.add(r[1], FetchButtonPress, r[0]);
- actMgr.add(r[1], FailedFetch, r[0]);
- actMgr.add(r[1], SuccessFetch, r[0]);
- actMgr.add(r[2], FocuseButtonPress, r[0]);
- actMgr.add(r[0], TimerFlush, r[0]);
- actMgr.add(r[2], TimerFlush, r[2]);
+ ActStatus startStatus = r[0] = new StartStatus();
+ ActStatus fetchStatus = r[1] = new FetchStatus();
+ ActStatus focusStatus = r[2] = new FocusStatus();
+ AppMgr.transam.setHandler(handler);
+ actMgr = new ActMgr(this, startStatus, r);
+ actMgr.add(startStatus, FocuseButtonPress, focusStatus);
+ actMgr.add(startStatus, Fetch, fetchStatus);
+ actMgr.add(startStatus, SuccessFetch, startStatus);
+ actMgr.add(startStatus, Fetch, startStatus);
+ actMgr.add(fetchStatus, Fetch, startStatus);
+ actMgr.add(fetchStatus, FailedFetch, startStatus);
+ actMgr.add(fetchStatus, SuccessFetch, startStatus);
+ actMgr.add(focusStatus, FocuseButtonPress, startStatus);
+ actMgr.add(focusStatus, mapViewtouched, startStatus);
+ actMgr.add(focusStatus, SuccessFetch, focusStatus);
+ actMgr.add(focusStatus, Fetch, focusStatus);
autodate = new Timer();
- AppMgr.transam.setHandler(fromTransam);
+ flushMap();
+ // ImageView view = (ImageView) findViewById(R.id.main_mapview);
+ // view.setOnTouchListener(new MultiTouchListener());
setContentView(R.layout.activity_main);
- ImageView view = (ImageView) findViewById(R.id.main_mapview);
- view.setOnTouchListener(new MultiTouchListener());
}
@Override
@@ -215,16 +248,15 @@ public class Main extends PiztorAct {
btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
btnFetch.setOnClickListener(new View.OnClickListener() {
-
@Override
public void onClick(View arg0) {
- // actMgr.trigger(FetchButtonPress);
+ actMgr.trigger(Fetch);
}
});
btnFocus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- // actMgr.trigger(FocuseButtonPress);
+ actMgr.trigger(FocuseButtonPress);
}
});
btnSettings.setOnClickListener(new View.OnClickListener() {
@@ -233,16 +265,22 @@ public class Main extends PiztorAct {
actMgr.trigger(AppMgr.toSettings);
}
});
- //autodate.schedule(new AutoUpdate(), 0, 5000);
+
}
-
+
+ @Override
+ public void onStop() {
+ super.onStart();
+ autodate.cancel();
+ }
+
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- AppMgr.exit();
- return true;
- }
- return super.onKeyDown(keyCode, event);
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ AppMgr.exit();
+ return true;
+ }
+ return super.onKeyDown(keyCode, event);
}
@Override
diff --git a/client/Piztor/src/com/macaroon/piztor/MapInfo.java b/client/Piztor/src/com/macaroon/piztor/MapInfo.java
new file mode 100644
index 0000000..37e3002
--- /dev/null
+++ b/client/Piztor/src/com/macaroon/piztor/MapInfo.java
@@ -0,0 +1,67 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.graphics.drawable.Drawable;
+
+import com.baidu.platform.comapi.basestruct.GeoPoint;
+
+public class MapInfo {
+ HashMap<Integer, UserInfo> mp;
+ Vector<UserInfo> allUsers;
+ UserInfo myInfo;
+ Style layout;
+
+ @SuppressLint("UseSparseArrays")
+ MapInfo() {
+ mp = new HashMap<Integer, UserInfo>();
+ allUsers = new Vector<UserInfo>();
+ }
+
+ void clear() {
+ mp.clear();
+ allUsers.clear();
+ }
+
+ void addUserInfo(UserInfo userInfo) {
+ allUsers.add(userInfo);
+ mp.put(userInfo.uid, userInfo);
+ }
+
+ void setStyle(Style layout) {
+ this.layout = layout;
+ }
+
+ UserInfo getUserInfo(int uid) {
+ if (mp.containsKey(uid))
+ return mp.get(uid);
+ else
+ return null;
+ }
+
+}
+
+class UserInfo {
+ int uid, gid, sex;
+ GeoPoint p;
+
+ UserInfo(int uid) {
+ this.uid = uid;
+ }
+
+ void setLocation(double lat, double lot) {
+ p = new GeoPoint((int) (lat * 10e6), (int) (lot * 10e6));
+ }
+
+ void setInfo(int gid, int sex) {
+ this.gid = gid;
+ this.sex = sex;
+ }
+
+}
+
+interface Style {
+ Drawable getDrawable(UserInfo user);
+} \ No newline at end of file
diff --git a/client/Piztor/src/com/macaroon/piztor/PiztorAct.java b/client/Piztor/src/com/macaroon/piztor/PiztorAct.java
index 1093fb9..abfab12 100644
--- a/client/Piztor/src/com/macaroon/piztor/PiztorAct.java
+++ b/client/Piztor/src/com/macaroon/piztor/PiztorAct.java
@@ -5,6 +5,8 @@ import android.os.Bundle;
public class PiztorAct extends Activity {
String id;
+ ActMgr actMgr;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
diff --git a/client/Piztor/src/com/macaroon/piztor/ReqLogout.java b/client/Piztor/src/com/macaroon/piztor/ReqLogout.java
new file mode 100644
index 0000000..22bddfa
--- /dev/null
+++ b/client/Piztor/src/com/macaroon/piztor/ReqLogout.java
@@ -0,0 +1,12 @@
+package com.macaroon.piztor;
+
+//--------------------------------------//
+// Log out //
+//--------------------------------------//
+
+public class ReqLogout extends Req{
+
+ ReqLogout(String token,String name,long time,long alive){
+ super(4,token,name,time,alive); //for type 4
+ }
+} \ No newline at end of file
diff --git a/client/Piztor/src/com/macaroon/piztor/ResLogout.java b/client/Piztor/src/com/macaroon/piztor/ResLogout.java
new file mode 100644
index 0000000..4b2a8d1
--- /dev/null
+++ b/client/Piztor/src/com/macaroon/piztor/ResLogout.java
@@ -0,0 +1,13 @@
+package com.macaroon.piztor;
+
+
+//--------------------------------------//
+// Respond to logout //
+//--------------------------------------//
+
+public class ResLogout extends Res{
+
+ ResLogout(int status){
+ super(4,status); //for type 4
+ }
+} \ No newline at end of file
diff --git a/client/Piztor/src/com/macaroon/piztor/Rlocation.java b/client/Piztor/src/com/macaroon/piztor/Rlocation.java
index 6ac9154..8f7d42b 100644
--- a/client/Piztor/src/com/macaroon/piztor/Rlocation.java
+++ b/client/Piztor/src/com/macaroon/piztor/Rlocation.java
@@ -10,4 +10,4 @@ class Rlocation{
lat = latitude;
lot = longitude;
}
-} \ No newline at end of file
+}
diff --git a/client/Piztor/src/com/macaroon/piztor/Settings.java b/client/Piztor/src/com/macaroon/piztor/Settings.java
index 94c6a94..457d916 100644
--- a/client/Piztor/src/com/macaroon/piztor/Settings.java
+++ b/client/Piztor/src/com/macaroon/piztor/Settings.java
@@ -1,18 +1,140 @@
package com.macaroon.piztor;
+import android.annotation.SuppressLint;
import android.os.Bundle;
-import android.app.Activity;
+import android.os.Handler;
+import android.os.Message;
import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.Toast;
public class Settings extends PiztorAct {
+ Button logout;
+ MapInfo mapInfo;
+
+ // Event
+ final static int logoutButtonPressed = 1;
+ final static int logoutFailed = 2;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ System.out.println("!!!!!!!!!!!!!!!!!!!!!settings" + m.what);
+ switch (m.what) {
+ case 1:// 上传自己信息成功or失败
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.s == 0)
+ System.out.println("update success");
+ else {
+ System.out.println("update failed");
+ actMgr.trigger(AppMgr.errorToken);
+ }
+ break;
+ case 2:// 得到别人的信息
+ ResLocation location = (ResLocation) m.obj;
+ if (location.s == 0) {
+ mapInfo.clear();
+ for (Rlocation i : location.l) {
+ System.out.println(i.i + " : " + i.lat + " " + i.lot);
+ UserInfo info = new UserInfo(i.i);
+ info.setLocation(i.lat, i.lot);
+ mapInfo.addUserInfo(info);
+ }
+ } else {
+ System.out.println("resquest for location failed!");
+ actMgr.trigger(AppMgr.errorToken);
+ }
+ break;
+ case 3:// 得到用户信息
+ ResUserinfo r = (ResUserinfo) m.obj;
+ if (r.s == 0) {
+ System.out.println("id : " + r.uid + " sex : " + r.sex
+ + " group : " + r.gid);
+ UserInfo user = mapInfo.getUserInfo(r.uid);
+ user.setInfo(r.gid, r.sex);
+ } else {
+ System.out.println("reqest for userInfo must be wrong!!!");
+ actMgr.trigger(AppMgr.errorToken);
+ }
+ break;
+ case 4:// 登出
+ ResLogout logout = (ResLogout) m.obj;
+ System.out.println("logout status" + logout.s);
+ if (logout.s == 0) {
+ Infomation.token = null;
+ Infomation.gid = -1;
+ Infomation.uid = -1;
+ Infomation.username = null;
+ actMgr.trigger(AppMgr.logout);
+ break;
+ } else {
+ Toast toast = Toast.makeText(getApplicationContext(),
+ "logout failed", Toast.LENGTH_LONG);
+ toast.show();
+ actMgr.trigger(logoutFailed);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LogoutStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ AppMgr.transam.send(new ReqLogout(Infomation.token,
+ Infomation.username, System.currentTimeMillis(), 2000));
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[3];
+ ActStatus start = r[0] = new StartStatus();
+ ActStatus logout = r[2] = new LogoutStatus();
+ actMgr = new ActMgr(this, start, r);
+ actMgr.add(start, logoutButtonPressed, logout);
+ actMgr.add(logout, logoutFailed, start);
+ AppMgr.transam.setHandler(handler);
+ mapInfo = AppMgr.mapInfo;
setContentView(R.layout.activity_settings);
}
@Override
+ protected void onStart() {
+ super.onStart();
+ logout = (Button) findViewById(R.id.settings_btn_logout);
+ logout.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(logoutButtonPressed);
+ }
+ });
+ }
+
+ @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.setting, menu);
diff --git a/client/Piztor/src/com/macaroon/piztor/SocketClient.java b/client/Piztor/src/com/macaroon/piztor/SocketClient.java
index fe926d9..ed75e52 100644
--- a/client/Piztor/src/com/macaroon/piztor/SocketClient.java
+++ b/client/Piztor/src/com/macaroon/piztor/SocketClient.java
@@ -7,7 +7,6 @@ import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
-import java.util.Locale;
import java.util.Vector;
import android.annotation.SuppressLint;
@@ -100,6 +99,18 @@ public class SocketClient {
out.writeByte(0);
out.writeInt(usid);
break;
+ case 4:
+ ReqLogout rlo = (ReqLogout) req;
+ String tk4 = rlo.token;
+ String name4 = rlo.uname;
+ len = IntLength+ByteLength+TokenLength+name4.length()+ByteLength;
+ out.writeInt(len);
+ out.writeByte(tmp);
+ byte[] b4 = hexStringToBytes(tk4);
+ out.write(b4);
+ out.writeBytes(name4);
+ out.writeByte(0);
+ break;
}
out.flush();
DataInputStream in = new DataInputStream(client.getInputStream());
@@ -175,11 +186,17 @@ public class SocketClient {
msg.what = 3;
recall.sendMessage(msg);
break;
+ case 4:
+ int status4 = in.readUnsignedByte();
+ ResLogout rlogout = new ResLogout(status4);
+ msg.obj = rlogout;
+ msg.what = 4;
+ recall.sendMessage(msg);
+ break;
}
return 0;
} catch (SocketTimeoutException e){
- System.out.println("Time out!");
return 1;
} catch (IOException e) {
throw e;
diff --git a/client/Piztor/src/com/macaroon/piztor/Transam.java b/client/Piztor/src/com/macaroon/piztor/Transam.java
index e946387..f77df39 100644
--- a/client/Piztor/src/com/macaroon/piztor/Transam.java
+++ b/client/Piztor/src/com/macaroon/piztor/Transam.java
@@ -10,7 +10,7 @@ import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Message;
-// Piztor Transmission Protocol v0.4 //
+// Piztor Transmission Protocol v0.4a //
//------------------------------------------------//
// //
@@ -19,6 +19,7 @@ import android.os.Message;
// 1 for updateLocation //
// 2 for locationRequest //
// 3 for userinfo //
+// 4 for logout //
// //
// ----------I'm the division line-------- //
// //
@@ -31,6 +32,7 @@ import android.os.Message;
//update -- token & username & latitude & longitude//
// getlocation -- token & username & groupid //
// getuserinfo -- token & userinfo & userid //
+// logout -- token & username //
// //
// ----------I'm the division line-------- //
// //
@@ -41,6 +43,7 @@ import android.os.Message;
// entry -- userid & latitude & longitude //
// //
// getuserinfo -- status & uid & gid & gender //
+// logout -- status //
// //
// status -- 0 for success //
// 1 for failed/invalid //