From ee9d75f83fb85f8206c8ea8d08750611bee35856 Mon Sep 17 00:00:00 2001
From: endian11 <Dana_Lee1016@126.com>
Date: 星期五, 18 九月 2020 17:22:32 +0800
Subject: [PATCH] 测试项目采集、路口采集,完成发送0x8017;目前需要加一个发送查询是否在某段路

---
 app/src/main/java/safeluck/drive/evaluation/app.java                                 |    4 +
 app/src/main/java/safeluck/drive/evaluation/routecollect/impl/RouteModel.java        |   60 ++++++++++++++++---
 app/src/main/java/safeluck/drive/evaluation/routecollect/RouteCollectController.java |   41 ++++++++++++-
 app/src/main/java/safeluck/drive/evaluation/routecollect/IRouteCollectInterface.java |   13 ++++
 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java              |   20 ++++--
 5 files changed, 115 insertions(+), 23 deletions(-)

diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index f745d5a..d964f41 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -53,6 +53,7 @@
 import safeluck.drive.evaluation.platformMessage.JKMessage0203;
 import safeluck.drive.evaluation.platformMessage.JKMessage0206;
 import safeluck.drive.evaluation.platformMessage.PlatFormConstant;
+import safeluck.drive.evaluation.routecollect.RouteCollectController;
 import safeluck.drive.evaluation.util.CThreadPoolExecutor;
 import safeluck.drive.evaluation.util.DataInitKt;
 import safeluck.drive.evaluation.util.FileUtil;
@@ -107,6 +108,7 @@
         CThreadPoolExecutor.runInBackground(()->{
 
                 int type = WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getExamStatusDao().getStartExamInt();
+            RouteCollectController.getInstance().startRoadListener();
             MyLog.i("寮�濮嬪垵濮嬪寲鏁版嵁鍙戦�佸湴鍥�/杞﹁締/mcu鍗囩骇鏂囦欢/鑰冭瘯鐘舵��="+type);
                 ExamPlatformData.getInstance().setExamType(type);
 //            OneTimeWorkRequest examStatausOutWorker = OneTimeWorkRequest.from(ExamStatusOutWorker.class);
@@ -524,7 +526,7 @@
 //                CEventCenter.dispatchEvent(Constant.BIND_RTK_INFO_MAP,cmd,0,json);
 //                break;
                 case Constant.ENTER_OR_EXIT_ROADCROSS_ID:
-                    CEventCenter.dispatchEvent(Constant.BIND_RTK_INFO_MAP,cmd,0,json);
+                    CEventCenter.dispatchEvent(Constant.BIND_ROUTE_COLLECT_TOPIC,cmd,0,json);
                 break;
         }
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
index 2698ff7..a66a6a2 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -150,7 +150,7 @@
     private RouteCross routeCross;
 
     //瑕佹彃鍏ユ暟鎹簱鐨勮Е鍙戠嚎淇℃伅
-    private RouteTriggerLine routeTriggerLine;
+    private RouteTriggerLine routeTriggerLine = new RouteTriggerLine();
 
 private List<Integer> btn_ids = new ArrayList<Integer>();
 private HashMap<String,Integer> routeCollect_btn_ids = new HashMap<>();
@@ -528,6 +528,7 @@
                     if (exam_type != Constant.NONE_BEEN_START_EXAM){
                         if (ROUTE_COLLECT == exam_type){
                             btn_start_exam.setText("缁撴潫閲囬泦");
+                            routeCollectController.startRoadListener();
                         }else{
 
                             btn_start_exam.setText("缁撴潫璁粌");
@@ -575,7 +576,9 @@
     private void initView(View view) {
 
         tv_route_collect_info = view.findViewById(R.id.tv_route_info);
-        routeCollectController = new RouteCollectController(this);
+//        routeCollectController = new RouteCollectController(this);
+        routeCollectController = RouteCollectController.getInstance();
+        routeCollectController.setRouteCollectController(this);
         items = view.findViewById(R.id.items);
         items_score=view.findViewById(R.id.items_score);
         route_collect=view.findViewById(R.id.route_collect);
@@ -713,6 +716,7 @@
                                         ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.ROUTE_MODE);
                                         exam_type = 5;
                                         sendExamJson(1,exam_type);
+
                                         examStatusViewModel.updateStartExam(exam_type);
                                         items.setVisibility(View.GONE);
                                         items_score.setVisibility(View.GONE);
@@ -744,6 +748,7 @@
 
                         Toast.makeText(_mActivity, "缁撴潫閲囬泦", Toast.LENGTH_SHORT).show();
                         routeLineViewModel.updateCurrCollectFlag("");
+                        routeCollectController.endRoadListener();
                         ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.MODE_NONE);
                         exam_type = 0;
                         examStatusViewModel.updateStartExam(exam_type);
@@ -996,7 +1001,7 @@
                                     remoteRouteCollect.setScheme(routeCollects);
                                     String str = new Gson().toJson(remoteRouteCollect);
                                     Log.i(TAG,"json====="+str);
-                                    //todo 鍙戦�佺嚎璺�
+                                    AYSdk.getInstance().sendCmd(0x8017,str);
                                     sendMessage();
                                     break;
                                 }
@@ -1106,9 +1111,9 @@
     @Override
     public void beginCollectView() {
         Log.i(TAG,"BIND_RTK_INFO_MAP");
-        CThreadPoolExecutor.runOnMainThread(()->{
-            StatusDialog.with(_mActivity).setType(StatusDialog.Type.PROGRESS).setCancelable(true).show();
-        });
+//        CThreadPoolExecutor.runOnMainThread(()->{
+//            StatusDialog.with(_mActivity).setType(StatusDialog.Type.PROGRESS).setCancelable(true).show();
+//        });
 
     }
 
@@ -1129,6 +1134,8 @@
 
         if (roadInfo != null && roadInfo.getStatus()==1){
             Log.i(TAG,"鍦ㄦ煇涓矾閲岄潰"+roadInfo.getRoad_id());
+            stringBuilder.append(String.format("鍦�%d鍙疯矾閲岄潰",roadInfo.getRoad_id()));
+            stringBuilder.append("\n");
             routeTriggerLine.setX(collectPointResult.getX());
             routeTriggerLine.setY(collectPointResult.getY());
             routeTriggerLine.setType(ExamPlatformData.getInstance().getCurrRouteItem());
@@ -1154,7 +1161,6 @@
     public void roadinfo(RoadInfo roadInfo) {
             Log.i(TAG,String.format("閬撹矾淇℃伅%s",roadInfo.toString()));
             //閬撹矾淇℃伅鏄病鏈夎繘琛屾湰鍦颁繚瀛樼殑锛屽鏋滃穿婧冪殑璇濓紝灏辨湁闂
-            ExamPlatformData.getInstance().setRouteCollectRoadInfo(roadInfo);
             stringBuilder.append(String.format("閬撹矾淇℃伅%s",roadInfo.toString()));
             stringBuilder.append("\n");
             showRouteCollectInfoText();
diff --git a/app/src/main/java/safeluck/drive/evaluation/routecollect/IRouteCollectInterface.java b/app/src/main/java/safeluck/drive/evaluation/routecollect/IRouteCollectInterface.java
index ccfca56..b659f5d 100644
--- a/app/src/main/java/safeluck/drive/evaluation/routecollect/IRouteCollectInterface.java
+++ b/app/src/main/java/safeluck/drive/evaluation/routecollect/IRouteCollectInterface.java
@@ -10,10 +10,21 @@
     /**
      * 寮�濮嬭俯鐐�  涓嶆柇鐨勮繑鍥炵偣鍧愭爣
      */
-    void startCollect(ILoadListener listener);
+    void startCollect();
 
     /**
      * 鍛婅瘔杩滅▼鏈嶅姟 鍋滄閲囩偣锛屼笉瑕佷竴鐩磋繑鐐圭殑鍧愭爣浜�
      */
     void endCollect();
+
+    /**
+     *鐩戝惉杩涘叆鏌愪竴閬撹矾
+     */
+    void startRoadListener();
+
+
+
+    void endRoadListener();
+
+    void setLoadListener(ILoadListener routeCollectController);
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/routecollect/RouteCollectController.java b/app/src/main/java/safeluck/drive/evaluation/routecollect/RouteCollectController.java
index 9c5bdcf..9915074 100644
--- a/app/src/main/java/safeluck/drive/evaluation/routecollect/RouteCollectController.java
+++ b/app/src/main/java/safeluck/drive/evaluation/routecollect/RouteCollectController.java
@@ -1,5 +1,7 @@
 package safeluck.drive.evaluation.routecollect;
 
+import android.util.Log;
+
 import com.anyun.exam.lib.AYSdk;
 
 import safeluck.drive.evaluation.fragment.TrainFragment;
@@ -18,13 +20,23 @@
     ICollectView iCollectView;
     RouteModel routeModel;
 
+    private static final String TAG = "RouteModel";
+    private boolean isStartRoadListener = false;
+
+    private RouteCollectController() {
+        routeModel = new RouteModel();
+    }
+public static RouteCollectController getInstance(){
+        return new RouteCollectController();
+}
     /**
      *  Topic=[bind_rtk_info_map],message={"utc":"20200917081227.40","qf":3,"coord_x":0.974,"coord_x_dir":"N","coord_y":-0.191,"coord_y_dir":"E","heading":315.0,"pitch":0.0,"roll":0.0,"sat_num":14,"latitude":31.174458016666667,"longitude":121.38786518333333,"altitude":58.9666,"speed":1.72591488,"track_ture":315.0}
      * @param collectView
      */
-    public  RouteCollectController(ICollectView collectView){
+    public  void setRouteCollectController(ICollectView collectView){
         this.iCollectView = collectView;
-        routeModel = new RouteModel();
+
+        routeModel.setLoadListener(this);
     }
 
 
@@ -33,7 +45,7 @@
             iCollectView.beginCollectView();
         }
         if (routeModel != null){
-            routeModel.startCollect(this);
+            routeModel.startCollect();
         }
     }
 
@@ -53,14 +65,35 @@
 
     @Override
     public void roadInfo(RoadInfo roadInfo) {
-
+        if (iCollectView != null){
+            iCollectView.roadinfo(roadInfo);
+        }
     }
 
 
 
     @Override
     public void roadCrossInfo(RoadCrossInfo roadCrossInfo) {
+        if (iCollectView != null){
+            iCollectView.roadcrossInfo(roadCrossInfo);
+        }
+    }
+
+    public void startRoadListener() {
+        if (!isStartRoadListener){
+            isStartRoadListener = true;
+            if (routeModel != null){
+                routeModel.startRoadListener();
+            }
+        }else{
+            Log.i(TAG,"宸茬粡鐩戝惉杩囦簡锛屼笉鍐嶇洃鍚�");
+        }
 
     }
 
+    public void endRoadListener(){
+        if (routeModel != null){
+            routeModel.endRoadListener();
+        }
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/routecollect/impl/RouteModel.java b/app/src/main/java/safeluck/drive/evaluation/routecollect/impl/RouteModel.java
index cdc1386..1461829 100644
--- a/app/src/main/java/safeluck/drive/evaluation/routecollect/impl/RouteModel.java
+++ b/app/src/main/java/safeluck/drive/evaluation/routecollect/impl/RouteModel.java
@@ -3,16 +3,20 @@
 import android.util.Log;
 
 import com.anyun.exam.lib.IRemoteInterface;
+import com.google.gson.Gson;
 
 import org.json.JSONException;
 import org.json.JSONObject;
 
 import safeluck.drive.evaluation.Constant;
+import safeluck.drive.evaluation.bean.ExamPlatformData;
 import safeluck.drive.evaluation.cEventCenter.CEventCenter;
 import safeluck.drive.evaluation.cEventCenter.ICEventListener;
 import safeluck.drive.evaluation.routecollect.CollectPointResult;
 import safeluck.drive.evaluation.routecollect.ILoadListener;
 import safeluck.drive.evaluation.routecollect.IRouteCollectInterface;
+import safeluck.drive.evaluation.routecollect.bean.RoadCrossInfo;
+import safeluck.drive.evaluation.routecollect.bean.RoadInfo;
 import safeluck.drive.evaluation.util.Utils;
 
 /**
@@ -24,7 +28,32 @@
 public class RouteModel implements IRouteCollectInterface{
 
     ILoadListener iLoadListener;
+    private Gson gson = new Gson();
     private static final String TAG = "RouteModel";
+
+    private ICEventListener icEventListener1= new ICEventListener() {
+        @Override
+        public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
+
+            if (msgCode == Constant.ENTER_OR_EXIT_ROAD_ID){
+
+                if (iLoadListener != null){
+                    Log.i(TAG,"閬撹矾娑堟伅"+(String)obj);
+                    RoadInfo roadInfo = gson.fromJson((String)obj,RoadInfo.class);
+                    ExamPlatformData.getInstance().setRouteCollectRoadInfo(roadInfo);
+                    iLoadListener.roadInfo(roadInfo);
+                }
+            }
+
+            if (msgCode == Constant.ENTER_OR_EXIT_ROADCROSS_ID){
+                Log.i(TAG,"璺彛娑堟伅"+(String)obj);
+                if (iLoadListener != null){
+                    RoadCrossInfo roadCrossInfo = gson.fromJson((String) obj,RoadCrossInfo.class);
+                    iLoadListener.roadCrossInfo(roadCrossInfo);
+                }
+            }
+        }
+    };
     private ICEventListener icEventListener= new ICEventListener() {
         @Override
         public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
@@ -48,20 +77,13 @@
                 }
             }
 
-            if (msgCode == Constant.ENTER_OR_EXIT_ROAD_ID){
-                Log.i(TAG,"閬撹矾娑堟伅"+(String)obj);
-            }
-
-            if (msgCode == Constant.ENTER_OR_EXIT_ROADCROSS_ID){
-                Log.i(TAG,"璺彛娑堟伅"+(String)obj);
-            }
 
         }
     };
 
     @Override
-    public void startCollect(ILoadListener listener) {
-        iLoadListener = listener;
+    public void startCollect() {
+
         //璋冪敤AYSdk 鏂规硶鍚姩閲囩偣
         //set IRouteRemotePointCallback
 
@@ -76,7 +98,25 @@
     public void endCollect() {
         //濡傛灉閲囩敤application鐨刢allback 锛屽彲鑳介渶瑕佸弽娉ㄥ唽涓�涓狢EventLisntener 瑙g粦
         CEventCenter.onBindEvent(false,icEventListener,Constant.BIND_RTK_INFO_MAP);
-        iLoadListener = null;
+
+    }
+
+    @Override
+    public void startRoadListener() {
+        Log.i(TAG,"绾胯矾閲囬泦锛屽紑濮嬭矾鐩戝惉");
+        CEventCenter.onBindEvent(true,icEventListener1, Constant.BIND_ROUTE_COLLECT_TOPIC);
+    }
+
+
+
+    @Override
+    public void endRoadListener() {
+        CEventCenter.onBindEvent(false,icEventListener1, Constant.BIND_ROUTE_COLLECT_TOPIC);
+    }
+
+    @Override
+    public void setLoadListener(ILoadListener routeCollectController) {
+        iLoadListener = routeCollectController;
     }
 
 

--
Gitblit v1.8.0