From a889e603481b5f3f6cf0074af1f25f94b571db8c Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期二, 21 一月 2020 15:01:46 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/endian11/DriveJudge
---
app/src/main/java/safeluck/drive/evaluation/Constant.java | 2
app/src/main/java/safeluck/drive/evaluation/app.java | 7
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java | 4
app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java | 5
app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java | 233 ++++++++++++++++++++++++++++------------------
app/src/main/java/safeluck/drive/evaluation/util/CThreadPoolExecutor.java | 1
6 files changed, 154 insertions(+), 98 deletions(-)
diff --git a/app/src/main/java/safeluck/drive/evaluation/Constant.java b/app/src/main/java/safeluck/drive/evaluation/Constant.java
index 995aafe..4458296 100644
--- a/app/src/main/java/safeluck/drive/evaluation/Constant.java
+++ b/app/src/main/java/safeluck/drive/evaluation/Constant.java
@@ -69,5 +69,7 @@
public static final int PASSING_SCORE = 80;
public static final int DEBUG_RTCM = 0x000f;
public static final int DEBUG_TXT = 0x0010;
+ public static final String BIND_RTCM_TOPIC = "BIND_RTCM_TOPIC";
+ public static final String BIND_DEBUG_TXT = "BIND_DEBUG_TXT";
public static String exam_enter_exitdata="exam_enter_exitdata";
}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java
index e11d7c3..a2874c9 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java
@@ -32,4 +32,8 @@
public void insert(FailedProj proj){
failedProjRepository.insert(proj);
}
+
+ public void deleteAll(){
+ failedProjRepository.deleteAll();
+ }
}
diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index 5ae8817..3db0acc 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -66,7 +66,7 @@
super.onCreate();
//鍒濆鍖朏ragment 寤鸿鍦ˋpplication onCreate閲岄潰鍒濆鍖�
if (SystemUtil.compareProcessName(this)) {
- Fragmentation.builder().stackViewMode(Fragmentation.BUBBLE).debug(false)
+ Fragmentation.builder().stackViewMode(Fragmentation.BUBBLE).debug(true)
.handleException(new ExceptionHandler() {
@Override
public void onException(@NonNull Exception e) {
@@ -166,7 +166,6 @@
MyLog.d(TAG, "鑰冭瘯寮�濮嬶紝澶嶄綅鏁版嵁搴撳け璐ラ」鐩〃");
try {
- failedProjRepository.deleteAll();
JSONObject jsonObject =new JSONObject((String)json);
int errCode = jsonObject.getInt("error");
switch (errCode){
@@ -221,10 +220,10 @@
CEventCenter.dispatchEvent(Constant.REAL_TIME_POS_CAR_TOPIC,cmd,0,json);
break;
case Constant.DEBUG_RTCM:
- CEventCenter.dispatchEvent(Constant.REAL_TIME_POS_CAR_TOPIC,cmd,0,json);
+ CEventCenter.dispatchEvent(Constant.BIND_RTCM_TOPIC,cmd,0,json);
break;
case Constant.DEBUG_TXT:
- CEventCenter.dispatchEvent(Constant.REAL_TIME_POS_CAR_TOPIC,cmd,0,json);
+ CEventCenter.dispatchEvent(Constant.BIND_DEBUG_TXT,cmd,0,json);
break;
}
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
index 8f30081..559f021 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
@@ -6,8 +6,8 @@
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
-import android.opengl.GLSurfaceView;
import android.os.Bundle;
+import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.SurfaceHolder;
@@ -15,7 +15,6 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
-import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -32,6 +31,9 @@
import java.lang.reflect.Type;
import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.Constant;
@@ -52,6 +54,36 @@
*/
public class MapFragment extends SupportFragment {
private boolean isDrawing = false;
+ private ICEventListener rtcmicEventListener = new ICEventListener() {
+ @Override
+ public void onCEvent(String topic, int msgCode, int resultCode, final Object obj) {
+ if (msgCode == Constant.DEBUG_RTCM){
+
+ CThreadPoolExecutor.runOnMainThread(new Runnable() {
+ @Override
+ public void run() {
+ Log.i(TAG, "title="+(String)obj);
+ toolbar.setTitle((String)obj);
+ }
+ });
+ }
+ }
+ };
+ private ICEventListener debugTxticEventListener = new ICEventListener() {
+ @Override
+ public void onCEvent(String topic, int msgCode, int resultCode, final Object obj) {
+ if (msgCode == Constant.DEBUG_TXT){
+ CThreadPoolExecutor.runOnMainThread(new Runnable() {
+ @Override
+ public void run() {
+ Log.i(TAG, "subtitle="+(String)obj);
+ toolbar.setSubtitle((String)obj);
+ }
+ });
+
+ }
+ }
+ };
public static SupportFragment newInstance() {
return new MapFragment();
@@ -80,6 +112,9 @@
, {9.278, -1.5330000000000004}, {9.277999999999999, 1.467000000000001}};
Gson gson;
private LinearLayout linearLayout;//surfaceview鐨勭埗瀹瑰櫒锛屼负浜嗙Щ鍔╯urfaceview鑰屼娇鐢紝鍥犱负scrollto涓嶈兘绉诲姩view锛�
+ private LinkedBlockingQueue queue = new LinkedBlockingQueue(100);
+ private ExecutorService producer = Executors.newSingleThreadExecutor();
+ private ExecutorService consumer = Executors.newSingleThreadExecutor();
@Nullable
@@ -88,6 +123,7 @@
View view = inflater.inflate(R.layout.layout_mapfragment, container, false);
gson = new Gson();
initView(view);
+ consumer.execute(new CalRunnable());
return view;
}
@@ -282,12 +318,12 @@
pathText.lineTo(700, 30);
canvas2.drawTextOnPath(osd2, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
}
- if (osd3 != null) {
- Path pathText = new Path();
- pathText.moveTo(10, 240);
- pathText.lineTo(700, 130);
- canvas2.drawTextOnPath(osd2, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
- }
+// if (osd3 != null) {
+// Path pathText = new Path();
+// pathText.moveTo(10, 240);
+// pathText.lineTo(700, 130);
+// canvas2.drawTextOnPath(osd2, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+// }
// 鎻愪氦鐢诲竷
Canvas canvas = holder.lockCanvas();
@@ -329,83 +365,83 @@
int line = 0;
int map_line = 0;
private StringBuffer stringBuffer = new StringBuffer();
+ class MessageRemoteService{
+ public int msgCode;
+ public String json;
+
+ public MessageRemoteService(int msgCode, Object obj) {
+ this.json = (String) obj;
+ this.msgCode = msgCode;
+ }
+ }
private ICEventListener icEventListener = new ICEventListener() {
@Override
- public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
+ public void onCEvent(String topic, final int msgCode, int resultCode, final Object obj) {
- CThreadPoolExecutor.runInBackground(new CalRunnable(msgCode,(String)obj));
+
+ producer.execute(new Runnable() {
+ @Override
+ public void run() {
+ queue.offer(new MessageRemoteService(msgCode,obj));
+ }
+ });
+
}
};
+ boolean flag = true;
class CalRunnable implements Runnable{
private String json;
private int cmd;
- public CalRunnable(int cmd,String obj) {
- this.json = obj;
- this.cmd = cmd;
- }
@Override
public void run() {
- MyLog.i(TAG, json);
- if (!(cmd == Constant.REAL_TIME_CAR_POS)){
- if (cmd == Constant.DEBUG_RTCM){
- stringBuffer.append("\tRTCM:");
+ while (flag){
+ MessageRemoteService messageRemoteService = (MessageRemoteService) queue.peek();
+ if (messageRemoteService == null){
try {
- JSONObject jsonObject = new JSONObject(json);
- int length = jsonObject.getInt("length");
- stringBuffer.append(length);
- } catch (JSONException e) {
+ Thread.sleep(100);
+ } catch (InterruptedException e) {
e.printStackTrace();
}
}
- if (cmd == Constant.DEBUG_TXT){
- try {
- JSONObject jsonObject = new JSONObject(json);
- String info = jsonObject.getString("info");
- stringBuffer.append("\tinfo:");
- stringBuffer.append(info);
- } catch (JSONException e) {
- e.printStackTrace();
+ messageRemoteService = (MessageRemoteService) queue.poll();
+ if (messageRemoteService != null){
+ this.cmd = messageRemoteService.msgCode;
+ this.json = messageRemoteService.json;
+ MyLog.i(TAG, json);
+
+
+ RealTimeCarPos timeCarPos = gson.fromJson((String) json, RealTimeCarPos.class);
+ List<Double> points = timeCarPos.getPoint();
+ switch (timeCarPos.getMove()){
+ case 0:
+ osd2 = "鍋滆溅";
+ break;
+ case 1:
+ osd2 = "鍓嶈繘";
+ break;
+ case -1:
+ osd2 = "鍚庨��";
+ break;
}
+ osd="鏂瑰悜瑙�"+String.valueOf(timeCarPos.getHeading());
+ line = 0;
+ map_line = 0;
- }
- }
- osd3 = stringBuffer.toString();
- if (osd3!=null && osd3.contains("info:")&&osd3.contains("RTCM:")){
+ for (int i = 0; i < points.size(); i++) {
+ if ((i % 2) == 0) {
+ car[line][0] = points.get(i);
+ } else {
+ double value = 0 - points.get(i);
+ Log.i(TAG, "onCEvent: 鏂板��=" + value + " 浣嶇疆锛�" + i);
+ car[line][1] = value;
+ line++;
+ }
- stringBuffer.delete(0,stringBuffer.length());
- }
- RealTimeCarPos timeCarPos = gson.fromJson((String) json, RealTimeCarPos.class);
- List<Double> points = timeCarPos.getPoint();
- switch (timeCarPos.getMove()){
- case 0:
- osd2 = "鍋滆溅";
- break;
- case 1:
- osd2 = "鍓嶈繘";
- break;
- case -1:
- osd2 = "鍚庨��";
- break;
- }
- osd="鏂瑰悜瑙�"+String.valueOf(timeCarPos.getHeading());
- line = 0;
- map_line = 0;
-
- for (int i = 0; i < points.size(); i++) {
- if ((i % 2) == 0) {
- car[line][0] = points.get(i);
- } else {
- double value = 0 - points.get(i);
- Log.i(TAG, "onCEvent: 鏂板��=" + value + " 浣嶇疆锛�" + i);
- car[line][1] = value;
- line++;
- }
-
- }
- map_id = timeCarPos.getMap_id();
+ }
+ map_id = timeCarPos.getMap_id();
// 1 - 鍊掑簱
// 2 - 鍧¤捣
// 3 - 渚ф柟鍋滆溅
@@ -413,56 +449,67 @@
// 5 - 鐩磋杞集
- StringBuffer buffer = FileUtil.readTxtFileFromSD(_mActivity,Constant.MAP);
- Type type = new TypeToken<List<ExamMap>>(){}.getType();
- if (buffer != null){
- List<ExamMap> examMaps = gson.fromJson(buffer.toString().trim(), type);
+ StringBuffer buffer = FileUtil.readTxtFileFromSD(_mActivity,Constant.MAP);
+ Type type = new TypeToken<List<ExamMap>>(){}.getType();
+ if (buffer != null){
+ List<ExamMap> examMaps = gson.fromJson(buffer.toString().trim(), type);
- for (int i = 0; i < examMaps.size(); i++) {
- ExamMap examMap = examMaps.get(i);
- if (map_id == examMap.getId()){
- List<ExamMap.PointBean> pointBeanList = examMap.getPoint();
+ for (int i = 0; i < examMaps.size(); i++) {
+ ExamMap examMap = examMaps.get(i);
+ if (map_id == examMap.getId()){
+ List<ExamMap.PointBean> pointBeanList = examMap.getPoint();
- for(int j=0; j<pointBeanList.size();j++){
- List<Double> xys = pointBeanList.get(i).getXy();
- if(j==0){
- map = new double[xys.size()/2][2];
- }else{
- MyLog.i(TAG,"鏆傛椂杩樹笉鏀寔鏇茬嚎");
+ for(int j=0; j<pointBeanList.size();j++){
+ List<Double> xys = pointBeanList.get(i).getXy();
+ if(j==0){
+ map = new double[xys.size()/2][2];
+ }else{
+ MyLog.i(TAG,"鏆傛椂杩樹笉鏀寔鏇茬嚎");
+ break;
+ }
+
+ for (int k=0; k<xys.size();k++){
+ if ((k % 2) == 0) {
+ map[map_line][0] = xys.get(k);
+ } else {
+ double value = 0 - xys.get(k);
+ Log.i(TAG, "onCEvent: map鏂板��=" + value + " 浣嶇疆锛�" + i);
+ map[map_line][1] = value;
+ map_line++;
+ }
+ }
+
+ }
break;
}
-
- for (int k=0; k<xys.size();k++){
- if ((k % 2) == 0) {
- map[map_line][0] = xys.get(k);
- } else {
- double value = 0 - xys.get(k);
- Log.i(TAG, "onCEvent: map鏂板��=" + value + " 浣嶇疆锛�" + i);
- map[map_line][1] = value;
- map_line++;
- }
- }
-
}
- break;
}
+ DrawMap(map,car);
}
+
}
- DrawMap(map,car);
+
}
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
CEventCenter.onBindEvent(true, icEventListener, Constant.REAL_TIME_POS_CAR_TOPIC);
+ CEventCenter.onBindEvent(true, rtcmicEventListener, Constant.BIND_RTCM_TOPIC);
+ CEventCenter.onBindEvent(true, debugTxticEventListener, Constant.BIND_DEBUG_TXT);
}
@Override
public void onDetach() {
super.onDetach();
+ flag = false;
+ producer.shutdown();
+ consumer.shutdown();
CEventCenter.onBindEvent(false, icEventListener, Constant.REAL_TIME_POS_CAR_TOPIC);
+ CEventCenter.onBindEvent(false, icEventListener, Constant.BIND_RTCM_TOPIC);
+ CEventCenter.onBindEvent(false, icEventListener, Constant.BIND_DEBUG_TXT);
}
}
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
index 3f2ec67..cc85f64 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -79,6 +79,7 @@
private int currTotalScore = 100;
private List<ScoreBean> mArrayList = new ArrayList<>();
private static final int SPEED_DATA = 2;
+ private FailedProjViewModel failedProjViewModel;
public static SupportFragment newInstance() {
return new NetWorkTrainFragment();
@@ -109,7 +110,7 @@
View view = inflater.inflate(R.layout.layout_train_fragment, container, false);
initView(view);
- FailedProjViewModel failedProjViewModel = ViewModelProviders.of(this).get(FailedProjViewModel.class);
+ failedProjViewModel = ViewModelProviders.of(this).get(FailedProjViewModel.class);
failedProjViewModel.getFailedProjectsForI(Constant.TEST_STU_ID).observe(this, new Observer<List<FailedProj_select>>() {
@Override
public void onChanged(List<FailedProj_select> failedProj_selects) {
@@ -288,6 +289,7 @@
switch (v.getId()) {
case R.id.btn_start:
examStatusViewModel.updateStartExam(Constant.HAS_BEEN_START_EXAM);
+ failedProjViewModel.deleteAll();
sendExamJson(1);
iv_head.getDrawable().setLevel(1);
break;
@@ -297,6 +299,7 @@
break;
case R.id.view_map:
MapFragment mapFragment = findFragment(MapFragment.class);
+ MyLog.i(TAG,"鏌ョ湅鍦板浘");
if (mapFragment == null) {
mapFragment = (MapFragment) MapFragment.newInstance();
}
diff --git a/app/src/main/java/safeluck/drive/evaluation/util/CThreadPoolExecutor.java b/app/src/main/java/safeluck/drive/evaluation/util/CThreadPoolExecutor.java
index 7c36728..4317398 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/CThreadPoolExecutor.java
+++ b/app/src/main/java/safeluck/drive/evaluation/util/CThreadPoolExecutor.java
@@ -208,6 +208,7 @@
public static void runInBackground(Runnable runnable) {
if (pool == null) {
+ Log.i(TAG, "runInBackground: ");
createThreadPoolExecutor();
}
--
Gitblit v1.8.0