diff options
author | Teddy <ted.sybil@gmail.com> | 2013-08-28 16:32:50 +0800 |
---|---|---|
committer | Teddy <ted.sybil@gmail.com> | 2013-08-28 16:32:50 +0800 |
commit | 10af199a81c3b7ca338a7aeb3ab599ff1be7ecb1 (patch) | |
tree | 06c26b1471f431a53252fd3629a5b561bdf21c7b /client/Piztor/src/com/macaroon/piztor/Main.java | |
parent | 1bc497952316e08e73c71d6839a9e42e40196fb6 (diff) | |
parent | 0a8315a94d8ed1252f3f96d4ca41ddc632c3bc98 (diff) |
Merge branch 'master' of github.com:Determinant/piztor
Diffstat (limited to 'client/Piztor/src/com/macaroon/piztor/Main.java')
-rw-r--r-- | client/Piztor/src/com/macaroon/piztor/Main.java | 287 |
1 files changed, 209 insertions, 78 deletions
diff --git a/client/Piztor/src/com/macaroon/piztor/Main.java b/client/Piztor/src/com/macaroon/piztor/Main.java index 8b0918d..2820090 100644 --- a/client/Piztor/src/com/macaroon/piztor/Main.java +++ b/client/Piztor/src/com/macaroon/piztor/Main.java @@ -2,51 +2,63 @@ package com.macaroon.piztor; import java.util.Timer; import java.util.TimerTask; + import android.annotation.SuppressLint; -import android.location.Location; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.util.Log; import android.view.KeyEvent; import android.view.Menu; import android.view.View; import android.widget.ImageButton; -import android.widget.ImageView; +import android.widget.Toast; + +import com.baidu.location.BDLocation; +import com.baidu.location.BDLocationListener; +import com.baidu.location.LocationClient; +import com.baidu.location.LocationClientOption; +import com.baidu.mapapi.map.LocationData; +import com.baidu.mapapi.map.MapView; 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; + + MapMaker mapMaker = null; + MapView mMapView; + + /** + * Locating component + */ + LocationClient mLocClient; + LocationData locData = null; + public MyLocationListener myListener = new MyLocationListener(); + 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 +67,52 @@ 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.myInfo.uid) { + Infomation.myInfo.gid = r.gid; + try { + autodate.schedule(new AutoUpdate(), 0, 5000); + } catch (Exception e) { + e.printStackTrace(); + } + } 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 +123,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!!!"; } @@ -110,21 +141,47 @@ public class Main extends PiztorAct { } + public class MyLocationListener implements BDLocationListener { + @Override + public void onReceiveLocation(BDLocation location) { + Log.d("GPS", "Gotten"); + if (location == null) { + return; + } + + locData.latitude = location.getLatitude(); + locData.longitude = location.getLongitude(); + locData.accuracy = location.getRadius(); + locData.direction = location.getDerect(); + + mapMaker.UpdateLocationOverlay(locData, false); + + } + + @Override + public void onReceivePoi(BDLocation poiLocation) { + if (poiLocation == null) { + return; + } + } + } + class StartStatus extends ActStatus { @Override 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.myInfo.uid); + AppMgr.transam.send(new ReqUserinfo(Infomation.token, + Infomation.username, Infomation.myInfo.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.myInfo.gid); } if (e == SuccessFetch) flushMap(); @@ -142,10 +199,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.myInfo.gid); + } + if (e == SuccessFetch) { + flushMap(); } } @@ -160,51 +218,85 @@ public class Main extends PiztorAct { @Override void enter(int e) { + // TODO + switch (e) { + case Fetch: + requesLocation(Infomation.myInfo.gid); + break; + case FocuseButtonPress: + // TODO setFocus + break; + case SuccessFetch: + requesLocation(Infomation.myInfo.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()); + mMapView = (MapView) findViewById(R.id.bmapView); + mapMaker = new MapMaker(mMapView, getApplicationContext()); + mapMaker.InitMap(); + mLocClient = new LocationClient(this); + locData = new LocationData(); + mLocClient.registerLocationListener(myListener); + LocationClientOption option = new LocationClientOption(); + option.setOpenGps(true); + option.setCoorType("bd09ll"); + option.setScanSpan(5000); + mLocClient.setLocOption(option); + mLocClient.start(); + mapMaker.UpdateLocationOverlay(locData, false); } @Override @@ -215,16 +307,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 +324,43 @@ public class Main extends PiztorAct { actMgr.trigger(AppMgr.toSettings); } }); - //autodate.schedule(new AutoUpdate(), 0, 5000); + + } + + @Override + protected void onResume() { + mapMaker.onResume(); + super.onResume(); + } + + @Override + protected void onPause() { + mapMaker.onPause(); + super.onPause(); } - + + @Override + public void onStop() { + super.onStop(); + autodate.cancel(); + } + + @Override + protected void onDestroy() { + if (mLocClient != null) { + mLocClient.stop(); + } + mapMaker.onDestroy(); + super.onDestroy(); + } + @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 @@ -252,4 +370,17 @@ public class Main extends PiztorAct { return false; } + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + mMapView.onSaveInstanceState(outState); + + } + + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + mMapView.onRestoreInstanceState(savedInstanceState); + } + } |