summaryrefslogtreecommitdiff
path: root/client/Piztor/src
diff options
context:
space:
mode:
authorGoblin911 <goblinliu@gmail.com>2013-08-28 16:32:26 +0800
committerGoblin911 <goblinliu@gmail.com>2013-08-28 16:32:26 +0800
commit68ed59a88f2409f632c3731c0e5dc246713676a2 (patch)
treec0f7ba850655ed4ce0e95a5a7815541cbe24f4c9 /client/Piztor/src
parent0a8315a94d8ed1252f3f96d4ca41ddc632c3bc98 (diff)
Fixed screen-rotation bug
Diffstat (limited to 'client/Piztor/src')
-rw-r--r--client/Piztor/src/com/macaroon/piztor/AppMgr.java7
-rw-r--r--client/Piztor/src/com/macaroon/piztor/BMapUtil.java22
-rw-r--r--client/Piztor/src/com/macaroon/piztor/Main.java44
-rw-r--r--client/Piztor/src/com/macaroon/piztor/MapMaker.java31
-rw-r--r--client/Piztor/src/com/macaroon/piztor/MultiTouchListener.java98
5 files changed, 76 insertions, 126 deletions
diff --git a/client/Piztor/src/com/macaroon/piztor/AppMgr.java b/client/Piztor/src/com/macaroon/piztor/AppMgr.java
index 8e82384..aed8ca6 100644
--- a/client/Piztor/src/com/macaroon/piztor/AppMgr.java
+++ b/client/Piztor/src/com/macaroon/piztor/AppMgr.java
@@ -15,10 +15,8 @@ import com.baidu.mapapi.MKGeneralListener;
@SuppressLint("UseSparseArrays")
public class AppMgr {
- private static final String strKey = "5ba8abf7b4694ad49706b8b7538c9d6a";
+ private static final String strKey = "8a0ae50048d103b2b8b12b7066f4ea7d";
static BMapManager mBMapManager = null;
- static Context context;
-
// Status
public enum ActivityStatus {
@@ -83,6 +81,8 @@ public class AppMgr {
i.putExtra("status", true);
else i.putExtra("status", false);
}
+ if (event == loginSuccess) mBMapManager.start();
+ if (event == logout) mBMapManager.stop();
nowAct.startActivity(i);
}
@@ -127,7 +127,6 @@ public class AppMgr {
}
});
}
- AppMgr.context = context;
mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
handler = new Handler();
transam = new Transam(Infomation.ip, Infomation.port, handler);
diff --git a/client/Piztor/src/com/macaroon/piztor/BMapUtil.java b/client/Piztor/src/com/macaroon/piztor/BMapUtil.java
new file mode 100644
index 0000000..04e2e71
--- /dev/null
+++ b/client/Piztor/src/com/macaroon/piztor/BMapUtil.java
@@ -0,0 +1,22 @@
+package com.macaroon.piztor;
+
+import android.graphics.Bitmap;
+import android.view.View;
+
+public class BMapUtil {
+
+ /**
+ * 从view 得到图片
+ * @param view
+ * @return
+ */
+ public static Bitmap getBitmapFromView(View view) {
+ view.destroyDrawingCache();
+ view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
+ View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
+ view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
+ view.setDrawingCacheEnabled(true);
+ Bitmap bitmap = view.getDrawingCache(true);
+ return bitmap;
+ }
+}
diff --git a/client/Piztor/src/com/macaroon/piztor/Main.java b/client/Piztor/src/com/macaroon/piztor/Main.java
index 2820090..c3f6047 100644
--- a/client/Piztor/src/com/macaroon/piztor/Main.java
+++ b/client/Piztor/src/com/macaroon/piztor/Main.java
@@ -12,6 +12,7 @@ import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.widget.ImageButton;
+import android.widget.TextView;
import android.widget.Toast;
import com.baidu.location.BDLocation;
@@ -20,6 +21,8 @@ import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.LocationData;
import com.baidu.mapapi.map.MapView;
+import com.baidu.mapapi.map.OverlayItem;
+import com.baidu.mapapi.map.PopupOverlay;
public class Main extends PiztorAct {
final static int SearchButtonPress = 1;
@@ -29,6 +32,19 @@ public class Main extends PiztorAct {
final static int Fetch = 6;
final static int mapViewtouched = 7;
+ /**
+ * popups
+ */
+ private PopupOverlay pop = null;
+ private TextView popupText = null;
+ private View viewCache = null;
+ private View popupInfo = null;
+ private View popupLeft = null;
+ private View popupRight = null;
+ private MapView.LayoutParams layoutParam = null;
+ private OverlayItem mCurItem = null;
+
+
MapMaker mapMaker = null;
MapView mMapView;
@@ -40,7 +56,7 @@ public class Main extends PiztorAct {
public MyLocationListener myListener = new MyLocationListener();
ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
- Timer autodate;
+ //Timer autodate;
MapInfo mapInfo;
/*
* @SuppressLint("HandlerLeak") Handler fromGPS = new Handler() {
@@ -91,7 +107,7 @@ public class Main extends PiztorAct {
if (r.uid == Infomation.myInfo.uid) {
Infomation.myInfo.gid = r.gid;
try {
- autodate.schedule(new AutoUpdate(), 0, 5000);
+ //autodate.schedule(new AutoUpdate(), 0, 5000);
} catch (Exception e) {
e.printStackTrace();
}
@@ -138,7 +154,9 @@ public class Main extends PiztorAct {
// TODO flush map view
void flushMap() {
-
+ if (mapMaker != null)
+ mapMaker.UpdateMap(AppMgr.mapInfo);
+ else System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
}
public class MyLocationListener implements BDLocationListener {
@@ -155,7 +173,8 @@ public class Main extends PiztorAct {
locData.direction = location.getDerect();
mapMaker.UpdateLocationOverlay(locData, false);
-
+ if (Infomation.token != null)
+ AppMgr.transam.send(new ReqUpdate(Infomation.token, Infomation.username, locData.latitude, locData.longitude, System.currentTimeMillis(), 2000));
}
@Override
@@ -224,10 +243,10 @@ public class Main extends PiztorAct {
requesLocation(Infomation.myInfo.gid);
break;
case FocuseButtonPress:
- // TODO setFocus
+ mapMaker.UpdateLocationOverlay(locData, true);
break;
case SuccessFetch:
- requesLocation(Infomation.myInfo.gid);
+ flushMap();
break;
default:
break;
@@ -279,7 +298,7 @@ public class Main extends PiztorAct {
actMgr.add(focusStatus, mapViewtouched, startStatus);
actMgr.add(focusStatus, SuccessFetch, focusStatus);
actMgr.add(focusStatus, Fetch, focusStatus);
- autodate = new Timer();
+ //autodate = new Timer();
flushMap();
// ImageView view = (ImageView) findViewById(R.id.main_mapview);
// view.setOnTouchListener(new MultiTouchListener());
@@ -297,8 +316,15 @@ public class Main extends PiztorAct {
mLocClient.setLocOption(option);
mLocClient.start();
mapMaker.UpdateLocationOverlay(locData, false);
- }
+ }
+ /*
+ public boolean onTap(int index) {
+ OverlayItem item = getItem(index);
+ mCurItem = item;
+ if ()
+ }
+ */
@Override
protected void onStart() {
super.onStart();
@@ -342,7 +368,7 @@ public class Main extends PiztorAct {
@Override
public void onStop() {
super.onStop();
- autodate.cancel();
+ //autodate.cancel();
}
@Override
diff --git a/client/Piztor/src/com/macaroon/piztor/MapMaker.java b/client/Piztor/src/com/macaroon/piztor/MapMaker.java
index bdc3554..89f29fc 100644
--- a/client/Piztor/src/com/macaroon/piztor/MapMaker.java
+++ b/client/Piztor/src/com/macaroon/piztor/MapMaker.java
@@ -101,38 +101,39 @@ public class MapMaker extends Activity{
mMapView.getOverlays().add(mLocationOverlay);
mLocationOverlay.enableCompass();
mMapView.refresh();
+ mOverlay = new MyOverlay(context.getResources().getDrawable(R.drawable.circle_red), mMapView);
}
public void UpdateMap(MapInfo mapInfo) {
/**
- * Update Location Overlay
- */
- GeoPoint location = mapInfo.getMyInfo().getLocation();
- LocationData locationData = new LocationData();
- locationData.latitude = location.getLatitudeE6() / 1e6;
- locationData.longitude = location.getLongitudeE6() / 1e6;
- mLocationOverlay.setData(locationData);
- mMapView.refresh();
-
- /**
* Update location of others
*/
- mOverlay.removeAll();
+ if (mOverlay != null && mOverlay.getAllItem().size() != 0) {
+ System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
+ clearOverlay(mMapView);
+ System.out.println("+++++++++++++++++++++++------------------------------------------");
+ }
+ mOverlay = new MyOverlay(context.getResources().getDrawable(R.drawable.circle_red), mMapView);
//mMapView.refresh();
GeoPoint p;
Vector<UserInfo> allUsers = mapInfo.getVector();
-
+ System.out.println("SSSSSSSSSSSSSSSSize "+allUsers.size());
for(int i = 0; i < allUsers.size(); i++) {
+ if (allUsers.get(i).uid == Infomation.myInfo.uid) continue;
p = new GeoPoint((int)(allUsers.get(i).getLatitude() * 1E6)
,(int)(allUsers.get(i).getLongitude() * 1E6));
curItem = new OverlayItem(p, "^_^", "");
- curItem.setMarker(context.getResources().getDrawable(R.drawable.marka));
+ curItem.setMarker(context.getResources().getDrawable(R.drawable.circle_red));
mOverlay.addItem(curItem);
}
mItems = new ArrayList<OverlayItem>();
mItems.addAll(mOverlay.getAllItem());
- mMapView.getOverlays().add(mOverlay);
- mMapView.refresh();
+ if (mMapView != null) {
+ if (mMapView.getOverlays() != null) {
+ mMapView.getOverlays().add(mOverlay);
+ mMapView.refresh();
+ }
+ }
}
diff --git a/client/Piztor/src/com/macaroon/piztor/MultiTouchListener.java b/client/Piztor/src/com/macaroon/piztor/MultiTouchListener.java
deleted file mode 100644
index cf4911b..0000000
--- a/client/Piztor/src/com/macaroon/piztor/MultiTouchListener.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.macaroon.piztor;
-
-import android.annotation.SuppressLint;
-import android.graphics.Matrix;
-import android.graphics.PointF;
-import android.util.FloatMath;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnTouchListener;
-import android.widget.ImageView;
-
-@SuppressLint("FloatMath")
-public class MultiTouchListener implements OnTouchListener {
-
- private Matrix matrix = new Matrix();
- private Matrix preMatrix = new Matrix();
-
- private static final int NONE = 0;
- private static final int DRAG = 1;
- private static final int ZOOM = 2;
- private int mode = NONE;
-
- private PointF start = new PointF();
- private PointF mid = new PointF();
- private float preDis = 1f;
- /*private float d = 0f;
- private float newRot = 0f;
- private float[] values;*/
-
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- float[] values = new float[9];
- matrix.getValues(values);
- //System.out.println("1111111"+values[1]);
- //Log.d("Touch", "onTouch.......");
- ImageView view = (ImageView) v;
- switch (event.getAction() & MotionEvent.ACTION_MASK) {
- case MotionEvent.ACTION_DOWN:
- //Log.d("Touch", "ACTION_DOWN");
- preMatrix.set(matrix);
- start.set(event.getX(), event.getY());
- mode = DRAG;
- break;
- case MotionEvent.ACTION_POINTER_DOWN:
- //Log.d("Touch", "ACTION_POINTER_DOWN");
- preDis = spacing(event);
- if(preDis > 10f) {
- preMatrix.set(matrix);
- midPoint(mid, event);
- mode = ZOOM;
- }
- break;
- case MotionEvent.ACTION_UP:
- //Log.d("Touch", "ACTION_UP");
- case MotionEvent.ACTION_POINTER_UP:
- //Log.d("Touch", "ACTION_POINTER_UP");
- mode = NONE;
- break;
- case MotionEvent.ACTION_MOVE:
- //Log.d("Touch", "ACTION_MOVE");
- if(mode == DRAG) {
- //Log.d("Touch", "Draging");
- matrix.set(preMatrix);
- float dx = event.getX() - start.x;
- float dy = event.getY() - start.y;
- matrix.postTranslate(dx, dy);
- } else if (mode == ZOOM) {
- //Log.d("Touch","Zooming");
- float newDis = spacing(event);
- if (newDis > 10f) {
- matrix.set(preMatrix);
- float scale = (newDis / preDis);
- matrix.postScale(scale,scale,mid.x,mid.y);
- //System.out.println("ssssssssssssssssss" + scale);
- }
- }
- break;
- }
- matrix.getValues(values);
- //System.out.println("222222"+values[1]);
- view.setImageMatrix(matrix);
- matrix.getValues(values);
- //System.out.println("333333"+values[1]);
- return true;
- }
-
- private float spacing(MotionEvent event) {
- float x = event.getX(0) - event.getX(1);
- float y = event.getY(0) - event.getY(1);
- return FloatMath.sqrt(x * x + y * y);
- }
-
- private void midPoint(PointF point, MotionEvent event) {
- float x = event.getX(0) + event.getY(1);
- float y = event.getY(0) + event.getY(1);
- point.set(x / 2, y / 2);
- }
-}