用户地理位置上报

chengzhenyu 8 年之前
父節點
當前提交
e0011390ea

+ 2 - 1
app/src/main/java/ai/pai/client/activity/MainActivity.java

@@ -33,6 +33,7 @@ import com.android.views.indicators.SpringBar;
33 33
 
34 34
 import java.io.File;
35 35
 
36
+import ai.pai.client.BuildConfig;
36 37
 import ai.pai.client.R;
37 38
 import ai.pai.client.beans.GroupInfo;
38 39
 import ai.pai.client.db.DBService;
@@ -99,7 +100,7 @@ public class MainActivity extends AppCompatActivity
99 100
     protected void onResume() {
100 101
         super.onResume();
101 102
         callGuideBtn.setVisibility(TextUtils.isEmpty(Preferences.getInstance(this).getTourGuidePhone()) ? View.INVISIBLE : View.VISIBLE);
102
-        if(Preferences.getInstance(this).isTourMode()){
103
+        if(Preferences.getInstance(this).isTourMode()|| BuildConfig.DEBUG){
103 104
             Intent intent = new Intent(this, MyLocationService.class);
104 105
             intent.putExtra("command",MyLocationService.COMMAND_START_LOCATION);
105 106
             startService(intent);

+ 35 - 1
app/src/main/java/ai/pai/client/services/MyLocationService.java

@@ -9,8 +9,16 @@ import com.amap.api.location.AMapLocation;
9 9
 import com.amap.api.location.AMapLocationClient;
10 10
 import com.amap.api.location.AMapLocationClientOption;
11 11
 import com.amap.api.location.AMapLocationListener;
12
+import com.android.common.executors.ThreadExecutor;
12 13
 import com.android.common.utils.LogHelper;
13 14
 
15
+import java.util.HashMap;
16
+
17
+import ai.pai.client.BuildConfig;
18
+import ai.pai.client.db.Preferences;
19
+import ai.pai.client.utils.HttpPostTask;
20
+import ai.pai.client.utils.UrlContainer;
21
+
14 22
 
15 23
 public class MyLocationService extends Service {
16 24
 
@@ -21,6 +29,10 @@ public class MyLocationService extends Service {
21 29
     public static final int COMMAND_STOP_LOCATION = 9802;
22 30
     public static final int COMMAND_DESTROY_LOCATION = 9803;
23 31
 
32
+    private double lastLat;
33
+    private double lastLon;
34
+    private double repeatTime;
35
+
24 36
     private int status = 0; // 0:未开始  1:已开始 2:已暂停
25 37
 
26 38
     @Override
@@ -90,7 +102,7 @@ public class MyLocationService extends Service {
90 102
         mOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);//可选,设置定位模式,可选的模式有高精度、仅设备、仅网络。默认为高精度模式
91 103
         mOption.setGpsFirst(false);//可选,设置是否gps优先,只在高精度模式下有效。默认关闭
92 104
         mOption.setHttpTimeOut(30000);//可选,设置网络请求超时时间。默认为30秒。在仅设备模式下无效
93
-        mOption.setInterval(600*1000);//可选,设置定位间隔。默认为600秒
105
+        mOption.setInterval(30*1000);//可选,设置定位间隔。默认为600秒
94 106
         mOption.setNeedAddress(true);//可选,设置是否返回逆地理地址信息。默认是true
95 107
         mOption.setOnceLocation(false);//可选,设置是否单次定位。默认是false
96 108
         mOption.setOnceLocationLatest(false);//可选,设置是否等待wifi刷新,默认为false.如果设置为true,会自动变为单次定位,持续定位时不要使用
@@ -109,6 +121,7 @@ public class MyLocationService extends Service {
109 121
             double lat = loc.getLatitude();
110 122
             double lon = loc.getLongitude();
111 123
             LogHelper.d("czy","lat = "+lat+"lon="+lon+"adr="+loc.getAddress());
124
+            reportLocationWhenTourMode(lat,lon);
112 125
         }
113 126
     };
114 127
 
@@ -164,4 +177,25 @@ public class MyLocationService extends Service {
164 177
         }
165 178
     }
166 179
 
180
+private void reportLocationWhenTourMode(double lat, double lon){
181
+    if(lat == lastLat && lon ==lastLon && repeatTime<5){
182
+        repeatTime++;
183
+        return;
184
+    }
185
+    repeatTime = 0;
186
+    lastLat = lat;
187
+    lastLon = lon;
188
+    if(Preferences.getInstance(this).isTourMode()|| BuildConfig.DEBUG){
189
+        HashMap<String,String> params = new HashMap<String,String>();
190
+        String userId = Preferences.getInstance(this).getUserId();
191
+        if(userId.length()==0){
192
+            return;
193
+        }
194
+        params.put("user_id",userId);
195
+        params.put("lon",String.valueOf(lon));
196
+        params.put("lat",String.valueOf(lat));
197
+        new HttpPostTask(this,params).executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.GEO_LOCATION_URL);
198
+    }
199
+}
200
+
167 201
 }