Commit 4f7740e139b55ce1c86b03281efa303363328ebb

Authored by 杨帅
1 parent a7cac7d9

Merge branch 'master' of http://bj.gitlab.cnlive.com/cnlive-team/ModulePedometer

# Conflicts:
#	moudle_pedometer/src/main/res/layout/line_up__item_view.xml
Showing 41 changed files with 852 additions and 532 deletions
.idea/gradle.xml
@@ -3,9 +3,6 @@ @@ -3,9 +3,6 @@
3 <component name="GradleSettings"> 3 <component name="GradleSettings">
4 <option name="linkedExternalProjectsSettings"> 4 <option name="linkedExternalProjectsSettings">
5 <GradleProjectSettings> 5 <GradleProjectSettings>
6 - <compositeConfiguration>  
7 - <compositeBuild compositeDefinitionSource="SCRIPT" />  
8 - </compositeConfiguration>  
9 <option name="distributionType" value="DEFAULT_WRAPPED" /> 6 <option name="distributionType" value="DEFAULT_WRAPPED" />
10 <option name="externalProjectPath" value="$PROJECT_DIR$" /> 7 <option name="externalProjectPath" value="$PROJECT_DIR$" />
11 <option name="modules"> 8 <option name="modules">
app/src/main/java/com/example/modulepedometer/MainActivity.java
@@ -10,6 +10,7 @@ import com.cnlive.moudle.collectionTrace.ui.activity.RaceListActivity; @@ -10,6 +10,7 @@ import com.cnlive.moudle.collectionTrace.ui.activity.RaceListActivity;
10 import com.cnlive.moudle.collectionTrace.ui.activity.RaceNameListActivity; 10 import com.cnlive.moudle.collectionTrace.ui.activity.RaceNameListActivity;
11 import com.cnlive.moudle.pedometer.ui.activity.MyRecordActivity; 11 import com.cnlive.moudle.pedometer.ui.activity.MyRecordActivity;
12 import com.cnlive.moudle.pedometer.ui.activity.RunLineActivity; 12 import com.cnlive.moudle.pedometer.ui.activity.RunLineActivity;
  13 +import com.cnlive.moudle.pedometer.ui.activity.SelfRecordActivity;
13 14
14 15
15 public class MainActivity extends AppCompatActivity { 16 public class MainActivity extends AppCompatActivity {
@@ -33,6 +34,13 @@ public class MainActivity extends AppCompatActivity { @@ -33,6 +34,13 @@ public class MainActivity extends AppCompatActivity {
33 startActivity(intent); 34 startActivity(intent);
34 } 35 }
35 }); 36 });
  37 + findViewById(R.id.tool2).setOnClickListener(new View.OnClickListener() {
  38 + @Override
  39 + public void onClick(View v) {
  40 + SelfRecordActivity.newInstance(MainActivity.this, "10513196",null,null,null);
  41 +// startActivity(intent);
  42 + }
  43 + });
36 44
37 // RunLineActivity.newInstance(this,null,null,null); 45 // RunLineActivity.newInstance(this,null,null,null);
38 // Intent intent = new Intent(this, CollRunRaceDetailActivity.class); 46 // Intent intent = new Intent(this, CollRunRaceDetailActivity.class);
app/src/main/res/layout/activity_main.xml
@@ -12,15 +12,19 @@ @@ -12,15 +12,19 @@
12 android:layout_width="match_parent" 12 android:layout_width="match_parent"
13 android:layout_height="wrap_content" 13 android:layout_height="wrap_content"
14 android:layout_margin="10dp" 14 android:layout_margin="10dp"
15 - android:text="体育活动"  
16 - /> 15 + android:text="体育活动" />
17 16
18 <Button 17 <Button
19 android:id="@+id/tooll" 18 android:id="@+id/tooll"
20 android:layout_width="match_parent" 19 android:layout_width="match_parent"
21 android:layout_height="wrap_content" 20 android:layout_height="wrap_content"
22 android:layout_margin="10dp" 21 android:layout_margin="10dp"
23 - android:text="路径工具"  
24 - /> 22 + android:text="路径工具" />
25 23
  24 + <Button
  25 + android:id="@+id/tool2"
  26 + android:layout_width="match_parent"
  27 + android:layout_height="wrap_content"
  28 + android:layout_margin="10dp"
  29 + android:text="我的记录" />
26 </LinearLayout> 30 </LinearLayout>
27 \ No newline at end of file 31 \ No newline at end of file
moudle_pedometer/src/main/AndroidManifest.xml
@@ -131,7 +131,13 @@ @@ -131,7 +131,13 @@
131 android:process=":step" /> 131 android:process=":step" />
132 <activity 132 <activity
133 android:name="com.cnlive.moudle.pedometer.ui.activity.RunningFinishActivity" 133 android:name="com.cnlive.moudle.pedometer.ui.activity.RunningFinishActivity"
134 - android:process=":step" /> <!-- 路径工具 --> 134 + android:launchMode="singleTask"
  135 + android:process=":step" />
  136 + <activity
  137 + android:name="com.cnlive.moudle.pedometer.ui.activity.UploadFailDetailActivity"
  138 + android:launchMode="singleTask"
  139 + android:process=":step" />
  140 + <!--************************************************路径工具**********************************************-->
135 <service 141 <service
136 android:name="com.cnlive.moudle.collectionTrace.service.CollKeepLiveService" 142 android:name="com.cnlive.moudle.collectionTrace.service.CollKeepLiveService"
137 android:enabled="true" 143 android:enabled="true"
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/commonInfo/CommonInfo.java
@@ -25,23 +25,6 @@ public class CommonInfo { @@ -25,23 +25,6 @@ public class CommonInfo {
25 // return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getLong("stepStartTime", 0); 25 // return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getLong("stepStartTime", 0);
26 // } 26 // }
27 27
28 - /**  
29 - * 设置计步完成时间  
30 - *  
31 - * @param context  
32 - */  
33 - public static void setStepEndTime(Context context, long currentTime) {  
34 - MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).putLong("stepEndTime", currentTime);  
35 - }  
36 -  
37 - /**  
38 - * 获取计步完成时间  
39 - *  
40 - * @param context  
41 - */  
42 - public static long getStepEndTime(Context context) {  
43 - return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getLong("stepEndTime", 0);  
44 - }  
45 28
46 /** 29 /**
47 * 是否允许写入步数 30 * 是否允许写入步数
@@ -295,88 +278,10 @@ public class CommonInfo { @@ -295,88 +278,10 @@ public class CommonInfo {
295 return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getBoolean("runIsPauseState", false); 278 return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getBoolean("runIsPauseState", false);
296 } 279 }
297 280
298 - /**  
299 - * 设置轨迹查询开始时间  
300 - *  
301 - * @param context  
302 - * @param startTime  
303 - */  
304 - public static void setQueryTraceStartTime(Context context, long startTime) {  
305 - MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).putLong("runQueryTraceStartTime", startTime);  
306 -  
307 - }  
308 -  
309 - /**  
310 - * 互殴轨迹查询开始时间  
311 - *  
312 - * @param context  
313 - */  
314 - public static long getQueryTraceStartTime(Context context) {  
315 - return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getLong("runQueryTraceStartTime", 0);  
316 281
317 - }  
318 282
319 - /**  
320 - * 设置轨迹查询结束时间  
321 - *  
322 - * @param context  
323 - * @param startTime  
324 - */  
325 - public static void setQueryTraceEndTime(Context context, long startTime) {  
326 - MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).putLong("runQueryTraceEndTime", startTime);  
327 283
328 - }  
329 284
330 - /**  
331 - * 互殴轨迹查询开始时间  
332 - *  
333 - * @param context  
334 - */  
335 - public static long getQueryTraceEndTime(Context context) {  
336 - return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getLong("runQueryTraceEndTime", 0);  
337 -  
338 - }  
339 -  
340 - /**  
341 - * 设置轨迹查询实体名称  
342 - *  
343 - * @param context  
344 - */  
345 - public static void setQueryEntityName(Context context, String entityName) {  
346 - MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).putString("runQueryEntityName", entityName);  
347 -  
348 - }  
349 -  
350 - /**  
351 - * 互殴轨迹查询\的实体名称  
352 - *  
353 - * @param context  
354 - */  
355 - public static String getQueryQueryEntityName(Context context) {  
356 - return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getString("runQueryEntityName", "");  
357 -  
358 - }  
359 -  
360 -  
361 - /**  
362 - * 设置赛事标题  
363 - *  
364 - * @param context  
365 - */  
366 - public static void setStreetTitle(Context context, String streetTitle) {  
367 - MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).putString("runStreetTitle", streetTitle);  
368 -  
369 - }  
370 -  
371 - /**  
372 - * 互殴轨迹查询\的实体名称  
373 - *  
374 - * @param context  
375 - */  
376 - public static String getStreetTitle(Context context) {  
377 - return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getString("runStreetTitle", "");  
378 -  
379 - }  
380 285
381 286
382 /*重置 287 /*重置
@@ -395,9 +300,6 @@ public class CommonInfo { @@ -395,9 +300,6 @@ public class CommonInfo {
395 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("IsFirstShowTimeTip"); 300 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("IsFirstShowTimeTip");
396 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("runIsPauseState"); 301 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("runIsPauseState");
397 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("runStreetTitle"); 302 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("runStreetTitle");
398 -// MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("runQueryTraceStartTime");  
399 -// MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("runQueryTraceEndTime");  
400 -// MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("runQueryEntityName");  
401 303
402 304
403 } 305 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/presenter/RunningFinishFragmetPresenter.java
@@ -22,6 +22,7 @@ import com.cnlive.libs.base.logic.callback.SuccessCallback; @@ -22,6 +22,7 @@ import com.cnlive.libs.base.logic.callback.SuccessCallback;
22 import com.cnlive.libs.base.util.ToastUtil; 22 import com.cnlive.libs.base.util.ToastUtil;
23 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo; 23 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo;
24 import com.cnlive.moudle.pedometer.frame.view.RunningFinishFragmentView; 24 import com.cnlive.moudle.pedometer.frame.view.RunningFinishFragmentView;
  25 +import com.cnlive.moudle.pedometer.model.Constant;
25 import com.cnlive.moudle.pedometer.model.RunningFinishBean; 26 import com.cnlive.moudle.pedometer.model.RunningFinishBean;
26 import com.cnlive.moudle.pedometer.net.ApiServiceRunLin; 27 import com.cnlive.moudle.pedometer.net.ApiServiceRunLin;
27 import com.cnlive.moudle.pedometer.net.SubscriptionRequest; 28 import com.cnlive.moudle.pedometer.net.SubscriptionRequest;
@@ -59,8 +60,11 @@ import static com.cnlive.libs.base.logic.Config.STATE_LOAD; @@ -59,8 +60,11 @@ import static com.cnlive.libs.base.logic.Config.STATE_LOAD;
59 public class RunningFinishFragmetPresenter extends MvpBasePresenter<RunningFinishFragmentView> { 60 public class RunningFinishFragmetPresenter extends MvpBasePresenter<RunningFinishFragmentView> {
60 private LBSTraceClient mClient = null; 61 private LBSTraceClient mClient = null;
61 private List<LatLng> importPoints; 62 private List<LatLng> importPoints;
  63 + private SelectDialog uploadFailDialog;
  64 + private SelectDialog failTraceDialog;
62 65
63 public void saveRouteData(Activity context, UserStepEntity userStepEntity, RunningFinishBean runningFinishBean) { 66 public void saveRouteData(Activity context, UserStepEntity userStepEntity, RunningFinishBean runningFinishBean) {
  67 + QMUITipDialogUtil.loadingDialog(context, "正在上传数据", false);
64 // 赛事id 68 // 赛事id
65 String eventId = userStepEntity.getStreetId(); 69 String eventId = userStepEntity.getStreetId();
66 //用户ID 70 //用户ID
@@ -83,6 +87,7 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis @@ -83,6 +87,7 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
83 } 87 }
84 // 路线图 88 // 路线图
85 String roadmap = runningFinishBean.getRoadmap(); 89 String roadmap = runningFinishBean.getRoadmap();
  90 + roadmap = "";
86 //经纬度 91 //经纬度
87 String latLongitude = ""; 92 String latLongitude = "";
88 // 开始时间 93 // 开始时间
@@ -127,18 +132,41 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis @@ -127,18 +132,41 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
127 .setFailureCallback(new FailureCallback() { 132 .setFailureCallback(new FailureCallback() {
128 @Override 133 @Override
129 public void onFailure(int code, String message) { 134 public void onFailure(int code, String message) {
130 - QMUITipDialogUtil.dismessDialog();  
131 if (getView() == null) { 135 if (getView() == null) {
132 return; 136 return;
133 } 137 }
134 Log.e("saveRouteData", "onFailure: " + message); 138 Log.e("saveRouteData", "onFailure: " + message);
135 -// getView().hideLoadingView();  
136 -// getView().showRetryView(code, new View.OnClickListener() {  
137 -// @Override  
138 -// public void onClick(View view) {  
139 -// getRunRaceDetailInfo(context, id, userId,state);  
140 -// }  
141 -// }); 139 + QMUITipDialogUtil.dismessDialog();
  140 + if (uploadFailDialog == null) {
  141 + uploadFailDialog = new SelectDialog(context, "上传数据失败,是否重试?", "重试", new SelectDialog.DialogInterface() {
  142 + @Override
  143 + public void onClick(SelectDialog dialog) {
  144 + dialog.dismiss();
  145 + saveRouteData(context, userStepEntity, runningFinishBean);
  146 + }
  147 + }, "暂存", new SelectDialog.DialogInterface() {
  148 + @Override
  149 + public void onClick(SelectDialog dialog) {
  150 + dialog.dismiss();
  151 + StepUtil.clearRunData(context, CommonInfo.getUserId(context));
  152 + CommonInfo.reset(context);
  153 + //跳转到上传失败列表
  154 + LineUpAgainActivity.newInstance(context);
  155 + //关闭当前窗口
  156 + context.finish();
  157 +
  158 + }
  159 + });
  160 + uploadFailDialog.setCanceledOnTouchOutside(false);
  161 + uploadFailDialog.setCancelable(false);
  162 + if (!uploadFailDialog.isShowing()) {
  163 + uploadFailDialog.show();
  164 + }
  165 + } else {
  166 + if (!uploadFailDialog.isShowing()) {
  167 + uploadFailDialog.show();
  168 + }
  169 + }
142 } 170 }
143 }).setSuccessCallback(new SuccessCallback<BaseInfo>() { 171 }).setSuccessCallback(new SuccessCallback<BaseInfo>() {
144 @Override 172 @Override
@@ -146,10 +174,15 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis @@ -146,10 +174,15 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
146 if (getView() == null) { 174 if (getView() == null) {
147 return; 175 return;
148 } 176 }
149 - Log.e("saveRouteData", "onSuccess: ");  
150 -  
151 QMUITipDialogUtil.dismessDialog(); 177 QMUITipDialogUtil.dismessDialog();
152 getView().updataIsFinish(runningFinishBean); 178 getView().updataIsFinish(runningFinishBean);
  179 + //删除暂存数据
  180 + FailedEntity entity = StepUtil.getTempSaveFailData(context, CommonInfo.getUserId(context), userStepEntity.getStartTimeStamp());
  181 + if (entity != null) {
  182 + //删除
  183 + StepUtil.deleteTempSaveFailData(context, entity);
  184 + }
  185 + //删除当前跑步数据
153 StepUtil.clearRunData(context, CommonInfo.getUserId(context)); 186 StepUtil.clearRunData(context, CommonInfo.getUserId(context));
154 CommonInfo.reset(context); 187 CommonInfo.reset(context);
155 188
@@ -161,6 +194,7 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis @@ -161,6 +194,7 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
161 * 查询当前用户历史轨迹 194 * 查询当前用户历史轨迹
162 */ 195 */
163 public void queryHistoryTrace(Activity context, UserStepEntity userStepEntity, RunningFinishBean runningFinishBean) { 196 public void queryHistoryTrace(Activity context, UserStepEntity userStepEntity, RunningFinishBean runningFinishBean) {
  197 + QMUITipDialogUtil.loadingDialog(context, "正在获取轨迹信息,请稍后", false);
164 //查询当前用户的历史轨迹 198 //查询当前用户的历史轨迹
165 long startTime = userStepEntity.getStartTimeStamp(); 199 long startTime = userStepEntity.getStartTimeStamp();
166 //获取当前的时间戳(秒) 200 //获取当前的时间戳(秒)
@@ -179,10 +213,11 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis @@ -179,10 +213,11 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
179 @Override 213 @Override
180 public void success(List<LatLng> resultPoints) { 214 public void success(List<LatLng> resultPoints) {
181 if (resultPoints != null) { 215 if (resultPoints != null) {
182 - if (getView() != null && resultPoints != null) {  
183 - if (importPoints != null && resultPoints != null) { 216 + if (getView() != null) {
  217 + QMUITipDialogUtil.dismessDialog();
  218 + if (importPoints != null) {
184 //判断是否完成 219 //判断是否完成
185 - boolean isFinish = MyMapUtil.checkIsFinishTrace(importPoints, resultPoints, 0.6); 220 + boolean isFinish = MyMapUtil.checkIsFinishTrace(importPoints, resultPoints, Constant.PASS_RATE);
186 if (isFinish) { 221 if (isFinish) {
187 Toast.makeText(context, "完成", Toast.LENGTH_LONG).show(); 222 Toast.makeText(context, "完成", Toast.LENGTH_LONG).show();
188 runningFinishBean.setIsFinish("1"); 223 runningFinishBean.setIsFinish("1");
@@ -191,161 +226,50 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis @@ -191,161 +226,50 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
191 runningFinishBean.setIsFinish("0"); 226 runningFinishBean.setIsFinish("0");
192 } 227 }
193 MyMapUtil.drawHistoryTrack(context, getView().baiduMap, resultPoints, SortType.asc, R.color.red, R.drawable.icon_start, R.drawable.icon_end); 228 MyMapUtil.drawHistoryTrack(context, getView().baiduMap, resultPoints, SortType.asc, R.color.red, R.drawable.icon_start, R.drawable.icon_end);
194 - new Handler().postDelayed(new Runnable() {  
195 - @Override  
196 - public void run() {  
197 - //开始截图  
198 - getView().baiduMap.snapshot(new BaiduMap.SnapshotReadyCallback() {  
199 - @Override  
200 - public void onSnapshotReady(Bitmap bitmap) {  
201 - if (context == null) {  
202 - return;  
203 - }  
204 - if (null == bitmap) {  
205 - return;  
206 - }  
207 - //开始保存截屏  
208 - try {  
209 - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");  
210 - File image = new File(context.getExternalCacheDir() + "/location_screenshot_" + sdf.format(new Date()) + ".jpeg");  
211 - FileOutputStream fos = new FileOutputStream(image);  
212 - boolean b = bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);  
213 - fos.flush();  
214 - fos.close();  
215 - String mapImagePath = image.getAbsolutePath();  
216 - if (!TextUtils.isEmpty(mapImagePath)) {  
217 - QMUITipDialogUtil.loadingDialog(context, "正在上传数据", false);  
218 - //开始上传7牛  
219 - List<String> imagePaths = new ArrayList<>();  
220 - imagePaths.add(mapImagePath);  
221 - UploadLogic.uploadAddressPicInfo(getView().getContext(), imagePaths, new Event<String>()  
222 - .setFailureCallback(new FailureCallback() {  
223 - @Override  
224 - public void onFailure(int i, String s) {  
225 - QMUITipDialogUtil.dismessDialog();  
226 - }  
227 - })  
228 - .setSuccessCallback(new SuccessCallback<String>() {  
229 - @Override  
230 - public void onSuccess(String data) {  
231 - //设置截图  
232 - runningFinishBean.setRoadmap(data);  
233 - //开始向服务器传数据  
234 - saveRouteData(context, userStepEntity, runningFinishBean);  
235 - }  
236 - })  
237 - );  
238 - }  
239 - } catch (Exception e) {  
240 - e.printStackTrace();  
241 - }  
242 - }  
243 - });  
244 -//  
245 - }  
246 - }, 2000);  
247 - // 229 + saveRouteData(context, userStepEntity, runningFinishBean);
248 } 230 }
249 } 231 }
250 } 232 }
251 //查询失败 233 //查询失败
252 else { 234 else {
253 QMUITipDialogUtil.dismessDialog(); 235 QMUITipDialogUtil.dismessDialog();
254 - SelectDialog selectDialog = new SelectDialog(context, "获取轨迹失败,是否重试?", "重试", new SelectDialog.DialogInterface() {  
255 - @Override  
256 - public void onClick(SelectDialog dialog) {  
257 - dialog.dismiss();  
258 - queryHistoryTrace(context, userStepEntity, runningFinishBean); 236 + if (failTraceDialog == null) {
  237 + failTraceDialog = new SelectDialog(context, "获取轨迹失败,是否重试?", "重试", new SelectDialog.DialogInterface() {
  238 + @Override
  239 + public void onClick(SelectDialog dialog) {
  240 + dialog.dismiss();
  241 + queryHistoryTrace(context, userStepEntity, runningFinishBean);
  242 + }
  243 + }, "暂存", new SelectDialog.DialogInterface() {
  244 + @Override
  245 + public void onClick(SelectDialog dialog) {
  246 + dialog.dismiss();
  247 + StepUtil.clearRunData(context, CommonInfo.getUserId(context));
  248 + CommonInfo.reset(context);
  249 + //跳转到上传失败列表
  250 + LineUpAgainActivity.newInstance(context);
  251 + //关闭当前窗口
  252 + context.finish();
  253 +
  254 + }
  255 + });
  256 + failTraceDialog.setCanceledOnTouchOutside(false);
  257 + failTraceDialog.setCancelable(false);
  258 + if (!failTraceDialog.isShowing()) {
  259 + failTraceDialog.show();
259 } 260 }
260 - }, "暂存", new SelectDialog.DialogInterface() {  
261 - @Override  
262 - public void onClick(SelectDialog dialog) {  
263 - setFailData(context, userStepEntity, runningFinishBean);  
264 261
265 - dialog.dismiss(); 262 + } else {
  263 + if (!failTraceDialog.isShowing()) {
  264 + failTraceDialog.show();
266 } 265 }
267 - });  
268 - selectDialog.setCanceledOnTouchOutside(false);  
269 - selectDialog.setCancelable(false);  
270 - selectDialog.show(); 266 + }
271 } 267 }
272 } 268 }
273 }); 269 });
274 270
275 } 271 }
276 272
277 - public void setFailData(Activity activity, UserStepEntity userStepEntity, RunningFinishBean runningFinishBean) {  
278 - if (userStepEntity == null || runningFinishBean == null || activity == null) {  
279 - return;  
280 - }  
281 - //设置数据  
282 - FailedEntity failedEntity = new FailedEntity();  
283 - //设置主键  
284 - failedEntity.setUuid(StepUtil.getUUID());  
285 - //设置用户id  
286 - failedEntity.setUid(userStepEntity.getUserId());  
287 - //设置当前数据创建时间戳  
288 - failedEntity.setCreatTimeStamp(TimeUtil.getNowTimeStamp());  
289 - //设置是否暂停  
290 - if (userStepEntity.getPauseCount() > 1) {  
291 - failedEntity.setIsPause(true);  
292 - //设置暂停时间  
293 - failedEntity.setUserPauseTime(userStepEntity.getUserPauseTimeStamp());  
294 - //设置继续时间戳  
295 - failedEntity.setUsrContinueTime(userStepEntity.getContinueTime());  
296 - } else {  
297 - failedEntity.setIsPause(false);  
298 - }  
299 - //设置用时  
300 - failedEntity.setTime(runningFinishBean.getEmployTime());  
301 - //设置配速  
302 - if ("--".equals(runningFinishBean.getSpeed())) {  
303 - failedEntity.setSpeed("0");  
304 - } else {  
305 - failedEntity.setSpeed(runningFinishBean.getSpeed());  
306 - }  
307 - //设置步数  
308 - if ("--".equals(runningFinishBean.getStep())) {  
309 - failedEntity.setStep("0");  
310 - } else {  
311 - failedEntity.setStep(runningFinishBean.getStep());  
312 - }  
313 - //设置距离  
314 - if ("--".equals(runningFinishBean.getRunDistance())) {  
315 - failedEntity.setDistance("0");  
316 - } else {  
317 - failedEntity.setDistance(runningFinishBean.getRunDistance());  
318 - }  
319 - //设置开始地点  
320 - failedEntity.setStartPoint(userStepEntity.getStartPoint());  
321 - //设置结束地点  
322 - failedEntity.setEndPoint(userStepEntity.getEndPoint());  
323 - //设置赛道开始时间  
324 - failedEntity.setStreetTraceStartTime(userStepEntity.getQueryTraceStartTime());  
325 - //设置赛道结束时间  
326 - failedEntity.setStreetTraceEndTime(userStepEntity.getQueryTraceEndTime());  
327 - //设置赛道查询实体  
328 - failedEntity.setEntityName(userStepEntity.getQueryEntityName());  
329 - //设置用户开始时间  
330 - failedEntity.setUserStartTime(userStepEntity.getStartTimeStamp());  
331 - //设置用户完成时间  
332 - failedEntity.setUserEndTime(userStepEntity.getFinishTimeStamp());  
333 - //设置关键点  
334 - failedEntity.setImportPoint(userStepEntity.getImportPoint());  
335 - //设置赛事id  
336 - failedEntity.setStreetId(userStepEntity.getStreetId());  
337 - //设置赛事标题  
338 - failedEntity.setStreetTitle(userStepEntity.getStreetTitle());  
339 - //设置数据  
340 - StepUtil.setFailData(activity, failedEntity);  
341 - //跳转到上传失败列表  
342 - LineUpAgainActivity.newInstance(activity);  
343 - StepUtil.clearRunData(activity, CommonInfo.getUserId(activity));  
344 - CommonInfo.reset(activity);  
345 - //关闭当前窗口  
346 - activity.finish();  
347 -  
348 - }  
349 273
350 /** 274 /**
351 * 查询运营人员踩得轨迹 275 * 查询运营人员踩得轨迹
@@ -377,4 +301,60 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis @@ -377,4 +301,60 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
377 } 301 }
378 302
379 } 303 }
  304 +
  305 +
  306 +// new Handler().postDelayed(new Runnable() {
  307 +// @Override
  308 +// public void run() {
  309 +// //开始截图
  310 +// getView().baiduMap.snapshot(new BaiduMap.SnapshotReadyCallback() {
  311 +// @Override
  312 +// public void onSnapshotReady(Bitmap bitmap) {
  313 +// if (context == null) {
  314 +// return;
  315 +// }
  316 +// if (null == bitmap) {
  317 +// return;
  318 +// }
  319 +// //开始保存截屏
  320 +// try {
  321 +// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
  322 +// File image = new File(context.getExternalCacheDir() + "/location_screenshot_" + sdf.format(new Date()) + ".jpeg");
  323 +// FileOutputStream fos = new FileOutputStream(image);
  324 +// boolean b = bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
  325 +// fos.flush();
  326 +// fos.close();
  327 +// String mapImagePath = image.getAbsolutePath();
  328 +// if (!TextUtils.isEmpty(mapImagePath)) {
  329 +// QMUITipDialogUtil.loadingDialog(context, "正在上传数据", false);
  330 +// //开始上传7牛
  331 +// List<String> imagePaths = new ArrayList<>();
  332 +// imagePaths.add(mapImagePath);
  333 +// UploadLogic.uploadAddressPicInfo(getView().getContext(), imagePaths, new Event<String>()
  334 +// .setFailureCallback(new FailureCallback() {
  335 +// @Override
  336 +// public void onFailure(int i, String s) {
  337 +// QMUITipDialogUtil.dismessDialog();
  338 +// }
  339 +// })
  340 +// .setSuccessCallback(new SuccessCallback<String>() {
  341 +// @Override
  342 +// public void onSuccess(String data) {
  343 +// //设置截图
  344 +// runningFinishBean.setRoadmap(data);
  345 +// //开始向服务器传数据
  346 +// saveRouteData(context, userStepEntity, runningFinishBean);
  347 +// }
  348 +// })
  349 +// );
  350 +// }
  351 +// } catch (Exception e) {
  352 +// e.printStackTrace();
  353 +// }
  354 +// }
  355 +// });
  356 +////
  357 +// }
  358 +// }, 2000);
  359 + //
380 } 360 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/presenter/UploadFailDetailFragmentPresenter.java 0 → 100644
  1 +package com.cnlive.moudle.pedometer.frame.presenter;
  2 +
  3 +import com.cnlive.moudle.pedometer.frame.view.UploadFailDetailFragmentView;
  4 +import com.hannesdorfmann.mosby3.mvp.MvpBasePresenter;
  5 +
  6 +public class UploadFailDetailFragmentPresenter extends MvpBasePresenter<UploadFailDetailFragmentView> {
  7 +}
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/LineUpAgainView.java
1 package com.cnlive.moudle.pedometer.frame.view; 1 package com.cnlive.moudle.pedometer.frame.view;
2 2
3 import android.support.v7.widget.LinearLayoutManager; 3 import android.support.v7.widget.LinearLayoutManager;
  4 +import android.view.View;
4 5
5 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo; 6 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo;
6 import com.cnlive.moudle.pedometer.sql.entity.FailedEntity; 7 import com.cnlive.moudle.pedometer.sql.entity.FailedEntity;
  8 +import com.cnlive.moudle.pedometer.ui.activity.UploadFailDetailActivity;
7 import com.cnlive.moudle.pedometer.ui.adapter.LineUpAgainAdapter; 9 import com.cnlive.moudle.pedometer.ui.adapter.LineUpAgainAdapter;
8 import com.cnlive.moudle.pedometer.ui.fragment.LineUpAgainFragment; 10 import com.cnlive.moudle.pedometer.ui.fragment.LineUpAgainFragment;
9 import com.cnlive.moudle.pedometer.utils.StepUtil; 11 import com.cnlive.moudle.pedometer.utils.StepUtil;
@@ -34,19 +36,19 @@ public class LineUpAgainView implements MvpView { @@ -34,19 +36,19 @@ public class LineUpAgainView implements MvpView {
34 }); 36 });
35 fragment.binding.topbar.setTitle("重新上传"); 37 fragment.binding.topbar.setTitle("重新上传");
36 //获取上传失败的数据 38 //获取上传失败的数据
37 - List<FailedEntity> failedEntities = StepUtil.getFailListData(fragment.getContext(), CommonInfo.getUserId(fragment.getContext()));  
38 - //没有失败数据  
39 - if (failedEntities == null) {  
40 -  
41 - }  
42 - //有失败数据  
43 - else {  
44 - againAdapter = new LineUpAgainAdapter(failedEntities, fragment.getActivity());  
45 - fragment.binding.recycler.setAdapter(againAdapter);  
46 - }  
47 // fragment.binding.refreshLayout.setRefreshHeader(new ClassicsHeader(fragment.getActivity())); 39 // fragment.binding.refreshLayout.setRefreshHeader(new ClassicsHeader(fragment.getActivity()));
48 // fragment.binding.refreshLayout.setRefreshFooter(new ClassicsFooter(fragment.getActivity())); 40 // fragment.binding.refreshLayout.setRefreshFooter(new ClassicsFooter(fragment.getActivity()));
49 fragment.binding.recycler.setLayoutManager(new LinearLayoutManager(fragment.getActivity())); 41 fragment.binding.recycler.setLayoutManager(new LinearLayoutManager(fragment.getActivity()));
50 } 42 }
51 43
  44 + public void setData(List<FailedEntity> failedEntities) {
  45 + againAdapter = new LineUpAgainAdapter(failedEntities, fragment.getActivity());
  46 + fragment.binding.recycler.setAdapter(againAdapter);
  47 + againAdapter.setOnClickListener(new LineUpAgainAdapter.OnClickListener() {
  48 + @Override
  49 + public void onClickListener(FailedEntity bean, int position) {
  50 + UploadFailDetailActivity.startActivity(fragment.getActivity(), bean);
  51 + }
  52 + });
  53 + }
52 } 54 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunMainFragmentView.java
1 package com.cnlive.moudle.pedometer.frame.view; 1 package com.cnlive.moudle.pedometer.frame.view;
2 2
  3 +import android.app.Activity;
3 import android.content.Context; 4 import android.content.Context;
4 import android.content.Intent; 5 import android.content.Intent;
5 import android.os.Handler; 6 import android.os.Handler;
@@ -25,9 +26,12 @@ import com.cnlive.moudle.pedometer.model.RunningFinishBean; @@ -25,9 +26,12 @@ import com.cnlive.moudle.pedometer.model.RunningFinishBean;
25 import com.cnlive.moudle.pedometer.model.RunningMapBean; 26 import com.cnlive.moudle.pedometer.model.RunningMapBean;
26 import com.cnlive.moudle.pedometer.model.Constant; 27 import com.cnlive.moudle.pedometer.model.Constant;
27 import com.cnlive.moudle.pedometer.model.MessageEvent; 28 import com.cnlive.moudle.pedometer.model.MessageEvent;
  29 +import com.cnlive.moudle.pedometer.net.bean.RunRaceDetailInfo;
28 import com.cnlive.moudle.pedometer.service.KeepLiveService; 30 import com.cnlive.moudle.pedometer.service.KeepLiveService;
29 import com.cnlive.moudle.pedometer.service.StepService; 31 import com.cnlive.moudle.pedometer.service.StepService;
  32 +import com.cnlive.moudle.pedometer.sql.entity.FailedEntity;
30 import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity; 33 import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity;
  34 +import com.cnlive.moudle.pedometer.ui.activity.LineUpAgainActivity;
31 import com.cnlive.moudle.pedometer.ui.activity.RunRaceDetailActivity; 35 import com.cnlive.moudle.pedometer.ui.activity.RunRaceDetailActivity;
32 import com.cnlive.moudle.pedometer.ui.activity.RunningFinishActivity; 36 import com.cnlive.moudle.pedometer.ui.activity.RunningFinishActivity;
33 import com.cnlive.moudle.pedometer.ui.activity.RunningMapActivity; 37 import com.cnlive.moudle.pedometer.ui.activity.RunningMapActivity;
@@ -117,10 +121,27 @@ public class RunMainFragmentView implements MvpView { @@ -117,10 +121,27 @@ public class RunMainFragmentView implements MvpView {
117 /** 121 /**
118 * 初始化相关视图 122 * 初始化相关视图
119 */ 123 */
120 - public void initView() { 124 + public void initView(RunRaceDetailInfo runRaceDetailInfo) {
121 Log.e(TAG, "initView: +时间" + SystemClock.elapsedRealtime()); 125 Log.e(TAG, "initView: +时间" + SystemClock.elapsedRealtime());
122 uid = CommonInfo.getUserId(getContext()); 126 uid = CommonInfo.getUserId(getContext());
123 userStepEntity = StepUtil.getUserStepData(getContext(), uid); 127 userStepEntity = StepUtil.getUserStepData(getContext(), uid);
  128 + //设置数据
  129 + if (userStepEntity != null) {
  130 + //设置赛事标题
  131 + if (TextUtils.isEmpty(userStepEntity.getStreetTitle())) {
  132 + StepUtil.setStreetTitle(getContext(), CommonInfo.getUserId(getContext()), runRaceDetailInfo.getTitle());
  133 + }
  134 + //设置实体名字
  135 + if (TextUtils.isEmpty(userStepEntity.getQueryEntityName())) {
  136 + long startTime = Long.parseLong(runRaceDetailInfo.getStartTime());
  137 + long endTime = Long.parseLong(runRaceDetailInfo.getEndTime());
  138 + StepUtil.setQueryTraceTime(getContext(), CommonInfo.getUserId(getContext()), startTime, endTime, runRaceDetailInfo.getEntityName());
  139 + }
  140 + //设置重要点
  141 + if (TextUtils.isEmpty(userStepEntity.getImportPoint())){
  142 + StepUtil.setImportPoints(getContext(),CommonInfo.getUserId(getContext()),runRaceDetailInfo.getLatLongitude());
  143 + }
  144 + }
124 initLocationClient(); 145 initLocationClient();
125 fragment.binding.llRunMainRoot.setVisibility(View.GONE); 146 fragment.binding.llRunMainRoot.setVisibility(View.GONE);
126 ButtonAnimUtil.startAnimation(fragment.binding.llStartTimeTip, false); 147 ButtonAnimUtil.startAnimation(fragment.binding.llStartTimeTip, false);
@@ -183,6 +204,7 @@ public class RunMainFragmentView implements MvpView { @@ -183,6 +204,7 @@ public class RunMainFragmentView implements MvpView {
183 204
184 } 205 }
185 }); 206 });
  207 +
186 boolean isFirstShowTime = CommonInfo.getIsFirstShowTimeTip(getContext()); 208 boolean isFirstShowTime = CommonInfo.getIsFirstShowTimeTip(getContext());
187 //当前用户已经在运动 209 //当前用户已经在运动
188 if (isFirstShowTime) { 210 if (isFirstShowTime) {
@@ -338,7 +360,6 @@ public class RunMainFragmentView implements MvpView { @@ -338,7 +360,6 @@ public class RunMainFragmentView implements MvpView {
338 setStopStartFlag(); 360 setStopStartFlag();
339 //设置运动结束时间戳 361 //设置运动结束时间戳
340 StepUtil.setUserFinishTimeStamp(getContext(), uid); 362 StepUtil.setUserFinishTimeStamp(getContext(), uid);
341 - CommonInfo.setStepEndTime(getContext(), TimeUtil.getNowTimeStamp());  
342 fragment.binding.cpCurrent.setVisibility(View.GONE); 363 fragment.binding.cpCurrent.setVisibility(View.GONE);
343 ButtonAnimUtil.setViewDefault(fragment.binding.flStop); 364 ButtonAnimUtil.setViewDefault(fragment.binding.flStop);
344 dialog.dismiss(); 365 dialog.dismiss();
@@ -349,11 +370,20 @@ public class RunMainFragmentView implements MvpView { @@ -349,11 +370,20 @@ public class RunMainFragmentView implements MvpView {
349 runningFinishBean.setSpeed(fragment.binding.tvSpeed.getText().toString()); 370 runningFinishBean.setSpeed(fragment.binding.tvSpeed.getText().toString());
350 runningFinishBean.setStep(fragment.binding.tvStepCount.getText().toString()); 371 runningFinishBean.setStep(fragment.binding.tvStepCount.getText().toString());
351 runningFinishBean.setTime(fragment.binding.chronometer.getText().toString()); 372 runningFinishBean.setTime(fragment.binding.chronometer.getText().toString());
352 - runningFinishBean.setDate(TimeUtil.getFormatNowTime()); 373 + runningFinishBean.setDate(TimeUtil.getStampToTime(userStepEntity.getFinishTimeStamp()*1000,"yyyy/MM/dd HH:mm"));
  374 + runningFinishBean.setStreetTitle(userStepEntity.getStreetTitle());
353 //设置用时 375 //设置用时
354 runningFinishBean.setEmployTime(employTime); 376 runningFinishBean.setEmployTime(employTime);
355 - RunningFinishActivity.startActivity(fragment.getActivity(), runningFinishBean);  
356 - fragment.getActivity().finish(); 377 +
  378 + //先将失败数据保存起来
  379 + if (runningFinishBean != null && userStepEntity != null) {
  380 + setFailData(getContext(), userStepEntity, runningFinishBean);
  381 + }
  382 + FailedEntity failedEntity = StepUtil.getTempSaveFailData(getContext(), CommonInfo.getUserId(getContext()), userStepEntity.getStartTimeStamp());
  383 + if (failedEntity != null) {
  384 + RunningFinishActivity.startActivity(fragment.getActivity(), runningFinishBean);
  385 + fragment.getActivity().finish();
  386 + }
357 } 387 }
358 }, "取消", new SelectDialog.DialogInterface() { 388 }, "取消", new SelectDialog.DialogInterface() {
359 @Override 389 @Override
@@ -486,6 +516,8 @@ public class RunMainFragmentView implements MvpView { @@ -486,6 +516,8 @@ public class RunMainFragmentView implements MvpView {
486 * 暂停按钮 516 * 暂停按钮
487 */ 517 */
488 public void onBtnPause() { 518 public void onBtnPause() {
  519 + //暂停计步
  520 + EventBus.getDefault().post(new MessageEvent(Constant.SERVICE_STEP_COUNT_PAUSE, ""));
489 //将当前计时器时间戳写入数据库 521 //将当前计时器时间戳写入数据库
490 setSQLPauseTime(uid); 522 setSQLPauseTime(uid);
491 //设置暂停标志 523 //设置暂停标志
@@ -537,8 +569,7 @@ public class RunMainFragmentView implements MvpView { @@ -537,8 +569,7 @@ public class RunMainFragmentView implements MvpView {
537 //停止计时 569 //停止计时
538 fragment.binding.chronometer.stop(); 570 fragment.binding.chronometer.stop();
539 mRecordTime = SystemClock.elapsedRealtime(); 571 mRecordTime = SystemClock.elapsedRealtime();
540 - //暂停计步  
541 - EventBus.getDefault().post(new MessageEvent(Constant.SERVICE_STEP_COUNT_PAUSE, "")); 572 +
542 } 573 }
543 } 574 }
544 575
@@ -692,6 +723,80 @@ public class RunMainFragmentView implements MvpView { @@ -692,6 +723,80 @@ public class RunMainFragmentView implements MvpView {
692 mLocClient.stop(); 723 mLocClient.stop();
693 } 724 }
694 } 725 }
  726 +
  727 + /**
  728 + * 暂存失败数据
  729 + *
  730 + * @param context
  731 + * @param userStepEntity
  732 + * @param runningFinishBean
  733 + */
  734 + public void setFailData(Context context, UserStepEntity userStepEntity, RunningFinishBean runningFinishBean) {
  735 + if (userStepEntity == null || runningFinishBean == null || context == null) {
  736 + return;
  737 + }
  738 + //设置数据
  739 + FailedEntity failedEntity = new FailedEntity();
  740 + //设置主键
  741 + failedEntity.setUuid(StepUtil.getUUID());
  742 + //设置用户id
  743 + failedEntity.setUid(userStepEntity.getUserId());
  744 + //设置当前数据创建时间戳
  745 + failedEntity.setCreatTimeStamp(TimeUtil.getNowTimeStamp());
  746 + //设置是否暂停
  747 + if (userStepEntity.getPauseCount() > 1) {
  748 + failedEntity.setIsPause(true);
  749 + //设置暂停时间
  750 + failedEntity.setUserPauseTime(userStepEntity.getUserPauseTimeStamp());
  751 + //设置继续时间戳
  752 + failedEntity.setUsrContinueTime(userStepEntity.getContinueTime());
  753 + } else {
  754 + failedEntity.setIsPause(false);
  755 + }
  756 + //设置用时
  757 + failedEntity.setTime(runningFinishBean.getEmployTime());
  758 + //设置配速
  759 + if ("--".equals(runningFinishBean.getSpeed())) {
  760 + failedEntity.setSpeed("0");
  761 + } else {
  762 + failedEntity.setSpeed(runningFinishBean.getSpeed());
  763 + }
  764 + //设置步数
  765 + if ("--".equals(runningFinishBean.getStep())) {
  766 + failedEntity.setStep("0");
  767 + } else {
  768 + failedEntity.setStep(runningFinishBean.getStep());
  769 + }
  770 + //设置距离
  771 + if ("--".equals(runningFinishBean.getRunDistance())) {
  772 + failedEntity.setDistance("0");
  773 + } else {
  774 + failedEntity.setDistance(runningFinishBean.getRunDistance());
  775 + }
  776 + //设置开始地点
  777 + failedEntity.setStartPoint(userStepEntity.getStartPoint());
  778 + //设置结束地点
  779 + failedEntity.setEndPoint(userStepEntity.getEndPoint());
  780 + //设置赛道开始时间
  781 + failedEntity.setStreetTraceStartTime(userStepEntity.getQueryTraceStartTime());
  782 + //设置赛道结束时间
  783 + failedEntity.setStreetTraceEndTime(userStepEntity.getQueryTraceEndTime());
  784 + //设置赛道查询实体
  785 + failedEntity.setEntityName(userStepEntity.getQueryEntityName());
  786 + //设置用户开始时间
  787 + failedEntity.setUserStartTime(userStepEntity.getStartTimeStamp());
  788 + //设置用户完成时间
  789 + failedEntity.setUserEndTime(userStepEntity.getFinishTimeStamp());
  790 + //设置关键点
  791 + failedEntity.setImportPoint(userStepEntity.getImportPoint());
  792 + //设置赛事id
  793 + failedEntity.setStreetId(userStepEntity.getStreetId());
  794 + //设置赛事标题
  795 + failedEntity.setStreetTitle(userStepEntity.getStreetTitle());
  796 + //设置数据
  797 + StepUtil.setFailData(context, failedEntity);
  798 +
  799 + }
695 } 800 }
696 801
697 802
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunRaceDetailFragmentView.java
@@ -131,7 +131,7 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -131,7 +131,7 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
131 // private String test = "[{\"latitude\":39.933889208848,\"latitudeE6\":3.9933889208848E7,\"longitude\":116.30900265517,\"longitudeE6\":1.1630900265517001E8},{\"latitude\":39.933868507347,\"latitudeE6\":3.9933868507347E7,\"longitude\":116.30865416508,\"longitudeE6\":1.1630865416508E8},{\"latitude\":39.934756505077,\"latitudeE6\":3.9934756505077E7,\"longitude\":116.30860516469,\"longitudeE6\":1.1630860516468999E8},{\"latitude\":39.934781620502,\"latitudeE6\":3.9934781620502E7,\"longitude\":116.30961013007,\"longitudeE6\":1.1630961013007E8},{\"latitude\":39.934881620374,\"latitudeE6\":3.9934881620374E7,\"longitude\":116.30960513008,\"longitudeE6\":1.1630960513008E8},{\"latitude\":39.934077623132,\"latitudeE6\":3.9934077623132E7,\"longitude\":116.30965812942,\"longitudeE6\":1.1630965812942E8},{\"latitude\":39.933972618463,\"latitudeE6\":3.9933972618463E7,\"longitude\":116.30962113087,\"longitudeE6\":1.1630962113087E8},{\"latitude\":39.933932608856,\"latitudeE6\":3.9933932608856E7,\"longitude\":116.30953913383,\"longitudeE6\":1.1630953913383E8}]"; 131 // private String test = "[{\"latitude\":39.933889208848,\"latitudeE6\":3.9933889208848E7,\"longitude\":116.30900265517,\"longitudeE6\":1.1630900265517001E8},{\"latitude\":39.933868507347,\"latitudeE6\":3.9933868507347E7,\"longitude\":116.30865416508,\"longitudeE6\":1.1630865416508E8},{\"latitude\":39.934756505077,\"latitudeE6\":3.9934756505077E7,\"longitude\":116.30860516469,\"longitudeE6\":1.1630860516468999E8},{\"latitude\":39.934781620502,\"latitudeE6\":3.9934781620502E7,\"longitude\":116.30961013007,\"longitudeE6\":1.1630961013007E8},{\"latitude\":39.934881620374,\"latitudeE6\":3.9934881620374E7,\"longitude\":116.30960513008,\"longitudeE6\":1.1630960513008E8},{\"latitude\":39.934077623132,\"latitudeE6\":3.9934077623132E7,\"longitude\":116.30965812942,\"longitudeE6\":1.1630965812942E8},{\"latitude\":39.933972618463,\"latitudeE6\":3.9933972618463E7,\"longitude\":116.30962113087,\"longitudeE6\":1.1630962113087E8},{\"latitude\":39.933932608856,\"latitudeE6\":3.9933932608856E7,\"longitude\":116.30953913383,\"longitudeE6\":1.1630953913383E8}]";
132 private LinkedList<LatLng> importLatLngs;//关键点 132 private LinkedList<LatLng> importLatLngs;//关键点
133 private LatLng startLatLng = new LatLng(39.934733, 116.308646);//起始点 133 private LatLng startLatLng = new LatLng(39.934733, 116.308646);//起始点
134 - private RunRaceDetailInfo runRaceDetailInfo; 134 + public RunRaceDetailInfo runRaceDetailInfo;
135 private UserStepEntity userStepEntity; 135 private UserStepEntity userStepEntity;
136 private boolean isDifferentStreet = false; 136 private boolean isDifferentStreet = false;
137 private LBSTraceClient mClient = null; 137 private LBSTraceClient mClient = null;
@@ -212,12 +212,6 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -212,12 +212,6 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
212 startTime = Long.parseLong(runRaceDetailInfo.getStartTime()); 212 startTime = Long.parseLong(runRaceDetailInfo.getStartTime());
213 endTime = Long.parseLong(runRaceDetailInfo.getEndTime()); 213 endTime = Long.parseLong(runRaceDetailInfo.getEndTime());
214 //todo 注意后续查询历史轨迹的时候,必须查数据库中的时间,因为涉及到历史运动恢复,所以不能用这个sp文件中的,这里设置,只是为了在服务启动成功后, 214 //todo 注意后续查询历史轨迹的时候,必须查数据库中的时间,因为涉及到历史运动恢复,所以不能用这个sp文件中的,这里设置,只是为了在服务启动成功后,
215 - //设置轨迹查询实体名称  
216 - CommonInfo.setQueryEntityName(getContext(), runRaceDetailInfo.getEntityName());  
217 - //设置轨迹查询开始时间  
218 - CommonInfo.setQueryTraceStartTime(getContext(), startTime);  
219 - //设置轨迹查询结束时间  
220 - CommonInfo.setQueryTraceEndTime(getContext(), endTime);  
221 215
222 mClient = new LBSTraceClient(getContext()); 216 mClient = new LBSTraceClient(getContext());
223 //获取轨迹 217 //获取轨迹
@@ -307,7 +301,6 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -307,7 +301,6 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
307 } 301 }
308 //设置标题 302 //设置标题
309 if (!TextUtils.isEmpty(runRaceDetailInfo.getTitle())) { 303 if (!TextUtils.isEmpty(runRaceDetailInfo.getTitle())) {
310 - CommonInfo.setStreetTitle(getContext(), runRaceDetailInfo.getTitle());  
311 fragment.binding.includeStreet.tvRaceTitle.setText(runRaceDetailInfo.getTitle()); 304 fragment.binding.includeStreet.tvRaceTitle.setText(runRaceDetailInfo.getTitle());
312 //根据标题字数动态设置卡片高度 305 //根据标题字数动态设置卡片高度
313 if (runRaceDetailInfo.getTitle().length() > 19) { 306 if (runRaceDetailInfo.getTitle().length() > 19) {
@@ -574,10 +567,10 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -574,10 +567,10 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
574 stopStepService(); 567 stopStepService();
575 startStepService(getContext()); 568 startStepService(getContext());
576 } else { 569 } else {
577 - PedometerMainActivity.startActivity(fragment.getActivity(), runRaceDetailInfo.getStartLocation(), runRaceDetailInfo.getEndLocation(), importStreetPoints); 570 + PedometerMainActivity.startActivity(fragment.getActivity(), runRaceDetailInfo);
578 } 571 }
579 } else { 572 } else {
580 - PedometerMainActivity.startActivity(fragment.getActivity(), runRaceDetailInfo.getStartLocation(), runRaceDetailInfo.getEndLocation(), importStreetPoints); 573 + PedometerMainActivity.startActivity(fragment.getActivity(), runRaceDetailInfo);
581 } 574 }
582 } 575 }
583 576
@@ -913,19 +906,9 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -913,19 +906,9 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
913 } 906 }
914 //todo 防止停止后,再次开始,无法获取到赛道的轨迹 907 //todo 防止停止后,再次开始,无法获取到赛道的轨迹
915 if (runRaceDetailInfo != null) { 908 if (runRaceDetailInfo != null) {
916 - if (!TextUtils.isEmpty(runRaceDetailInfo.getStartTime()) && !TextUtils.isEmpty(runRaceDetailInfo.getEndTime()) && !TextUtils.isEmpty(runRaceDetailInfo.getEntityName())) {  
917 - long startTime = Long.parseLong(runRaceDetailInfo.getStartTime());  
918 - long endTime = Long.parseLong(runRaceDetailInfo.getEndTime());  
919 - //todo 注意后续查询历史轨迹的时候,必须查数据库中的时间,因为涉及到历史运动恢复,所以不能用这个sp文件中的,这里设置,只是为了在服务启动成功后,  
920 - //设置轨迹查询实体名称  
921 - CommonInfo.setQueryEntityName(getContext(), runRaceDetailInfo.getEntityName());  
922 - //设置轨迹查询开始时间  
923 - CommonInfo.setQueryTraceStartTime(getContext(), startTime);  
924 - //设置轨迹查询结束时间  
925 - CommonInfo.setQueryTraceEndTime(getContext(), endTime);  
926 - }  
927 - if (!TextUtils.isEmpty(runRaceDetailInfo.getTitle())) {  
928 - CommonInfo.setStreetTitle(getContext(), runRaceDetailInfo.getTitle()); 909 + if (runRaceDetailInfo.getFenceId() != null) {
  910 + //设置围栏ID
  911 + CommonInfo.setFenceId(getContext(), Integer.parseInt(runRaceDetailInfo.getFenceId()));
929 } 912 }
930 } 913 }
931 914
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunningFinishFragmentView.java
@@ -42,6 +42,10 @@ public class RunningFinishFragmentView implements MvpView { @@ -42,6 +42,10 @@ public class RunningFinishFragmentView implements MvpView {
42 public void initView(RunningFinishBean runningFinishBean) { 42 public void initView(RunningFinishBean runningFinishBean) {
43 this.mMapView = fragment.binding.mapView; 43 this.mMapView = fragment.binding.mapView;
44 initMap(); 44 initMap();
  45 + //设置赛事标题
  46 + if (!TextUtils.isEmpty(runningFinishBean.getStreetTitle())) {
  47 + fragment.binding.includeFinishUserInfo.tvStreetName.setText(runningFinishBean.getStreetTitle());
  48 + }
45 //设置用户头像 49 //设置用户头像
46 String faceUrl = CommonInfo.getUserIcon(getContext()); 50 String faceUrl = CommonInfo.getUserIcon(getContext());
47 if (!TextUtils.isEmpty(faceUrl)) { 51 if (!TextUtils.isEmpty(faceUrl)) {
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/UploadFailDetailFragmentView.java 0 → 100644
  1 +package com.cnlive.moudle.pedometer.frame.view;
  2 +
  3 +import android.content.Context;
  4 +import android.text.TextUtils;
  5 +import android.view.View;
  6 +
  7 +import com.bumptech.glide.Glide;
  8 +import com.cnlive.moudle.pedometer.commonInfo.CommonInfo;
  9 +import com.cnlive.moudle.pedometer.sql.entity.FailedEntity;
  10 +import com.cnlive.moudle.pedometer.ui.fragment.UploadFailDetailFragment;
  11 +import com.cnlive.moudle.pedometer.utils.TimeUtil;
  12 +import com.hannesdorfmann.mosby3.mvp.MvpView;
  13 +
  14 +public class UploadFailDetailFragmentView implements MvpView {
  15 + private UploadFailDetailFragment fragment;
  16 + private FailedEntity failedEntity;
  17 +
  18 + public UploadFailDetailFragmentView(UploadFailDetailFragment fragment) {
  19 + this.fragment = fragment;
  20 + }
  21 +
  22 + public Context getContext() {
  23 + return fragment == null ? null : fragment.getActivity();
  24 + }
  25 +
  26 + public void initView(FailedEntity failedEntity) {
  27 + if (getContext() == null) {
  28 + return;
  29 + }
  30 + if (failedEntity == null) {
  31 + return;
  32 + }
  33 + this.failedEntity = failedEntity;
  34 + //隐藏loading
  35 + fragment.binding.loading.setVisibility(View.GONE);
  36 + //设置提示文字为重新上传
  37 + fragment.binding.tvRunNow.setText("重新上传");
  38 + fragment.binding.rlScrollViewStartBtn.setTag("0");
  39 + //初始化相关数据
  40 + //设置用户昵称
  41 + String nickName = CommonInfo.getUserNickName(getContext());
  42 + if (!TextUtils.isEmpty(nickName)) {
  43 + fragment.binding.includeFinishUserInfo.tvUserNickName.setText(nickName);
  44 + }
  45 + //设置用户头像
  46 + String faceUrl = CommonInfo.getUserIcon(getContext());
  47 + if (!TextUtils.isEmpty(faceUrl)) {
  48 + Glide.with(getContext()).load(faceUrl).into(fragment.binding.includeFinishUserInfo.qmIvIcon);
  49 + }
  50 + //设置赛事标题
  51 + if (!TextUtils.isEmpty(failedEntity.getStreetTitle())) {
  52 + fragment.binding.includeFinishUserInfo.tvStreetName.setText(failedEntity.getStreetTitle());
  53 + }
  54 + //设置距离
  55 + fragment.binding.includeFinishUserInfo.tvDistance.setText(failedEntity.getDistance());
  56 + //设置配速
  57 + if ("--".equals(failedEntity.getSpeed())) {
  58 + fragment.binding.includeFinishUserInfo.tvSpeed.setText("0");
  59 + } else {
  60 + fragment.binding.includeFinishUserInfo.tvSpeed.setText(failedEntity.getSpeed());
  61 + }
  62 + //设置用时
  63 + fragment.binding.includeFinishUserInfo.tvTimer.setText(TimeUtil.stampToChronometer(Long.parseLong(failedEntity.getTime())));
  64 + //设置日期
  65 + fragment.binding.includeFinishUserInfo.tvDate.setText(TimeUtil.getStampToTime(failedEntity.getUserEndTime() * 1000, "yyyy/MM/dd HH:mm"));
  66 + //设置步数
  67 + if ("--".equals(failedEntity.getStep())) {
  68 + fragment.binding.includeFinishStep.tvStep.setText("0");
  69 + } else {
  70 + fragment.binding.includeFinishStep.tvStep.setText(failedEntity.getStep());
  71 + }
  72 + //设置起点位置
  73 + fragment.binding.includeFinishRunRoute.tvStartPoint.setText(failedEntity.getStartPoint());
  74 + //设置终点位置
  75 + fragment.binding.includeFinishRunRoute.tvEndPoint.setText(failedEntity.getEndPoint());
  76 + //设置时间
  77 + fragment.binding.includeFinishRunRoute.tvTimer.setText(TimeUtil.stampToChronometer(Long.parseLong(failedEntity.getTime())));
  78 + //返回按钮点击事件
  79 + fragment.binding.flBack.setOnClickListener(new View.OnClickListener() {
  80 + @Override
  81 + public void onClick(View view) {
  82 + if (fragment.getActivity() != null) {
  83 + fragment.getActivity().finish();
  84 + }
  85 + }
  86 + });
  87 + //重新上传按钮点击事件
  88 + fragment.binding.rlScrollViewStartBtn.setOnClickListener(new View.OnClickListener() {
  89 + @Override
  90 + public void onClick(View view) {
  91 +
  92 + }
  93 + });
  94 + }
  95 +}
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/model/Constant.java
@@ -3,7 +3,7 @@ package com.cnlive.moudle.pedometer.model; @@ -3,7 +3,7 @@ package com.cnlive.moudle.pedometer.model;
3 public class Constant { 3 public class Constant {
4 public static final long SERVICE_ID = 213511; 4 public static final long SERVICE_ID = 213511;
5 public static final int TAG = 1; 5 public static final int TAG = 1;
6 - public static final int GATHER_INTERVAL =2;//位置采集周期 6 + public static final int GATHER_INTERVAL = 2;//位置采集周期
7 public static final int PACK_INTERVAL = 10;//位置采集周期 7 public static final int PACK_INTERVAL = 10;//位置采集周期
8 8
9 public static final int SERVICE_STEP_COUNT_UPDATE = 0;//步数更新 9 public static final int SERVICE_STEP_COUNT_UPDATE = 0;//步数更新
@@ -18,5 +18,6 @@ public class Constant { @@ -18,5 +18,6 @@ public class Constant {
18 public static final int START_TRACE_GATHER_SUCCESS = 9;//启动轨迹服务成功(用户) 18 public static final int START_TRACE_GATHER_SUCCESS = 9;//启动轨迹服务成功(用户)
19 public static final int START_TRACE_GATHER_FAIL = 10;//启动轨迹服务失败(用户) 19 public static final int START_TRACE_GATHER_FAIL = 10;//启动轨迹服务失败(用户)
20 public static final int REGISTRATION_SUCCESS = 11;//用户报名成功 20 public static final int REGISTRATION_SUCCESS = 11;//用户报名成功
21 - 21 + public static final double PASS_RATE = 0.7;//通过率70%
  22 + public static final int CHECK_ACCURACY = 50;//判断用户是否完成的精度范围
22 } 23 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/model/RunningFinishBean.java
@@ -20,6 +20,15 @@ public class RunningFinishBean implements Serializable { @@ -20,6 +20,15 @@ public class RunningFinishBean implements Serializable {
20 private String employTime; 20 private String employTime;
21 private String isFinish; 21 private String isFinish;
22 private String roadmap; 22 private String roadmap;
  23 + private String streetTitle;
  24 +
  25 + public String getStreetTitle() {
  26 + return streetTitle;
  27 + }
  28 +
  29 + public void setStreetTitle(String streetTitle) {
  30 + this.streetTitle = streetTitle;
  31 + }
23 32
24 public String getRoadmap() { 33 public String getRoadmap() {
25 return roadmap; 34 return roadmap;
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/net/bean/RunRaceDetailInfo.java
1 package com.cnlive.moudle.pedometer.net.bean; 1 package com.cnlive.moudle.pedometer.net.bean;
2 2
  3 +import java.io.Serializable;
3 import java.util.List; 4 import java.util.List;
4 5
5 /** 6 /**
@@ -7,7 +8,7 @@ import java.util.List; @@ -7,7 +8,7 @@ import java.util.List;
7 * 8 *
8 * @author ShinnyYang 9 * @author ShinnyYang
9 */ 10 */
10 -public class RunRaceDetailInfo { 11 +public class RunRaceDetailInfo implements Serializable {
11 12
12 13
13 /** 14 /**
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/service/StepService.java
@@ -104,11 +104,11 @@ public class StepService extends Service implements SensorEventListener { @@ -104,11 +104,11 @@ public class StepService extends Service implements SensorEventListener {
104 /** 104 /**
105 * 保存记步计时器 105 * 保存记步计时器
106 */ 106 */
107 - private TimeCount time; 107 + private static TimeCount time;
108 /** 108 /**
109 * 当前所走的步数 109 * 当前所走的步数
110 */ 110 */
111 - private int CURRENT_STEP; 111 + private int CURRENT_STEP = 0;
112 /** 112 /**
113 * 计步传感器类型 Sensor.TYPE_STEP_COUNTER或者Sensor.TYPE_STEP_DETECTOR 113 * 计步传感器类型 Sensor.TYPE_STEP_COUNTER或者Sensor.TYPE_STEP_DETECTOR
114 */ 114 */
@@ -137,7 +137,7 @@ public class StepService extends Service implements SensorEventListener { @@ -137,7 +137,7 @@ public class StepService extends Service implements SensorEventListener {
137 private Handler handler; 137 private Handler handler;
138 private Runnable speedRunnable; 138 private Runnable speedRunnable;
139 private final int NOTIFICATION_ID = 100; 139 private final int NOTIFICATION_ID = 100;
140 - private static int tempStep;//计步器临时保存步数 140 + // private static int tempStep;//计步器临时保存步数
141 private static boolean pauseFlag;//是否暂停 141 private static boolean pauseFlag;//是否暂停
142 private static int speedCurrentStep;//用于检测速度步数 142 private static int speedCurrentStep;//用于检测速度步数
143 private boolean updateSpeedStepFlag;//是否是已经更新速度 143 private boolean updateSpeedStepFlag;//是否是已经更新速度
@@ -255,18 +255,12 @@ public class StepService extends Service implements SensorEventListener { @@ -255,18 +255,12 @@ public class StepService extends Service implements SensorEventListener {
255 if (userStepEntity == null) { 255 if (userStepEntity == null) {
256 StepUtil.setStepStartData(getApplicationContext(), userId, TimeUtil.getNowTimeStamp(), CommonInfo.getStreetId(getApplicationContext())); 256 StepUtil.setStepStartData(getApplicationContext(), userId, TimeUtil.getNowTimeStamp(), CommonInfo.getStreetId(getApplicationContext()));
257 //设置从服务器获取的时间(后续查询历史轨迹的时间,要从数据库中获取,因为涉及到现有运动恢复问题) 257 //设置从服务器获取的时间(后续查询历史轨迹的时间,要从数据库中获取,因为涉及到现有运动恢复问题)
258 - StepUtil.setQueryTraceTime(getApplicationContext(), userId, CommonInfo.getQueryTraceStartTime(getApplicationContext()), CommonInfo.getQueryTraceEndTime(getApplicationContext()), CommonInfo.getQueryQueryEntityName(getApplicationContext()));  
259 int fenceId = CommonInfo.getFenceId(getApplicationContext()); 258 int fenceId = CommonInfo.getFenceId(getApplicationContext());
  259 + Log.e(TAG, "onStartTraceCallback: 保存的围栏id" + fenceId);
260 //设置围栏id 260 //设置围栏id
261 StepUtil.setFenceId(getApplicationContext(), CommonInfo.getUserId(getApplicationContext()), fenceId); 261 StepUtil.setFenceId(getApplicationContext(), CommonInfo.getUserId(getApplicationContext()), fenceId);
262 - //设置赛事标题  
263 - StepUtil.setStreetTitle(getApplicationContext(), CommonInfo.getUserId(getApplicationContext()), CommonInfo.getStreetTitle(getApplicationContext()));  
264 //清空临时保存的时间 262 //清空临时保存的时间
265 - CommonInfo.setQueryTraceEndTime(getApplicationContext(), 0);  
266 - CommonInfo.setQueryTraceStartTime(getApplicationContext(), 0);  
267 - CommonInfo.setQueryEntityName(getApplicationContext(), "");  
268 CommonInfo.setFenceId(getApplicationContext(), -1); 263 CommonInfo.setFenceId(getApplicationContext(), -1);
269 - CommonInfo.setStreetTitle(getApplicationContext(), "");  
270 264
271 } 265 }
272 //开始设置围栏报警 266 //开始设置围栏报警
@@ -632,7 +626,15 @@ public class StepService extends Service implements SensorEventListener { @@ -632,7 +626,15 @@ public class StepService extends Service implements SensorEventListener {
632 if (speedRunnable != null) { 626 if (speedRunnable != null) {
633 handler.removeCallbacks(speedRunnable); 627 handler.removeCallbacks(speedRunnable);
634 } 628 }
635 - Log.e("杀死", "MyTestService"); 629 +// Log.e("杀死", "MyTestService");
  630 + lastStep=0;
  631 + hasStepCount = 0;
  632 + hasRecord = false;
  633 + CURRENT_STEP = 0;
  634 + previousStepCount = 0;
  635 + sensorManager = null;
  636 + stepSensorType = -1;
  637 + time=null;
636 } 638 }
637 639
638 //接收事件 640 //接收事件
@@ -703,6 +705,7 @@ public class StepService extends Service implements SensorEventListener { @@ -703,6 +705,7 @@ public class StepService extends Service implements SensorEventListener {
703 CURRENT_STEP = Integer.parseInt(userStepEntity.getStepCount()); 705 CURRENT_STEP = Integer.parseInt(userStepEntity.getStepCount());
704 } 706 }
705 } 707 }
  708 + Log.e(TAG, "initTodayData: 初始化当前步数" + CURRENT_STEP);
706 if (mStepCount != null) { 709 if (mStepCount != null) {
707 mStepCount.setSteps(CURRENT_STEP); 710 mStepCount.setSteps(CURRENT_STEP);
708 } 711 }
@@ -710,6 +713,7 @@ public class StepService extends Service implements SensorEventListener { @@ -710,6 +713,7 @@ public class StepService extends Service implements SensorEventListener {
710 } 713 }
711 714
712 private void updateNotification() { 715 private void updateNotification() {
  716 + Log.e(TAG, "updateNotification: 当前步数:" + CURRENT_STEP);
713 EventBus.getDefault().post(new MessageEvent(Constant.SERVICE_STEP_COUNT_UPDATE, CURRENT_STEP)); 717 EventBus.getDefault().post(new MessageEvent(Constant.SERVICE_STEP_COUNT_UPDATE, CURRENT_STEP));
714 updateSpeedStepFlag = false; 718 updateSpeedStepFlag = false;
715 // remoteViews = new RemoteViews(getPackageName(), R.layout.custom_step_notification); 719 // remoteViews = new RemoteViews(getPackageName(), R.layout.custom_step_notification);
@@ -1005,29 +1009,45 @@ public class StepService extends Service implements SensorEventListener { @@ -1005,29 +1009,45 @@ public class StepService extends Service implements SensorEventListener {
1005 * 1009 *
1006 * @param event 1010 * @param event
1007 */ 1011 */
  1012 + private static int lastStep = 0;//有时候获取的是一样的
  1013 +
1008 @Override 1014 @Override
1009 public void onSensorChanged(SensorEvent event) { 1015 public void onSensorChanged(SensorEvent event) {
1010 //没有暂停 1016 //没有暂停
1011 if (stepSensorType == Sensor.TYPE_STEP_COUNTER) { 1017 if (stepSensorType == Sensor.TYPE_STEP_COUNTER) {
1012 //获取当前传感器返回的临时步数 1018 //获取当前传感器返回的临时步数
1013 - tempStep = (int) event.values[0]; 1019 + int tempStep = (int) event.values[0];
  1020 + Log.e(TAG, "onSensorChanged: 第一次,tempStep:" + tempStep + "lastStep:" + lastStep + ",previousStepCount" + previousStepCount + ",CURRENT_STEP" + CURRENT_STEP);
1014 //首次如果没有获取手机系统中已有的步数则获取一次系统中APP还未开始记步的步数 1021 //首次如果没有获取手机系统中已有的步数则获取一次系统中APP还未开始记步的步数
1015 if (!hasRecord) { 1022 if (!hasRecord) {
1016 hasRecord = true; 1023 hasRecord = true;
1017 hasStepCount = tempStep; 1024 hasStepCount = tempStep;
  1025 + previousStepCount = 0;
1018 } else { 1026 } else {
1019 - //获取APP打开到现在的总步数=本次系统回调的总步数-APP打开之前已有的步数  
1020 - int thisStepCount = tempStep - hasStepCount;  
1021 - //本次有效步数=(APP打开后所记录的总步数-上一次APP打开后所记录的总步数)  
1022 - int thisStep = thisStepCount - previousStepCount;  
1023 - //当用户点击暂停了  
1024 - if (pauseFlag) {  
1025 - thisStep = 0; 1027 + if (tempStep > lastStep) {
  1028 + //获取APP打开到现在的总步数=本次系统回调的总步数-APP打开之前已有的步数
  1029 + Log.e(TAG, "tempStep: " + tempStep + ",hasStepCount:" + hasStepCount);
  1030 + int thisStepCount = tempStep - hasStepCount;
  1031 + Log.e(TAG, "onSensorChanged: thisStepCount" + thisStepCount);
  1032 + //本次有效步数=(APP打开后所记录的总步数-上一次APP打开后所记录的总步数)
  1033 + int thisStep = thisStepCount - previousStepCount;
  1034 + //记录最后一次APP打开到现在的总步数
  1035 + previousStepCount = thisStepCount;
  1036 + Log.e(TAG, "本次有效步数: thisStep" + thisStep + ",previousStepCount:" + previousStepCount);
  1037 + //当用户点击暂停了
  1038 + if (pauseFlag) {
  1039 + thisStep = 0;
  1040 + Log.e(TAG, "修改: thisStepCount" + thisStep);
  1041 + }
  1042 + Log.e(TAG, "onSensorChanged: CURRENT_STEP" + CURRENT_STEP);
  1043 + if (CURRENT_STEP < 0) {
  1044 + CURRENT_STEP = -CURRENT_STEP;
  1045 + }
  1046 + //总步数=现有的步数+本次有效步数
  1047 + CURRENT_STEP += (thisStep);
  1048 + Log.e(TAG, "onSensorChanged: 加了以后" + CURRENT_STEP);
  1049 + lastStep = tempStep;
1026 } 1050 }
1027 - //总步数=现有的步数+本次有效步数  
1028 - CURRENT_STEP += (thisStep);  
1029 - //记录最后一次APP打开到现在的总步数  
1030 - previousStepCount = thisStepCount;  
1031 } 1051 }
1032 } else if (stepSensorType == Sensor.TYPE_STEP_DETECTOR) { 1052 } else if (stepSensorType == Sensor.TYPE_STEP_DETECTOR) {
1033 if (event.values[0] == 1.0) { 1053 if (event.values[0] == 1.0) {
@@ -1053,10 +1073,10 @@ public class StepService extends Service implements SensorEventListener { @@ -1053,10 +1073,10 @@ public class StepService extends Service implements SensorEventListener {
1053 * 保存记步数据 1073 * 保存记步数据
1054 */ 1074 */
1055 private void save() { 1075 private void save() {
1056 - boolean isWriteUserStep = CommonInfo.getIsWriteUserStep(getApplicationContext());  
1057 - if (!isWriteUserStep) {  
1058 - return;  
1059 - } 1076 +// boolean isWriteUserStep = CommonInfo.getIsWriteUserStep(getApplicationContext());
  1077 +// if (!isWriteUserStep) {
  1078 +// return;
  1079 +// }
1060 int tempStep = CURRENT_STEP; 1080 int tempStep = CURRENT_STEP;
1061 UserStepEntity userStepEntity = StepUtil.getUserStepData(getApplicationContext(), CommonInfo.getUserId(getApplicationContext())); 1081 UserStepEntity userStepEntity = StepUtil.getUserStepData(getApplicationContext(), CommonInfo.getUserId(getApplicationContext()));
1062 if (userStepEntity == null) { 1082 if (userStepEntity == null) {
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/sql/dao/DaoMaster.java
@@ -22,15 +22,15 @@ public class DaoMaster extends AbstractDaoMaster { @@ -22,15 +22,15 @@ public class DaoMaster extends AbstractDaoMaster {
22 /** Creates underlying database table using DAOs. */ 22 /** Creates underlying database table using DAOs. */
23 public static void createAllTables(Database db, boolean ifNotExists) { 23 public static void createAllTables(Database db, boolean ifNotExists) {
24 CollUserStepEntityDao.createTable(db, ifNotExists); 24 CollUserStepEntityDao.createTable(db, ifNotExists);
25 - UserStepEntityDao.createTable(db, ifNotExists);  
26 FailedEntityDao.createTable(db, ifNotExists); 25 FailedEntityDao.createTable(db, ifNotExists);
  26 + UserStepEntityDao.createTable(db, ifNotExists);
27 } 27 }
28 28
29 /** Drops underlying database table using DAOs. */ 29 /** Drops underlying database table using DAOs. */
30 public static void dropAllTables(Database db, boolean ifExists) { 30 public static void dropAllTables(Database db, boolean ifExists) {
31 CollUserStepEntityDao.dropTable(db, ifExists); 31 CollUserStepEntityDao.dropTable(db, ifExists);
32 - UserStepEntityDao.dropTable(db, ifExists);  
33 FailedEntityDao.dropTable(db, ifExists); 32 FailedEntityDao.dropTable(db, ifExists);
  33 + UserStepEntityDao.dropTable(db, ifExists);
34 } 34 }
35 35
36 /** 36 /**
@@ -50,8 +50,8 @@ public class DaoMaster extends AbstractDaoMaster { @@ -50,8 +50,8 @@ public class DaoMaster extends AbstractDaoMaster {
50 public DaoMaster(Database db) { 50 public DaoMaster(Database db) {
51 super(db, SCHEMA_VERSION); 51 super(db, SCHEMA_VERSION);
52 registerDaoClass(CollUserStepEntityDao.class); 52 registerDaoClass(CollUserStepEntityDao.class);
53 - registerDaoClass(UserStepEntityDao.class);  
54 registerDaoClass(FailedEntityDao.class); 53 registerDaoClass(FailedEntityDao.class);
  54 + registerDaoClass(UserStepEntityDao.class);
55 } 55 }
56 56
57 public DaoSession newSession() { 57 public DaoSession newSession() {
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/sql/dao/DaoSession.java
@@ -9,12 +9,12 @@ import org.greenrobot.greendao.identityscope.IdentityScopeType; @@ -9,12 +9,12 @@ import org.greenrobot.greendao.identityscope.IdentityScopeType;
9 import org.greenrobot.greendao.internal.DaoConfig; 9 import org.greenrobot.greendao.internal.DaoConfig;
10 10
11 import com.cnlive.moudle.pedometer.sql.entity.CollUserStepEntity; 11 import com.cnlive.moudle.pedometer.sql.entity.CollUserStepEntity;
12 -import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity;  
13 import com.cnlive.moudle.pedometer.sql.entity.FailedEntity; 12 import com.cnlive.moudle.pedometer.sql.entity.FailedEntity;
  13 +import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity;
14 14
15 import com.cnlive.moudle.pedometer.sql.dao.CollUserStepEntityDao; 15 import com.cnlive.moudle.pedometer.sql.dao.CollUserStepEntityDao;
16 -import com.cnlive.moudle.pedometer.sql.dao.UserStepEntityDao;  
17 import com.cnlive.moudle.pedometer.sql.dao.FailedEntityDao; 16 import com.cnlive.moudle.pedometer.sql.dao.FailedEntityDao;
  17 +import com.cnlive.moudle.pedometer.sql.dao.UserStepEntityDao;
18 18
19 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. 19 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
20 20
@@ -26,12 +26,12 @@ import com.cnlive.moudle.pedometer.sql.dao.FailedEntityDao; @@ -26,12 +26,12 @@ import com.cnlive.moudle.pedometer.sql.dao.FailedEntityDao;
26 public class DaoSession extends AbstractDaoSession { 26 public class DaoSession extends AbstractDaoSession {
27 27
28 private final DaoConfig collUserStepEntityDaoConfig; 28 private final DaoConfig collUserStepEntityDaoConfig;
29 - private final DaoConfig userStepEntityDaoConfig;  
30 private final DaoConfig failedEntityDaoConfig; 29 private final DaoConfig failedEntityDaoConfig;
  30 + private final DaoConfig userStepEntityDaoConfig;
31 31
32 private final CollUserStepEntityDao collUserStepEntityDao; 32 private final CollUserStepEntityDao collUserStepEntityDao;
33 - private final UserStepEntityDao userStepEntityDao;  
34 private final FailedEntityDao failedEntityDao; 33 private final FailedEntityDao failedEntityDao;
  34 + private final UserStepEntityDao userStepEntityDao;
35 35
36 public DaoSession(Database db, IdentityScopeType type, Map<Class<? extends AbstractDao<?, ?>>, DaoConfig> 36 public DaoSession(Database db, IdentityScopeType type, Map<Class<? extends AbstractDao<?, ?>>, DaoConfig>
37 daoConfigMap) { 37 daoConfigMap) {
@@ -40,37 +40,37 @@ public class DaoSession extends AbstractDaoSession { @@ -40,37 +40,37 @@ public class DaoSession extends AbstractDaoSession {
40 collUserStepEntityDaoConfig = daoConfigMap.get(CollUserStepEntityDao.class).clone(); 40 collUserStepEntityDaoConfig = daoConfigMap.get(CollUserStepEntityDao.class).clone();
41 collUserStepEntityDaoConfig.initIdentityScope(type); 41 collUserStepEntityDaoConfig.initIdentityScope(type);
42 42
43 - userStepEntityDaoConfig = daoConfigMap.get(UserStepEntityDao.class).clone();  
44 - userStepEntityDaoConfig.initIdentityScope(type);  
45 -  
46 failedEntityDaoConfig = daoConfigMap.get(FailedEntityDao.class).clone(); 43 failedEntityDaoConfig = daoConfigMap.get(FailedEntityDao.class).clone();
47 failedEntityDaoConfig.initIdentityScope(type); 44 failedEntityDaoConfig.initIdentityScope(type);
48 45
  46 + userStepEntityDaoConfig = daoConfigMap.get(UserStepEntityDao.class).clone();
  47 + userStepEntityDaoConfig.initIdentityScope(type);
  48 +
49 collUserStepEntityDao = new CollUserStepEntityDao(collUserStepEntityDaoConfig, this); 49 collUserStepEntityDao = new CollUserStepEntityDao(collUserStepEntityDaoConfig, this);
50 - userStepEntityDao = new UserStepEntityDao(userStepEntityDaoConfig, this);  
51 failedEntityDao = new FailedEntityDao(failedEntityDaoConfig, this); 50 failedEntityDao = new FailedEntityDao(failedEntityDaoConfig, this);
  51 + userStepEntityDao = new UserStepEntityDao(userStepEntityDaoConfig, this);
52 52
53 registerDao(CollUserStepEntity.class, collUserStepEntityDao); 53 registerDao(CollUserStepEntity.class, collUserStepEntityDao);
54 - registerDao(UserStepEntity.class, userStepEntityDao);  
55 registerDao(FailedEntity.class, failedEntityDao); 54 registerDao(FailedEntity.class, failedEntityDao);
  55 + registerDao(UserStepEntity.class, userStepEntityDao);
56 } 56 }
57 57
58 public void clear() { 58 public void clear() {
59 collUserStepEntityDaoConfig.clearIdentityScope(); 59 collUserStepEntityDaoConfig.clearIdentityScope();
60 - userStepEntityDaoConfig.clearIdentityScope();  
61 failedEntityDaoConfig.clearIdentityScope(); 60 failedEntityDaoConfig.clearIdentityScope();
  61 + userStepEntityDaoConfig.clearIdentityScope();
62 } 62 }
63 63
64 public CollUserStepEntityDao getCollUserStepEntityDao() { 64 public CollUserStepEntityDao getCollUserStepEntityDao() {
65 return collUserStepEntityDao; 65 return collUserStepEntityDao;
66 } 66 }
67 67
68 - public UserStepEntityDao getUserStepEntityDao() {  
69 - return userStepEntityDao;  
70 - }  
71 -  
72 public FailedEntityDao getFailedEntityDao() { 68 public FailedEntityDao getFailedEntityDao() {
73 return failedEntityDao; 69 return failedEntityDao;
74 } 70 }
75 71
  72 + public UserStepEntityDao getUserStepEntityDao() {
  73 + return userStepEntityDao;
  74 + }
  75 +
76 } 76 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/sql/entity/FailedEntity.java
@@ -4,13 +4,16 @@ import org.greenrobot.greendao.annotation.Entity; @@ -4,13 +4,16 @@ import org.greenrobot.greendao.annotation.Entity;
4 import org.greenrobot.greendao.annotation.Id; 4 import org.greenrobot.greendao.annotation.Id;
5 import org.greenrobot.greendao.annotation.Generated; 5 import org.greenrobot.greendao.annotation.Generated;
6 6
  7 +import java.io.Serializable;
  8 +
7 /** 9 /**
8 * 上传失败列表 10 * 上传失败列表
9 * 11 *
10 * @author ShinnyYang 12 * @author ShinnyYang
11 */ 13 */
12 @Entity 14 @Entity
13 -public class FailedEntity { 15 +public class FailedEntity implements Serializable {
  16 + static final long serialVersionUID = 01L;
14 @Id 17 @Id
15 private String uuid;//主键 18 private String uuid;//主键
16 private String uid;//用户id 19 private String uid;//用户id
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/activity/PedometerMainActivity.java
@@ -2,31 +2,20 @@ package com.cnlive.moudle.pedometer.ui.activity; @@ -2,31 +2,20 @@ package com.cnlive.moudle.pedometer.ui.activity;
2 2
3 import android.Manifest; 3 import android.Manifest;
4 import android.app.Activity; 4 import android.app.Activity;
5 -import android.content.Context;  
6 import android.content.Intent; 5 import android.content.Intent;
7 -import android.content.pm.PackageInfo;  
8 -import android.content.pm.PackageManager;  
9 -import android.location.LocationManager;  
10 import android.os.Build; 6 import android.os.Build;
11 import android.provider.Settings; 7 import android.provider.Settings;
12 import android.os.Bundle; 8 import android.os.Bundle;
13 import android.support.annotation.NonNull; 9 import android.support.annotation.NonNull;
14 import android.support.v4.app.NotificationManagerCompat; 10 import android.support.v4.app.NotificationManagerCompat;
15 -import android.support.v4.content.ContextCompat;  
16 import android.text.TextUtils; 11 import android.text.TextUtils;
17 import android.util.Log; 12 import android.util.Log;
18 -import android.view.KeyEvent;  
19 import android.widget.Toast; 13 import android.widget.Toast;
20 14
21 import com.alibaba.android.arouter.facade.annotation.Route; 15 import com.alibaba.android.arouter.facade.annotation.Route;
22 -import com.baidu.mapapi.CoordType;  
23 -import com.baidu.mapapi.SDKInitializer;  
24 import com.baidu.mapapi.model.LatLng; 16 import com.baidu.mapapi.model.LatLng;
25 -import com.cnlive.libs.base.ui.QMUIFragment;  
26 import com.cnlive.libs.base.ui.QMUIFragmentActivity; 17 import com.cnlive.libs.base.ui.QMUIFragmentActivity;
27 -import com.cnlive.libs.base.util.StatusBarUtil;  
28 -import com.cnlive.libs.base.util.StatusBarUtil2;  
29 -import com.cnlive.moudle.collectionTrace.ui.activity.CollPedometerMainActivity; 18 +import com.cnlive.moudle.pedometer.net.bean.RunRaceDetailInfo;
30 import com.cnlive.moudle.pedometer.ui.fragment.RunMainFragment; 19 import com.cnlive.moudle.pedometer.ui.fragment.RunMainFragment;
31 import com.cnlive.moudle.pedometer.utils.MyMapUtil; 20 import com.cnlive.moudle.pedometer.utils.MyMapUtil;
32 import com.cnlive.moudle.pedometer.utils.lib_permisshelper.PermissionsListener; 21 import com.cnlive.moudle.pedometer.utils.lib_permisshelper.PermissionsListener;
@@ -47,13 +36,11 @@ import static android.provider.Settings.EXTRA_APP_PACKAGE; @@ -47,13 +36,11 @@ import static android.provider.Settings.EXTRA_APP_PACKAGE;
47 public class PedometerMainActivity extends QMUIFragmentActivity { 36 public class PedometerMainActivity extends QMUIFragmentActivity {
48 private static final String TAG = "PedometerMainActivity"; 37 private static final String TAG = "PedometerMainActivity";
49 38
50 - private NotificationManagerCompat notificationManagerCompat;  
51 - private boolean isOpen; 39 +
52 private PermissionsUtils mPermissionsUtils = new PermissionsUtils();//权限申请 40 private PermissionsUtils mPermissionsUtils = new PermissionsUtils();//权限申请
53 private RunMainFragment fragment; 41 private RunMainFragment fragment;
54 - private String startPointAdd;  
55 - private String endPointAdd;  
56 private List<LatLng> importStreetPoints; 42 private List<LatLng> importStreetPoints;
  43 + private RunRaceDetailInfo runRaceDetailInfo;
57 44
58 @Override 45 @Override
59 protected int getContextViewId() { 46 protected int getContextViewId() {
@@ -63,9 +50,7 @@ public class PedometerMainActivity extends QMUIFragmentActivity { @@ -63,9 +50,7 @@ public class PedometerMainActivity extends QMUIFragmentActivity {
63 @Override 50 @Override
64 protected void onCreate(Bundle savedInstanceState) { 51 protected void onCreate(Bundle savedInstanceState) {
65 super.onCreate(savedInstanceState); 52 super.onCreate(savedInstanceState);
66 - startPointAdd = getIntent().getExtras().getString("startPointAdd");  
67 - endPointAdd = getIntent().getExtras().getString("endPointAdd");  
68 - importStreetPoints = (List<LatLng>) getIntent().getExtras().getSerializable("importStreetPoints"); 53 + runRaceDetailInfo = (RunRaceDetailInfo) getIntent().getExtras().get("runRaceDetailInfo");
69 } 54 }
70 55
71 56
@@ -74,51 +59,10 @@ public class PedometerMainActivity extends QMUIFragmentActivity { @@ -74,51 +59,10 @@ public class PedometerMainActivity extends QMUIFragmentActivity {
74 super.onDestroy(); 59 super.onDestroy();
75 } 60 }
76 61
77 - private void check() {  
78 -  
79 - //监测通知权限是否打开  
80 - notificationManagerCompat = NotificationManagerCompat.from(this);  
81 - isOpen = notificationManagerCompat.areNotificationsEnabled();  
82 - if (isOpen) {  
83 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {  
84 -// ContextCompat.startForegroundService(CollPedometerMainActivity.this, new Intent(CollPedometerMainActivity.this, CollStepService.class));  
85 - }  
86 - } else {  
87 - goToSettingNo();  
88 - } 62 + private void checkIsOpenNotifiction() {
  63 + getPermissionsWithTip();
89 } 64 }
90 65
91 - private void goToSettingNo() {  
92 - Intent intent1 = new Intent();  
93 - try {  
94 - // 根据isOpened结果,判断是否需要提醒用户跳转AppInfo页面,去打开App通知权限  
95 - intent1.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);  
96 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {  
97 - //这种方案适用于 API 26, 即8.0(含8.0)以上可以用  
98 - intent1.putExtra(EXTRA_APP_PACKAGE, getPackageName());  
99 - intent1.putExtra(EXTRA_CHANNEL_ID, getApplicationInfo().uid);  
100 - } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {  
101 - //这种方案适用于 API21——25,即 5.0——7.1 之间的版本可以使用  
102 - intent1.putExtra("app_package", getPackageName());  
103 - intent1.putExtra("app_uid", getApplicationInfo().uid);  
104 - }  
105 -  
106 - // 小米6 -MIUI9.6-8.0.0系统,是个特例,通知设置界面只能控制"允许使用通知圆点"——然而这个玩意并没有卵用,我想对雷布斯说:I'm not ok!!!  
107 - // if ("MI 6".equals(Build.MODEL)) {  
108 - // intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);  
109 - // Uri uri = Uri.fromParts("package", getPackageName(), null);  
110 - // intent.setData(uri);  
111 - // // intent.setAction("com.android.settings/.SubSettings");  
112 - // }  
113 - startActivity(intent1);  
114 - } catch (Exception e) {  
115 - //其他低版本或者异常情况,走该节点。进入APP设置界面  
116 - intent1.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);  
117 - intent1.putExtra("package", getPackageName());  
118 - startActivity(intent1);  
119 - }  
120 - Toast.makeText(getApplicationContext(), "您尚未开启通知权限,无法进行计步", Toast.LENGTH_LONG).show();  
121 - }  
122 66
123 @Override 67 @Override
124 protected void onRestart() { 68 protected void onRestart() {
@@ -129,12 +73,11 @@ public class PedometerMainActivity extends QMUIFragmentActivity { @@ -129,12 +73,11 @@ public class PedometerMainActivity extends QMUIFragmentActivity {
129 @Override 73 @Override
130 protected void onResume() { 74 protected void onResume() {
131 super.onResume(); 75 super.onResume();
132 - check();  
133 - getPermissionsWithTip(); 76 + checkIsOpenNotifiction();
134 } 77 }
135 78
136 - private void addFragment(String startPointAdd, String endPointAdd, List<LatLng> importStreetPoints) {  
137 - fragment = RunMainFragment.newInstance(startPointAdd, endPointAdd, importStreetPoints); 79 + private void addFragment(RunRaceDetailInfo runRaceDetailInfo) {
  80 + fragment = RunMainFragment.newInstance(runRaceDetailInfo);
138 getSupportFragmentManager().beginTransaction() 81 getSupportFragmentManager().beginTransaction()
139 .add(getContextViewId(), fragment, fragment.getClass().getSimpleName()) 82 .add(getContextViewId(), fragment, fragment.getClass().getSimpleName())
140 .addToBackStack(fragment.getClass().getSimpleName()) 83 .addToBackStack(fragment.getClass().getSimpleName())
@@ -165,8 +108,8 @@ public class PedometerMainActivity extends QMUIFragmentActivity { @@ -165,8 +108,8 @@ public class PedometerMainActivity extends QMUIFragmentActivity {
165 Toast.makeText(getApplicationContext(), getString(R.string.open_gps_tip), Toast.LENGTH_LONG).show(); 108 Toast.makeText(getApplicationContext(), getString(R.string.open_gps_tip), Toast.LENGTH_LONG).show();
166 } else { 109 } else {
167 if (getCurrentFragment() == null) { 110 if (getCurrentFragment() == null) {
168 - if (!TextUtils.isEmpty(startPointAdd) && !TextUtils.isEmpty(endPointAdd) && importStreetPoints != null) {  
169 - addFragment(startPointAdd, endPointAdd, importStreetPoints); 111 + if (runRaceDetailInfo != null) {
  112 + addFragment(runRaceDetailInfo);
170 } 113 }
171 } 114 }
172 } 115 }
@@ -213,11 +156,9 @@ public class PedometerMainActivity extends QMUIFragmentActivity { @@ -213,11 +156,9 @@ public class PedometerMainActivity extends QMUIFragmentActivity {
213 return; 156 return;
214 } 157 }
215 158
216 - public static void startActivity(Activity activity, String startPointAdd, String endPointAdd, List<LatLng> importStreetPoints) { 159 + public static void startActivity(Activity activity, RunRaceDetailInfo runRaceDetailInfo) {
217 Intent intent = new Intent(activity, PedometerMainActivity.class); 160 Intent intent = new Intent(activity, PedometerMainActivity.class);
218 - intent.putExtra("startPointAdd", startPointAdd);  
219 - intent.putExtra("endPointAdd", endPointAdd);  
220 - intent.putExtra("importStreetPoints", (Serializable) importStreetPoints); 161 + intent.putExtra("runRaceDetailInfo", (Serializable) runRaceDetailInfo);
221 activity.startActivity(intent); 162 activity.startActivity(intent);
222 } 163 }
223 } 164 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/activity/RunRaceDetailActivity.java
@@ -30,6 +30,7 @@ import com.cnlive.moudle.pedometer.ui.fragment.RunRaceDetailFragment; @@ -30,6 +30,7 @@ import com.cnlive.moudle.pedometer.ui.fragment.RunRaceDetailFragment;
30 import com.cnlive.moudle.pedometer.ui.fragment.RunningMapFragment; 30 import com.cnlive.moudle.pedometer.ui.fragment.RunningMapFragment;
31 import com.cnlive.moudle.pedometer.ui.widget.FivePersonIconView; 31 import com.cnlive.moudle.pedometer.ui.widget.FivePersonIconView;
32 import com.cnlive.moudle.pedometer.utils.MyMapUtil; 32 import com.cnlive.moudle.pedometer.utils.MyMapUtil;
  33 +import com.cnlive.moudle.pedometer.utils.NotificationUtil;
33 import com.cnlive.moudle.pedometer.utils.StepUtil; 34 import com.cnlive.moudle.pedometer.utils.StepUtil;
34 import com.cnlive.moudle.pedometer.utils.lib_permisshelper.PermissionsListener; 35 import com.cnlive.moudle.pedometer.utils.lib_permisshelper.PermissionsListener;
35 import com.cnlive.moudle.pedometer.utils.lib_permisshelper.PermissionsUtils; 36 import com.cnlive.moudle.pedometer.utils.lib_permisshelper.PermissionsUtils;
@@ -47,6 +48,7 @@ import java.util.List; @@ -47,6 +48,7 @@ import java.util.List;
47 public class RunRaceDetailActivity extends QMUIFragmentActivity { 48 public class RunRaceDetailActivity extends QMUIFragmentActivity {
48 private QMUIFragment fragment; 49 private QMUIFragment fragment;
49 private PermissionsUtils mPermissionsUtils = new PermissionsUtils();//权限申请 50 private PermissionsUtils mPermissionsUtils = new PermissionsUtils();//权限申请
  51 + private String eventId;//赛道id
50 52
51 public static void startActivity(Activity activity, String eventId, String userId, String userIcon, String userName, String userPhone) { 53 public static void startActivity(Activity activity, String eventId, String userId, String userIcon, String userName, String userPhone) {
52 Intent intent = new Intent(activity, RunRaceDetailActivity.class); 54 Intent intent = new Intent(activity, RunRaceDetailActivity.class);
@@ -55,7 +57,6 @@ public class RunRaceDetailActivity extends QMUIFragmentActivity { @@ -55,7 +57,6 @@ public class RunRaceDetailActivity extends QMUIFragmentActivity {
55 intent.putExtra("userIcon", userIcon); 57 intent.putExtra("userIcon", userIcon);
56 intent.putExtra("userName", userName); 58 intent.putExtra("userName", userName);
57 intent.putExtra("userPhone", userPhone); 59 intent.putExtra("userPhone", userPhone);
58 - CommonInfo.setStreetId(activity, eventId);  
59 activity.startActivity(intent); 60 activity.startActivity(intent);
60 } 61 }
61 62
@@ -67,12 +68,15 @@ public class RunRaceDetailActivity extends QMUIFragmentActivity { @@ -67,12 +68,15 @@ public class RunRaceDetailActivity extends QMUIFragmentActivity {
67 @Override 68 @Override
68 protected void onCreate(Bundle savedInstanceState) { 69 protected void onCreate(Bundle savedInstanceState) {
69 super.onCreate(savedInstanceState); 70 super.onCreate(savedInstanceState);
70 - 71 + if (getIntent().getStringExtra("eventId") != null) {
  72 + eventId = getIntent().getStringExtra("eventId");
  73 + }
71 if (getIntent().getStringExtra("userId") != null) { 74 if (getIntent().getStringExtra("userId") != null) {
72 CommonInfo.setUserId(this, getIntent().getStringExtra("userId")); 75 CommonInfo.setUserId(this, getIntent().getStringExtra("userId"));
73 CommonInfo.setUserNickName(this, getIntent().getStringExtra("userName")); 76 CommonInfo.setUserNickName(this, getIntent().getStringExtra("userName"));
74 CommonInfo.setUserIcon(this, getIntent().getStringExtra("userIcon")); 77 CommonInfo.setUserIcon(this, getIntent().getStringExtra("userIcon"));
75 CommonInfo.setUserPhone(this, getIntent().getStringExtra("userPhone")); 78 CommonInfo.setUserPhone(this, getIntent().getStringExtra("userPhone"));
  79 +
76 } 80 }
77 //判断用户是否结束运动 81 //判断用户是否结束运动
78 // boolean isRunStep = CommonInfo.getIsRunStepService(this); 82 // boolean isRunStep = CommonInfo.getIsRunStepService(this);
@@ -90,7 +94,23 @@ public class RunRaceDetailActivity extends QMUIFragmentActivity { @@ -90,7 +94,23 @@ public class RunRaceDetailActivity extends QMUIFragmentActivity {
90 @Override 94 @Override
91 protected void onResume() { 95 protected void onResume() {
92 super.onResume(); 96 super.onResume();
93 - getPermissionsWithTip(); 97 + if (eventId != null) {
  98 + CommonInfo.setStreetId(this, eventId);
  99 + Log.e("设置全局eventId", "onResume: " + eventId);
  100 + }
  101 + boolean isOpen = NotificationUtil.isOpenNotification(this);
  102 + if (isOpen) {
  103 + //判断GPS是否开启
  104 + if (!MyMapUtil.isOPenGps(getApplicationContext())) {
  105 + Toast.makeText(getApplicationContext(), getString(R.string.open_gps_tip), Toast.LENGTH_LONG).show();
  106 + //开启GPS
  107 + Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
  108 + startActivityForResult(intent, 10);
  109 + } else {
  110 + getPermissionsWithTip();
  111 + }
  112 + }
  113 +
94 } 114 }
95 115
96 private void addFragment(QMUIFragment fragment) { 116 private void addFragment(QMUIFragment fragment) {
@@ -123,17 +143,9 @@ public class RunRaceDetailActivity extends QMUIFragmentActivity { @@ -123,17 +143,9 @@ public class RunRaceDetailActivity extends QMUIFragmentActivity {
123 143
124 @Override 144 @Override
125 public void onGranted() { 145 public void onGranted() {
126 - //判断GPS是否开启  
127 - if (!MyMapUtil.isOPenGps(getApplicationContext())) {  
128 - //开启GPS  
129 - Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);  
130 - startActivityForResult(intent, 10);  
131 - Toast.makeText(getApplicationContext(), getString(R.string.open_gps_tip), Toast.LENGTH_LONG).show();  
132 - } else {  
133 - if (getCurrentFragment() == null) {  
134 - if (fragment != null) {  
135 - addFragment(fragment);  
136 - } 146 + if (getCurrentFragment() == null) {
  147 + if (fragment != null) {
  148 + addFragment(fragment);
137 } 149 }
138 } 150 }
139 } 151 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/activity/UploadFailDetailActivity.java 0 → 100644
  1 +package com.cnlive.moudle.pedometer.ui.activity;
  2 +
  3 +import android.app.Activity;
  4 +import android.content.Intent;
  5 +import android.os.Bundle;
  6 +
  7 +import com.cnlive.libs.base.ui.QMUIFragment;
  8 +import com.cnlive.libs.base.ui.QMUIFragmentActivity;
  9 +import com.cnlive.moudle.pedometer.sql.entity.FailedEntity;
  10 +import com.cnlive.moudle.pedometer.ui.fragment.UploadFailDetailFragment;
  11 +import com.example.moudle_pedometer.R;
  12 +
  13 +import java.io.Serializable;
  14 +
  15 +public class UploadFailDetailActivity extends QMUIFragmentActivity {
  16 + @Override
  17 + protected int getContextViewId() {
  18 + return R.id.fragment_upload_fail;
  19 + }
  20 +
  21 + @Override
  22 + protected void onCreate(Bundle savedInstanceState) {
  23 + super.onCreate(savedInstanceState);
  24 + FailedEntity failedEntity = (FailedEntity) getIntent().getExtras().getSerializable("failedEntity");
  25 + if (failedEntity != null) {
  26 + addFragment(UploadFailDetailFragment.newInstance(failedEntity));
  27 + }
  28 + }
  29 + private void addFragment(QMUIFragment fragment) {
  30 + getSupportFragmentManager().beginTransaction()
  31 + .add(getContextViewId(), fragment, fragment.getClass().getSimpleName())
  32 + .addToBackStack(fragment.getClass().getSimpleName())
  33 + .commit();
  34 + }
  35 + public static void startActivity(Activity activity, FailedEntity failedEntity) {
  36 + Intent intent = new Intent(activity, UploadFailDetailActivity.class);
  37 + intent.putExtra("failedEntity", (Serializable) failedEntity);
  38 + activity.startActivity(intent);
  39 + }
  40 +}
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/adapter/LineUpAgainAdapter.java
@@ -60,7 +60,6 @@ public class LineUpAgainAdapter extends RecyclerView.Adapter&lt;LineUpAgainAdapter. @@ -60,7 +60,6 @@ public class LineUpAgainAdapter extends RecyclerView.Adapter&lt;LineUpAgainAdapter.
60 myHolder.up_item_title.setText(list.get(i).getStreetTitle()); 60 myHolder.up_item_title.setText(list.get(i).getStreetTitle());
61 //设置公里 61 //设置公里
62 myHolder.up_kilometer_num.setText(list.get(i).getDistance()); 62 myHolder.up_kilometer_num.setText(list.get(i).getDistance());
63 - Log.e("时间", "onBindViewHolder: "+list.get(i).getTime() );  
64 //设置运动时间 63 //设置运动时间
65 myHolder.up_record_minit.setText(TimeUtil.stampToChronometer(Long.parseLong(list.get(i).getTime()))); 64 myHolder.up_record_minit.setText(TimeUtil.stampToChronometer(Long.parseLong(list.get(i).getTime())));
66 //设置配速 65 //设置配速
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/LineUpAgainFragment.java
@@ -7,15 +7,20 @@ import android.support.annotation.Nullable; @@ -7,15 +7,20 @@ import android.support.annotation.Nullable;
7 import android.view.View; 7 import android.view.View;
8 8
9 import com.cnlive.libs.base.frame.fragment.MvpBindingFragment; 9 import com.cnlive.libs.base.frame.fragment.MvpBindingFragment;
  10 +import com.cnlive.moudle.pedometer.commonInfo.CommonInfo;
10 import com.cnlive.moudle.pedometer.frame.presenter.LineUpAgainPresenter; 11 import com.cnlive.moudle.pedometer.frame.presenter.LineUpAgainPresenter;
11 import com.cnlive.moudle.pedometer.frame.view.LineUpAgainView; 12 import com.cnlive.moudle.pedometer.frame.view.LineUpAgainView;
  13 +import com.cnlive.moudle.pedometer.sql.entity.FailedEntity;
  14 +import com.cnlive.moudle.pedometer.utils.StepUtil;
12 import com.example.moudle_pedometer.R; 15 import com.example.moudle_pedometer.R;
13 import com.example.moudle_pedometer.databinding.FragmentLineUpAgainBinding; 16 import com.example.moudle_pedometer.databinding.FragmentLineUpAgainBinding;
14 17
  18 +import java.util.List;
  19 +
15 /** 20 /**
16 * Created by hanyayun 019/06/20. 21 * Created by hanyayun 019/06/20.
17 */ 22 */
18 -public class LineUpAgainFragment extends MvpBindingFragment<LineUpAgainView, LineUpAgainPresenter,Object,FragmentLineUpAgainBinding> { 23 +public class LineUpAgainFragment extends MvpBindingFragment<LineUpAgainView, LineUpAgainPresenter, Object, FragmentLineUpAgainBinding> {
19 24
20 25
21 public LineUpAgainFragment() { 26 public LineUpAgainFragment() {
@@ -31,7 +36,16 @@ public class LineUpAgainFragment extends MvpBindingFragment&lt;LineUpAgainView, Lin @@ -31,7 +36,16 @@ public class LineUpAgainFragment extends MvpBindingFragment&lt;LineUpAgainView, Lin
31 @Override 36 @Override
32 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 37 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
33 super.onViewCreated(view, savedInstanceState); 38 super.onViewCreated(view, savedInstanceState);
34 - if(getMvpView() != null) getMvpView().initView(); 39 + List<FailedEntity> failedEntities = StepUtil.getFailListData(getActivity(), CommonInfo.getUserId(getActivity()));
  40 +
  41 + if (getMvpView() != null) {
  42 + getMvpView().initView();
  43 + if (failedEntities == null||failedEntities.size()<1) {
  44 + binding.llNoFailTip.setVisibility(View.VISIBLE);
  45 + } else {
  46 + getMvpView().setData(failedEntities);
  47 + }
  48 + }
35 binding.refreshLayout.setEnableLoadMore(false); 49 binding.refreshLayout.setEnableLoadMore(false);
36 binding.refreshLayout.setEnableRefresh(false); 50 binding.refreshLayout.setEnableRefresh(false);
37 } 51 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/RunMainFragment.java
@@ -16,6 +16,7 @@ import com.cnlive.moudle.pedometer.frame.presenter.RunMainFragmentPresenter; @@ -16,6 +16,7 @@ import com.cnlive.moudle.pedometer.frame.presenter.RunMainFragmentPresenter;
16 import com.cnlive.moudle.pedometer.frame.view.RunMainFragmentView; 16 import com.cnlive.moudle.pedometer.frame.view.RunMainFragmentView;
17 import com.cnlive.moudle.pedometer.model.Constant; 17 import com.cnlive.moudle.pedometer.model.Constant;
18 import com.cnlive.moudle.pedometer.model.MessageEvent; 18 import com.cnlive.moudle.pedometer.model.MessageEvent;
  19 +import com.cnlive.moudle.pedometer.net.bean.RunRaceDetailInfo;
19 import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity; 20 import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity;
20 import com.cnlive.moudle.pedometer.utils.GsonUtil; 21 import com.cnlive.moudle.pedometer.utils.GsonUtil;
21 import com.cnlive.moudle.pedometer.utils.StepUtil; 22 import com.cnlive.moudle.pedometer.utils.StepUtil;
@@ -31,17 +32,12 @@ import java.io.Serializable; @@ -31,17 +32,12 @@ import java.io.Serializable;
31 import java.util.List; 32 import java.util.List;
32 33
33 public class RunMainFragment extends QMUIFragment<RunMainFragmentView, RunMainFragmentPresenter, FragmentRunMainBinding> { 34 public class RunMainFragment extends QMUIFragment<RunMainFragmentView, RunMainFragmentPresenter, FragmentRunMainBinding> {
34 - private final String TAG = "CollRunMainFragment";  
35 - private String userId = "yangshuai";  
36 - private String startPointAdd;  
37 - private String endPointAdd;  
38 - private List<LatLng> importStreetPoints; 35 + private final String TAG = "RunMainFragment";
  36 + private RunRaceDetailInfo runRaceDetailInfo;
39 37
40 - public static RunMainFragment newInstance(String startPointAdd, String endPointAdd, List<LatLng> importStreetPoints) { 38 + public static RunMainFragment newInstance(RunRaceDetailInfo runRaceDetailInfo) {
41 Bundle bundle = new Bundle(); 39 Bundle bundle = new Bundle();
42 - bundle.putString("startPointAdd", startPointAdd);  
43 - bundle.putString("endPointAdd", endPointAdd);  
44 - bundle.putSerializable("importStreetPoints", (Serializable) importStreetPoints); 40 + bundle.putSerializable("runRaceDetailInfo", (Serializable) runRaceDetailInfo);
45 RunMainFragment fragment = new RunMainFragment(); 41 RunMainFragment fragment = new RunMainFragment();
46 fragment.setArguments(bundle); 42 fragment.setArguments(bundle);
47 return fragment; 43 return fragment;
@@ -54,30 +50,31 @@ public class RunMainFragment extends QMUIFragment&lt;RunMainFragmentView, RunMainFr @@ -54,30 +50,31 @@ public class RunMainFragment extends QMUIFragment&lt;RunMainFragmentView, RunMainFr
54 StatusBarUtil2.setColor(getActivity(), getResources().getColor(R.color.run_main_bg), 0); 50 StatusBarUtil2.setColor(getActivity(), getResources().getColor(R.color.run_main_bg), 0);
55 EventBus.getDefault().register(this); 51 EventBus.getDefault().register(this);
56 if (getArguments() != null) { 52 if (getArguments() != null) {
57 - startPointAdd = getArguments().getString("startPointAdd");  
58 - endPointAdd = getArguments().getString("endPointAdd");  
59 - importStreetPoints = (List<LatLng>) getArguments().getSerializable("importStreetPoints"); 53 + runRaceDetailInfo = (RunRaceDetailInfo) getArguments().getSerializable("runRaceDetailInfo");
60 UserStepEntity userStepEntity = StepUtil.getUserStepData(getActivity(), CommonInfo.getUserId(getActivity())); 54 UserStepEntity userStepEntity = StepUtil.getUserStepData(getActivity(), CommonInfo.getUserId(getActivity()));
61 if (userStepEntity != null) { 55 if (userStepEntity != null) {
62 - if (!TextUtils.isEmpty(startPointAdd) && !TextUtils.isEmpty(endPointAdd)) {  
63 - userStepEntity.setStartPoint(startPointAdd);  
64 - userStepEntity.setEndPoint(endPointAdd); 56 + if (runRaceDetailInfo != null) {
  57 + userStepEntity.setStartPoint(runRaceDetailInfo.getStartLocation());
  58 + userStepEntity.setEndPoint(runRaceDetailInfo.getEndLocation());
65 //更新数据 59 //更新数据
66 StepUtil.updateStepData(getActivity(), userStepEntity); 60 StepUtil.updateStepData(getActivity(), userStepEntity);
  61 + //获取数据库中的重要点
  62 + String importStr = userStepEntity.getImportPoint();
  63 + if (TextUtils.isEmpty(runRaceDetailInfo.getLatLongitude())) {
  64 + //设置重要点
  65 + StepUtil.setImportPoints(getActivity(), CommonInfo.getUserId(getActivity()), GsonUtil.GsonString(runRaceDetailInfo.getLatLongitude()));
  66 + }
67 } 67 }
68 - //获取数据库中的重要点  
69 - String importStr = userStepEntity.getImportPoint();  
70 - if (TextUtils.isEmpty(importStr) && importStreetPoints != null) {  
71 - //设置重要点  
72 - StepUtil.setImportPoints(getActivity(), CommonInfo.getUserId(getActivity()), GsonUtil.GsonString(importStreetPoints));  
73 - } 68 +
74 } 69 }
75 } 70 }
76 if (getMvpView() != null) { 71 if (getMvpView() != null) {
77 new Handler().postDelayed(new Runnable() { 72 new Handler().postDelayed(new Runnable() {
78 @Override 73 @Override
79 public void run() { 74 public void run() {
80 - getMvpView().initView(); 75 + if (runRaceDetailInfo != null) {
  76 + getMvpView().initView(runRaceDetailInfo);
  77 + }
81 } 78 }
82 }, 5); 79 }, 5);
83 } 80 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/RunRaceDetailFragment.java
@@ -64,6 +64,7 @@ public class RunRaceDetailFragment extends QMUIFragment&lt;RunRaceDetailFragmentVie @@ -64,6 +64,7 @@ public class RunRaceDetailFragment extends QMUIFragment&lt;RunRaceDetailFragmentVie
64 if (getMvpView() != null) { 64 if (getMvpView() != null) {
65 getMvpView().initMap(); 65 getMvpView().initMap();
66 } 66 }
  67 +
67 if (getPresenter() != null) { 68 if (getPresenter() != null) {
68 if (!TextUtils.isEmpty(CommonInfo.getStreetId(getActivity()))) { 69 if (!TextUtils.isEmpty(CommonInfo.getStreetId(getActivity()))) {
69 getPresenter().getRunRaceDetailInfo(getActivity(), CommonInfo.getStreetId(getActivity()), CommonInfo.getUserId(getActivity()), "0"); 70 getPresenter().getRunRaceDetailInfo(getActivity(), CommonInfo.getStreetId(getActivity()), CommonInfo.getUserId(getActivity()), "0");
@@ -179,7 +180,7 @@ public class RunRaceDetailFragment extends QMUIFragment&lt;RunRaceDetailFragmentVie @@ -179,7 +180,7 @@ public class RunRaceDetailFragment extends QMUIFragment&lt;RunRaceDetailFragmentVie
179 if (getMvpView() != null) { 180 if (getMvpView() != null) {
180 Log.e(TAG, "跳转: " + getMvpView().importStreetPoints.size()); 181 Log.e(TAG, "跳转: " + getMvpView().importStreetPoints.size());
181 QMUITipDialogUtil.dismessDialog(); 182 QMUITipDialogUtil.dismessDialog();
182 - PedometerMainActivity.startActivity(getActivity(), binding.includeStreet.tvStartAddr.getText().toString(), binding.includeStreet.tvEndAddr.getText().toString(), getMvpView().importStreetPoints); 183 + PedometerMainActivity.startActivity(getActivity(), getMvpView().runRaceDetailInfo);
183 } 184 }
184 } 185 }
185 //启动鹰眼失败 186 //启动鹰眼失败
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/RunningFinishFragment.java
@@ -3,6 +3,7 @@ package com.cnlive.moudle.pedometer.ui.fragment; @@ -3,6 +3,7 @@ package com.cnlive.moudle.pedometer.ui.fragment;
3 import android.os.Bundle; 3 import android.os.Bundle;
4 import android.os.Handler; 4 import android.os.Handler;
5 import android.support.annotation.Nullable; 5 import android.support.annotation.Nullable;
  6 +import android.util.Log;
6 import android.view.View; 7 import android.view.View;
7 8
8 import com.cnlive.libs.base.ui.QMUIFragment; 9 import com.cnlive.libs.base.ui.QMUIFragment;
@@ -55,20 +56,13 @@ public class RunningFinishFragment extends QMUIFragment&lt;RunningFinishFragmentVie @@ -55,20 +56,13 @@ public class RunningFinishFragment extends QMUIFragment&lt;RunningFinishFragmentVie
55 getMvpView().initView(runningFinishBean); 56 getMvpView().initView(runningFinishBean);
56 } 57 }
57 } 58 }
  59 + UserStepEntity userStepEntity = StepUtil.getUserStepData(getActivity(), CommonInfo.getUserId(getActivity()));
  60 + if (getMvpView() != null && userStepEntity != null) {
  61 +// getPresenter().getServerStreetTrace(getActivity(), userStepEntity);
  62 + getPresenter().queryHistoryTrace(getActivity(), userStepEntity, runningFinishBean);
  63 + }
58 } 64 }
59 - UserStepEntity userStepEntity = StepUtil.getUserStepData(getActivity(), CommonInfo.getUserId(getActivity()));  
60 - if (getMvpView() != null && userStepEntity != null) {  
61 - QMUITipDialogUtil.loadingDialog(getContext(), "正在获取轨迹信息,请稍后", false);  
62 - getPresenter().getServerStreetTrace(getActivity(), userStepEntity);  
63 - new Handler().postDelayed(new Runnable() {  
64 - @Override  
65 - public void run() {  
66 - getPresenter().queryHistoryTrace(getActivity(), userStepEntity, runningFinishBean);  
67 - }  
68 - },2000);  
69 -// StepUtil.clearRunData(context, CommonInfo.getUserId(context));  
70 -// CommonInfo.reset(context);  
71 - } 65 +
72 66
73 } 67 }
74 68
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/UploadFailDetailFragment.java 0 → 100644
  1 +package com.cnlive.moudle.pedometer.ui.fragment;
  2 +
  3 +import android.os.Bundle;
  4 +import android.support.annotation.Nullable;
  5 +import android.view.View;
  6 +
  7 +import com.cnlive.libs.base.ui.QMUIFragment;
  8 +import com.cnlive.libs.base.util.StatusBarUtil2;
  9 +import com.cnlive.moudle.pedometer.frame.presenter.UploadFailDetailFragmentPresenter;
  10 +import com.cnlive.moudle.pedometer.frame.view.UploadFailDetailFragmentView;
  11 +import com.cnlive.moudle.pedometer.sql.entity.FailedEntity;
  12 +import com.example.moudle_pedometer.R;
  13 +import com.example.moudle_pedometer.databinding.FragmentFinishRunMapBinding;
  14 +
  15 +import java.io.Serializable;
  16 +
  17 +/**
  18 + * 重新 上传详情页面
  19 + *
  20 + * @author ShinnyYang
  21 + */
  22 +public class UploadFailDetailFragment extends QMUIFragment<UploadFailDetailFragmentView, UploadFailDetailFragmentPresenter, FragmentFinishRunMapBinding> {
  23 + private FailedEntity failedEntity;
  24 +
  25 + @Override
  26 + protected int getToolbarId() {
  27 + return 0;
  28 + }
  29 +
  30 + @Override
  31 + public String getTitle() {
  32 + return null;
  33 + }
  34 +
  35 + @Override
  36 + protected int getLayoutId() {
  37 + return R.layout.fragment_finish_run_map;
  38 + }
  39 +
  40 + public static UploadFailDetailFragment newInstance(FailedEntity failedEntity) {
  41 + UploadFailDetailFragment failDetailFragment = new UploadFailDetailFragment();
  42 + Bundle bundle = new Bundle();
  43 + bundle.putSerializable("failedEntity", (Serializable) failedEntity);
  44 + failDetailFragment.setArguments(bundle);
  45 + return failDetailFragment;
  46 + }
  47 +
  48 + @Override
  49 + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
  50 + super.onViewCreated(view, savedInstanceState);
  51 + StatusBarUtil2.setColor(getActivity(), getResources().getColor(R.color.run_main_bg), 0);
  52 +
  53 + if (getArguments() != null) {
  54 + failedEntity = (FailedEntity) getArguments().getSerializable("failedEntity");
  55 + if (failedEntity != null) {
  56 + if (getMvpView() != null) {
  57 + getMvpView().initView(failedEntity);
  58 + }
  59 + }
  60 + }
  61 + }
  62 +}
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/utils/GsonUtil.java
@@ -66,13 +66,17 @@ public class GsonUtil { @@ -66,13 +66,17 @@ public class GsonUtil {
66 * @return 66 * @return
67 */ 67 */
68 public static <T> List<T> jsonToList(String json, Class<T> cls) { 68 public static <T> List<T> jsonToList(String json, Class<T> cls) {
69 - Gson gson = new Gson();  
70 - List<T> list = new ArrayList<T>();  
71 - JsonArray array = new JsonParser().parse(json).getAsJsonArray();  
72 - for (final JsonElement elem : array) {  
73 - list.add(gson.fromJson(elem, cls)); 69 + try {
  70 + Gson gson = new Gson();
  71 + List<T> list = new ArrayList<T>();
  72 + JsonArray array = new JsonParser().parse(json).getAsJsonArray();
  73 + for (final JsonElement elem : array) {
  74 + list.add(gson.fromJson(elem, cls));
  75 + }
  76 + return list;
  77 + } catch (Exception e) {
  78 + return null;
74 } 79 }
75 - return list;  
76 } 80 }
77 81
78 82
@@ -89,9 +93,9 @@ public class GsonUtil { @@ -89,9 +93,9 @@ public class GsonUtil {
89 new TypeToken<List<Map<String, String>>>() { 93 new TypeToken<List<Map<String, String>>>() {
90 }.getType()); 94 }.getType());
91 } 95 }
92 - for(int i=0;i<list.size();i++){  
93 - for(Map.Entry<String, String> entry:list.get(i).entrySet()){  
94 - if(entry.getValue()==null) { 96 + for (int i = 0; i < list.size(); i++) {
  97 + for (Map.Entry<String, String> entry : list.get(i).entrySet()) {
  98 + if (entry.getValue() == null) {
95 entry.setValue(""); 99 entry.setValue("");
96 } 100 }
97 } 101 }
@@ -100,7 +104,6 @@ public class GsonUtil { @@ -100,7 +104,6 @@ public class GsonUtil {
100 } 104 }
101 105
102 106
103 -  
104 /** 107 /**
105 * 转成map的 108 * 转成map的
106 * 109 *
@@ -118,31 +121,31 @@ public class GsonUtil { @@ -118,31 +121,31 @@ public class GsonUtil {
118 121
119 /** 122 /**
120 * 过滤null 123 * 过滤null
  124 + *
121 * @param jsonElement 125 * @param jsonElement
122 * @return 126 * @return
123 */ 127 */
124 - public static String StrConver(JsonElement jsonElement){  
125 - if(jsonElement==null||jsonElement.isJsonNull()||jsonElement.equals("null")){ 128 + public static String StrConver(JsonElement jsonElement) {
  129 + if (jsonElement == null || jsonElement.isJsonNull() || jsonElement.equals("null")) {
126 return ""; 130 return "";
127 - }  
128 - else { 131 + } else {
129 return jsonElement.getAsString(); 132 return jsonElement.getAsString();
130 } 133 }
131 } 134 }
132 - public static int IntConver(JsonElement jsonElement){  
133 - if(jsonElement.isJsonNull()){ 135 +
  136 + public static int IntConver(JsonElement jsonElement) {
  137 + if (jsonElement.isJsonNull()) {
134 return 0; 138 return 0;
135 - }  
136 - else { 139 + } else {
137 return jsonElement.getAsInt(); 140 return jsonElement.getAsInt();
138 } 141 }
139 } 142 }
140 143
141 - public static JsonObject toJsonObject(String str){ 144 + public static JsonObject toJsonObject(String str) {
142 return new JsonParser().parse(str).getAsJsonObject(); 145 return new JsonParser().parse(str).getAsJsonObject();
143 } 146 }
144 147
145 - public static JsonArray toJsonArray(String str){ 148 + public static JsonArray toJsonArray(String str) {
146 return new JsonParser().parse(str).getAsJsonArray(); 149 return new JsonParser().parse(str).getAsJsonArray();
147 } 150 }
148 151
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/utils/MyMapUtil.java
@@ -92,7 +92,7 @@ public class MyMapUtil { @@ -92,7 +92,7 @@ public class MyMapUtil {
92 LatLng importLatLng = importPoints.get(i); 92 LatLng importLatLng = importPoints.get(i);
93 for (int j = index; j < trackPoints.size(); j++) { 93 for (int j = index; j < trackPoints.size(); j++) {
94 double distance = DistanceUtil.getDistance(importLatLng, trackPoints.get(j)); 94 double distance = DistanceUtil.getDistance(importLatLng, trackPoints.get(j));
95 - if (distance < 50) { 95 + if (distance < Constant.CHECK_ACCURACY) {
96 importHash.put(i, true); 96 importHash.put(i, true);
97 index = j; 97 index = j;
98 } 98 }
@@ -168,21 +168,23 @@ public class MyMapUtil { @@ -168,21 +168,23 @@ public class MyMapUtil {
168 Log.e(TAG, "onHistoryTrackCallback: " + response.getMessage()); 168 Log.e(TAG, "onHistoryTrackCallback: " + response.getMessage());
169 if (StatusCodes.SUCCESS != response.getStatus()) { 169 if (StatusCodes.SUCCESS != response.getStatus()) {
170 // if (response.getStatus() == 14004) { 170 // if (response.getStatus() == 14004) {
171 - //给3次重新查询的机会  
172 - if (queryNum < 4) {  
173 - //重新查询 171 + //给3次重新查询的机会
  172 + if (queryNum < 4) {
  173 + //重新查询
174 // new Handler().postDelayed(new Runnable() { 174 // new Handler().postDelayed(new Runnable() {
175 // @Override 175 // @Override
176 // public void run() { 176 // public void run() {
177 // //间隔3秒查一次 177 // //间隔3秒查一次
178 - queryHistoryTrace(context, mClient, entityName, startTime, endTime, callBack);  
179 - queryNum++; 178 + queryHistoryTrace(context, mClient, entityName, startTime, endTime, callBack);
  179 + queryNum++;
180 // } 180 // }
181 // }, 1000); 181 // }, 1000);
182 182
183 - } else { 183 + } else {
  184 + if (callBack != null) {
184 callBack.success(null); 185 callBack.success(null);
185 } 186 }
  187 + }
186 188
187 // } else { 189 // } else {
188 // Toast.makeText(context, "获取轨迹失败!" + response.getMessage() + "," + response.getStatus(), Toast.LENGTH_SHORT).show(); 190 // Toast.makeText(context, "获取轨迹失败!" + response.getMessage() + "," + response.getStatus(), Toast.LENGTH_SHORT).show();
@@ -207,17 +209,17 @@ public class MyMapUtil { @@ -207,17 +209,17 @@ public class MyMapUtil {
207 } 209 }
208 } 210 }
209 } 211 }
210 - }  
211 - if (total > pageSize * pageIndex) {  
212 - historyTrackRequest.setPageIndex(++pageIndex);  
213 - queryHistoryTrace(context, mClient, entityName, startTime, endTime, callBack);  
214 - } else {  
215 - if (callBack != null) {  
216 - callBack.success(trackPoints);  
217 - trackPoints.clear(); 212 +
  213 + if (total > pageSize * pageIndex) {
  214 + historyTrackRequest.setPageIndex(++pageIndex);
  215 + queryHistoryTrace(context, mClient, entityName, startTime, endTime, callBack);
  216 + } else {
  217 + if (callBack != null) {
  218 + callBack.success(trackPoints);
  219 + trackPoints.clear();
  220 + }
218 } 221 }
219 } 222 }
220 -  
221 } 223 }
222 }; 224 };
223 //开始查询历史轨迹 225 //开始查询历史轨迹
@@ -355,9 +357,11 @@ public class MyMapUtil { @@ -355,9 +357,11 @@ public class MyMapUtil {
355 startPoint = points.get(points.size() - 1); 357 startPoint = points.get(points.size() - 1);
356 endPoint = points.get(0); 358 endPoint = points.get(0);
357 } 359 }
358 -  
359 // 添加起点图标 360 // 添加起点图标
360 - Bitmap startPointBitmap = BitmapUtil.getBitmapFromDp(context, BitmapFactory.decodeResource(context.getResources(), startIconRes), 24, 30); 361 + Bitmap startPointBitmap = null;
  362 + if (null != context.getResources()) {
  363 + startPointBitmap = BitmapUtil.getBitmapFromDp(context, BitmapFactory.decodeResource(context.getResources(), startIconRes), 24, 30);
  364 + }
361 OverlayOptions startOptions = null; 365 OverlayOptions startOptions = null;
362 if (startPointBitmap != null) { 366 if (startPointBitmap != null) {
363 startOptions = new MarkerOptions() 367 startOptions = new MarkerOptions()
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/utils/NotificationUtil.java 0 → 100644
  1 +package com.cnlive.moudle.pedometer.utils;
  2 +
  3 +import android.app.Activity;
  4 +import android.content.Intent;
  5 +import android.os.Build;
  6 +import android.provider.Settings;
  7 +import android.support.v4.app.NotificationManagerCompat;
  8 +import android.widget.Toast;
  9 +
  10 +import static android.app.Notification.EXTRA_CHANNEL_ID;
  11 +import static android.provider.Settings.EXTRA_APP_PACKAGE;
  12 +
  13 +public class NotificationUtil {
  14 + private static boolean isOpen;
  15 + private static NotificationManagerCompat notificationManagerCompat;
  16 +
  17 + public static boolean isOpenNotification(Activity activity) {
  18 + //监测通知权限是否打开
  19 + notificationManagerCompat = NotificationManagerCompat.from(activity);
  20 + isOpen = notificationManagerCompat.areNotificationsEnabled();
  21 + if (!isOpen) {
  22 + goToSettingNo(activity);
  23 + }
  24 + return isOpen;
  25 + }
  26 +
  27 + private static void goToSettingNo(Activity activity) {
  28 + Toast.makeText(activity, "您尚未开启通知权限,无法进行计步", Toast.LENGTH_LONG).show();
  29 + Intent intent1 = new Intent();
  30 + try {
  31 + // 根据isOpened结果,判断是否需要提醒用户跳转AppInfo页面,去打开App通知权限
  32 + intent1.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
  33 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
  34 + //这种方案适用于 API 26, 即8.0(含8.0)以上可以用
  35 + intent1.putExtra(EXTRA_APP_PACKAGE, activity.getPackageName());
  36 + intent1.putExtra(EXTRA_CHANNEL_ID, activity.getApplicationInfo().uid);
  37 + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  38 + //这种方案适用于 API21——25,即 5.0——7.1 之间的版本可以使用
  39 + intent1.putExtra("app_package", activity.getPackageName());
  40 + intent1.putExtra("app_uid", activity.getApplicationInfo().uid);
  41 + }
  42 +
  43 + // 小米6 -MIUI9.6-8.0.0系统,是个特例,通知设置界面只能控制"允许使用通知圆点"——然而这个玩意并没有卵用,我想对雷布斯说:I'm not ok!!!
  44 + // if ("MI 6".equals(Build.MODEL)) {
  45 + // intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
  46 + // Uri uri = Uri.fromParts("package", getPackageName(), null);
  47 + // intent.setData(uri);
  48 + // // intent.setAction("com.android.settings/.SubSettings");
  49 + // }
  50 + activity.startActivity(intent1);
  51 + } catch (Exception e) {
  52 + //其他低版本或者异常情况,走该节点。进入APP设置界面
  53 + intent1.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
  54 + intent1.putExtra("package", activity.getPackageName());
  55 + activity.startActivity(intent1);
  56 + }
  57 + }
  58 +}
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/utils/StepUtil.java
@@ -32,6 +32,41 @@ public class StepUtil { @@ -32,6 +32,41 @@ public class StepUtil {
32 return UUID.randomUUID().toString().replace("-", ""); 32 return UUID.randomUUID().toString().replace("-", "");
33 } 33 }
34 34
  35 + /**
  36 + * 删除临时保存数据
  37 + *
  38 + * @param context
  39 + * @param entity
  40 + */
  41 + public static void deleteTempSaveFailData(Context context, FailedEntity entity) {
  42 + DbCore.init(context, dbName);
  43 + if (entity != null && !TextUtils.isEmpty(entity.getUuid())) {
  44 + DbCore.getDaoSession().getFailedEntityDao().deleteByKey(entity.getUuid());
  45 + Log.e(TAG, "deleteTempSaveFailData: 删除临时保存数据");
  46 + }
  47 + }
  48 +
  49 + /**
  50 + * 获取暂存的失败数据
  51 + *
  52 + * @param context
  53 + * @param uid
  54 + * @param userStartTime
  55 + * @return
  56 + */
  57 + public static FailedEntity getTempSaveFailData(Context context, String uid, long userStartTime) {
  58 + DbCore.init(context, dbName);
  59 + List<FailedEntity> list = DbCore.getDaoSession().getFailedEntityDao().queryBuilder().where(FailedEntityDao.Properties.Uid.eq(uid), FailedEntityDao.Properties.UserStartTime.eq(userStartTime)).list();
  60 + if (list != null && list.size() > 0) {
  61 + if (list.get(0) == null) {
  62 + return null;
  63 + } else {
  64 + return list.get(0);
  65 + }
  66 + }
  67 + return null;
  68 + }
  69 +
35 //获取上传失败列表 70 //获取上传失败列表
36 public static List<FailedEntity> getFailListData(Context context, String uid) { 71 public static List<FailedEntity> getFailListData(Context context, String uid) {
37 DbCore.init(context, dbName); 72 DbCore.init(context, dbName);
@@ -194,7 +229,7 @@ public class StepUtil { @@ -194,7 +229,7 @@ public class StepUtil {
194 DbCore.init(context, dbName); 229 DbCore.init(context, dbName);
195 List<UserStepEntity> list = DbCore.getDaoSession().getUserStepEntityDao().queryBuilder().where(UserStepEntityDao.Properties.UserId.eq(uid)).list(); 230 List<UserStepEntity> list = DbCore.getDaoSession().getUserStepEntityDao().queryBuilder().where(UserStepEntityDao.Properties.UserId.eq(uid)).list();
196 if (list != null && list.size() > 0) { 231 if (list != null && list.size() > 0) {
197 - Log.e(TAG, "clearRunData: " + list.size()); 232 + Log.e(TAG, "clearRunData:删除用户逻辑数据 " + list.size());
198 DbCore.getDaoSession().getUserStepEntityDao().delete(list.get(0)); 233 DbCore.getDaoSession().getUserStepEntityDao().delete(list.get(0));
199 DbCore.getDaoSession().getUserStepEntityDao().detachAll(); 234 DbCore.getDaoSession().getUserStepEntityDao().detachAll();
200 } 235 }
moudle_pedometer/src/main/res/drawable-hdpi/icon_no_fail_line.png 0 → 100644

14.5 KB

moudle_pedometer/src/main/res/drawable-xhdpi/icon_no_fail_line.png 0 → 100644

16.6 KB

moudle_pedometer/src/main/res/drawable-xxhdpi/icon_no_fail_line.png 0 → 100644

32 KB

moudle_pedometer/src/main/res/layout/fragment_line_up_again.xml
1 <layout xmlns:android="http://schemas.android.com/apk/res/android"> 1 <layout xmlns:android="http://schemas.android.com/apk/res/android">
2 2
  3 +
3 <LinearLayout 4 <LinearLayout
4 android:layout_width="match_parent" 5 android:layout_width="match_parent"
5 android:layout_height="match_parent" 6 android:layout_height="match_parent"
@@ -10,19 +11,48 @@ @@ -10,19 +11,48 @@
10 android:layout_width="match_parent" 11 android:layout_width="match_parent"
11 android:layout_height="?attr/qmui_topbar_height" /> 12 android:layout_height="?attr/qmui_topbar_height" />
12 13
13 - <com.scwang.smartrefresh.layout.SmartRefreshLayout  
14 - android:id="@+id/refreshLayout" 14 + <FrameLayout
15 android:layout_width="match_parent" 15 android:layout_width="match_parent"
16 - android:layout_height="match_parent"  
17 - android:background="#F8F8F8" > 16 + android:layout_height="match_parent">
  17 +
  18 + <com.scwang.smartrefresh.layout.SmartRefreshLayout
  19 + android:id="@+id/refreshLayout"
  20 + android:layout_width="match_parent"
  21 + android:layout_height="match_parent"
  22 + android:background="#F8F8F8">
18 23
19 - <android.support.v7.widget.RecyclerView  
20 - android:id="@+id/recycler" 24 + <android.support.v7.widget.RecyclerView
  25 + android:id="@+id/recycler"
  26 + android:layout_width="match_parent"
  27 + android:layout_height="match_parent" />
  28 +
  29 + </com.scwang.smartrefresh.layout.SmartRefreshLayout>
  30 + <!---->
  31 + //没有失败记录
  32 +
  33 + <LinearLayout
  34 + android:id="@+id/ll_no_fail_tip"
21 android:layout_width="match_parent" 35 android:layout_width="match_parent"
22 android:layout_height="match_parent" 36 android:layout_height="match_parent"
23 - /> 37 + android:background="@color/white"
  38 + android:gravity="center"
  39 + android:orientation="vertical"
  40 + android:visibility="gone">
24 41
25 - </com.scwang.smartrefresh.layout.SmartRefreshLayout> 42 + <ImageView
  43 + android:layout_width="224dp"
  44 + android:layout_height="124dp"
  45 + android:background="@drawable/icon_no_fail_line" />
  46 +
  47 + <TextView
  48 + android:layout_width="wrap_content"
  49 + android:layout_height="wrap_content"
  50 + android:layout_marginTop="10dp"
  51 + android:text="@string/no_fail_line_text_tip"
  52 + android:textColor="@color/text_black" />
  53 + </LinearLayout>
  54 + </FrameLayout>
26 </LinearLayout> 55 </LinearLayout>
  56 +
27 </layout> 57 </layout>
28 58
moudle_pedometer/src/main/res/layout/layout_finish_running_route.xml
@@ -56,7 +56,7 @@ @@ -56,7 +56,7 @@
56 android:layout_width="wrap_content" 56 android:layout_width="wrap_content"
57 android:layout_height="wrap_content" 57 android:layout_height="wrap_content"
58 android:layout_marginLeft="10dp" 58 android:layout_marginLeft="10dp"
59 - android:text="首都师范大学操场东门" 59 + android:text="--"
60 android:textColor="@color/black" 60 android:textColor="@color/black"
61 android:textSize="12sp" /> 61 android:textSize="12sp" />
62 </LinearLayout> 62 </LinearLayout>
@@ -93,7 +93,7 @@ @@ -93,7 +93,7 @@
93 android:layout_width="wrap_content" 93 android:layout_width="wrap_content"
94 android:layout_height="wrap_content" 94 android:layout_height="wrap_content"
95 android:layout_marginLeft="10dp" 95 android:layout_marginLeft="10dp"
96 - android:text="首都师范大学操场东门" 96 + android:text="--"
97 android:textColor="@color/black" 97 android:textColor="@color/black"
98 android:textSize="12sp" /> 98 android:textSize="12sp" />
99 </LinearLayout> 99 </LinearLayout>
@@ -128,7 +128,7 @@ @@ -128,7 +128,7 @@
128 android:layout_height="wrap_content" 128 android:layout_height="wrap_content"
129 android:layout_marginLeft="10dp" 129 android:layout_marginLeft="10dp"
130 android:layout_marginTop="5dp" 130 android:layout_marginTop="5dp"
131 - android:text="00:27:23" 131 + android:text="--"
132 android:textColor="@color/text_black" 132 android:textColor="@color/text_black"
133 android:textSize="18sp" 133 android:textSize="18sp"
134 android:textStyle="bold" /> 134 android:textStyle="bold" />
@@ -170,7 +170,7 @@ @@ -170,7 +170,7 @@
170 android:layout_width="wrap_content" 170 android:layout_width="wrap_content"
171 android:layout_height="wrap_content" 171 android:layout_height="wrap_content"
172 android:layout_marginLeft="10dp" 172 android:layout_marginLeft="10dp"
173 - android:text="路线完成" 173 + android:text="--"
174 android:textColor="@color/text_gray" 174 android:textColor="@color/text_gray"
175 android:textSize="11sp" /> 175 android:textSize="11sp" />
176 </LinearLayout> 176 </LinearLayout>
moudle_pedometer/src/main/res/layout/layout_finish_step.xml
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
38 android:id="@+id/tv_step" 38 android:id="@+id/tv_step"
39 android:layout_width="wrap_content" 39 android:layout_width="wrap_content"
40 android:layout_height="wrap_content" 40 android:layout_height="wrap_content"
41 - android:text="1233" 41 + android:text="--"
42 android:textColor="@color/green_round" 42 android:textColor="@color/green_round"
43 android:textSize="28sp" 43 android:textSize="28sp"
44 android:textStyle="bold" /> 44 android:textStyle="bold" />
moudle_pedometer/src/main/res/layout/layout_finish_user_info.xml
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 8
9 <LinearLayout 9 <LinearLayout
10 android:layout_width="match_parent" 10 android:layout_width="match_parent"
11 - android:layout_height="170dp" 11 + android:layout_height="190dp"
12 android:layout_marginTop="30dp" 12 android:layout_marginTop="30dp"
13 android:background="@drawable/shape_10dp_white_raduis_bg" 13 android:background="@drawable/shape_10dp_white_raduis_bg"
14 android:orientation="vertical"> 14 android:orientation="vertical">
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 android:layout_height="wrap_content" 19 android:layout_height="wrap_content"
20 android:layout_marginLeft="80dp" 20 android:layout_marginLeft="80dp"
21 android:layout_marginTop="10dp" 21 android:layout_marginTop="10dp"
22 - android:text="用户昵称" 22 + android:text="--"
23 android:textColor="@color/text_black" 23 android:textColor="@color/text_black"
24 android:textSize="13sp" /> 24 android:textSize="13sp" />
25 <!----> 25 <!---->
@@ -40,7 +40,7 @@ @@ -40,7 +40,7 @@
40 android:layout_height="wrap_content" 40 android:layout_height="wrap_content"
41 android:layout_marginLeft="15dp" 41 android:layout_marginLeft="15dp"
42 android:layout_marginTop="15dp" 42 android:layout_marginTop="15dp"
43 - android:text="奥森公园南路" 43 + android:text="--"
44 android:textColor="@color/text_black" 44 android:textColor="@color/text_black"
45 android:textSize="15sp" /> 45 android:textSize="15sp" />
46 46
@@ -50,7 +50,7 @@ @@ -50,7 +50,7 @@
50 android:layout_height="wrap_content" 50 android:layout_height="wrap_content"
51 android:layout_marginLeft="15dp" 51 android:layout_marginLeft="15dp"
52 android:layout_marginTop="5dp" 52 android:layout_marginTop="5dp"
53 - android:text="2019/06/10 9:51" 53 + android:text="--"
54 android:textColor="@color/text_gray" 54 android:textColor="@color/text_gray"
55 android:textSize="10sp" /> 55 android:textSize="10sp" />
56 </LinearLayout> 56 </LinearLayout>
@@ -66,7 +66,7 @@ @@ -66,7 +66,7 @@
66 android:layout_width="wrap_content" 66 android:layout_width="wrap_content"
67 android:layout_height="wrap_content" 67 android:layout_height="wrap_content"
68 android:layout_marginRight="10dp" 68 android:layout_marginRight="10dp"
69 - android:text="1.53" 69 + android:text="--"
70 android:textColor="@color/text_black" 70 android:textColor="@color/text_black"
71 android:textSize="45sp" 71 android:textSize="45sp"
72 android:textStyle="bold" /> 72 android:textStyle="bold" />
@@ -104,7 +104,7 @@ @@ -104,7 +104,7 @@
104 android:id="@+id/tv_speed" 104 android:id="@+id/tv_speed"
105 android:layout_width="wrap_content" 105 android:layout_width="wrap_content"
106 android:layout_height="wrap_content" 106 android:layout_height="wrap_content"
107 - android:text="34'33''" 107 + android:text="--"
108 android:textColor="@color/text_black" 108 android:textColor="@color/text_black"
109 android:textSize="20sp" 109 android:textSize="20sp"
110 android:textStyle="bold" /> 110 android:textStyle="bold" />
@@ -129,7 +129,7 @@ @@ -129,7 +129,7 @@
129 android:id="@+id/tv_timer" 129 android:id="@+id/tv_timer"
130 android:layout_width="wrap_content" 130 android:layout_width="wrap_content"
131 android:layout_height="wrap_content" 131 android:layout_height="wrap_content"
132 - android:text="00:00:00" 132 + android:text="--"
133 android:textColor="@color/text_black" 133 android:textColor="@color/text_black"
134 android:textSize="20sp" 134 android:textSize="20sp"
135 android:textStyle="bold" /> 135 android:textStyle="bold" />
moudle_pedometer/src/main/res/values/ids.xml
@@ -8,5 +8,7 @@ @@ -8,5 +8,7 @@
8 <item name="fragment_finish_run_map" type="id" /> 8 <item name="fragment_finish_run_map" type="id" />
9 <!--路径工具--> 9 <!--路径工具-->
10 <item name="fragment_start_collect_trace" type="id" /> 10 <item name="fragment_start_collect_trace" type="id" />
  11 + <!--上传失败-->
  12 + <item name="fragment_upload_fail" type="id" />
11 13
12 </resources> 14 </resources>
moudle_pedometer/src/main/res/values/strings.xml
@@ -69,7 +69,7 @@ @@ -69,7 +69,7 @@
69 <string name="loc_gps_accuracy_mid">GPS信号质量中等</string> 69 <string name="loc_gps_accuracy_mid">GPS信号质量中等</string>
70 <string name="loc_gps_accuracy_good">GPS信号质量好</string> 70 <string name="loc_gps_accuracy_good">GPS信号质量好</string>
71 <string name="layout_street_active_type">活动类型</string> 71 <string name="layout_street_active_type">活动类型</string>
72 - <string name="open_gps_tip">您尚未开启GPS,为确保定位准确性,请您打开后使用!</string> 72 + <string name="open_gps_tip">请开启GPS饼将其设置为高精度模式!</string>
73 <!----> 73 <!---->
74 <!--网络请求--> 74 <!--网络请求-->
75 <string name="retry">重试</string> 75 <string name="retry">重试</string>
@@ -88,6 +88,7 @@ @@ -88,6 +88,7 @@
88 <string name="add_path">添加轨迹</string> 88 <string name="add_path">添加轨迹</string>
89 <string name="addpath">绑定轨迹</string> 89 <string name="addpath">绑定轨迹</string>
90 <string name="delect">删除</string> 90 <string name="delect">删除</string>
  91 + <string name="no_fail_line_text_tip">没有上传失败的路线哦</string>
91 92
92 93
93 </resources> 94 </resources>