From 844af51bfcd8c4dadd1782a7fb7df3f2274807ac Mon Sep 17 00:00:00 2001
From: endian11 <Dana_Lee1016@126.com>
Date: 星期一, 26 十月 2020 16:39:10 +0800
Subject: [PATCH] 完成所有设置数据从本地json文件的获取,

---
 app/src/main/java/safeluck/drive/evaluation/bean/StartCarSetting.java                        |   45 ++
 app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting2.java     |   84 ++++
 app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting5.java     |   34 +
 app/src/main/java/safeluck/drive/evaluation/bean/StationSetting.java                         |   44 ++
 app/src/main/java/safeluck/drive/evaluation/viewmodels/OverTakeAndMeetingSettingViewModel.kt |   48 ++
 app/src/main/assets/startcar_setting.json                                                    |    1 
 app/src/main/java/safeluck/drive/evaluation/bean/CorneringLampSetting.java                   |   24 +
 app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting7.java     |   28 +
 app/src/main/assets/straightline_setting.json                                                |    1 
 app/src/main/java/safeluck/drive/evaluation/viewmodels/StraightLineSettingViewModel.kt       |   48 ++
 app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting3.java     |   35 +
 app/src/main/assets/station_setting.json                                                     |    1 
 app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting6.java     |   26 +
 app/src/main/java/safeluck/drive/evaluation/viewmodels/CorneringLampSettingViewModel.kt      |   45 ++
 app/src/main/java/safeluck/drive/evaluation/bean/SubDecGearSetting.java                      |   34 +
 app/src/main/assets/cornerlamp_setting.json                                                  |    1 
 app/src/main/assets/subdecGear_setting.json                                                  |    1 
 app/src/main/java/safeluck/drive/evaluation/bean/StraightLineSetting.java                    |   34 +
 app/src/main/assets/common_setting.json                                                      |    1 
 app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting9.java     |   44 ++
 app/src/main/java/safeluck/drive/evaluation/viewmodels/StationSettingViewModel.kt            |   45 ++
 app/src/main/java/safeluck/drive/evaluation/viewmodels/StartCarSettingViewModel.kt           |   47 ++
 app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting4.java     |   32 +
 app/src/main/java/safeluck/drive/evaluation/viewmodels/SubDecGearSettingViewModel.kt         |   45 ++
 app/src/main/java/safeluck/drive/evaluation/bean/OverTakeMeetingSetting.java                 |   24 +
 app/src/main/res/layout/layout_fragment_stationsettin.xml                                    |    3 
 app/src/main/assets/overtake_setting.json                                                    |    1 
 app/src/main/java/safeluck/drive/evaluation/bean/CommonSetting.java                          |   74 ++++
 app/src/main/java/safeluck/drive/evaluation/viewmodels/CommonSettingViewModel.kt             |   46 ++
 app/src/main/res/layout/layout_fragment_parkover_1.xml                                       |   10 
 app/src/main/assets/sidestop_setting.json                                                    |    1 
 app/src/main/java/safeluck/drive/evaluation/bean/SideStopSetting.java                        |   74 ++++
 app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting8.java     |   33 +
 app/src/main/java/safeluck/drive/evaluation/viewmodels/SideStopSettingViewModel.kt           |   47 ++
 34 files changed, 1,048 insertions(+), 13 deletions(-)

diff --git a/app/src/main/assets/common_setting.json b/app/src/main/assets/common_setting.json
new file mode 100644
index 0000000..1757a3d
--- /dev/null
+++ b/app/src/main/assets/common_setting.json
@@ -0,0 +1 @@
+{"road_slide_yellow_distance":0.1,"road_slide_red_distance":0.3,"road_pause_criteria":2000,"crash_dotted_line_cumulative_time":10,"continuous_change_lane_min_time":10,"change_lane_limit_distance":100}
\ No newline at end of file
diff --git a/app/src/main/assets/cornerlamp_setting.json b/app/src/main/assets/cornerlamp_setting.json
new file mode 100644
index 0000000..de4d8eb
--- /dev/null
+++ b/app/src/main/assets/cornerlamp_setting.json
@@ -0,0 +1 @@
+{"turn_signal_min_advance":3}
\ No newline at end of file
diff --git a/app/src/main/assets/overtake_setting.json b/app/src/main/assets/overtake_setting.json
new file mode 100644
index 0000000..4666b65
--- /dev/null
+++ b/app/src/main/assets/overtake_setting.json
@@ -0,0 +1 @@
+{"overtake_limit_distance":150}
\ No newline at end of file
diff --git a/app/src/main/assets/sidestop_setting.json b/app/src/main/assets/sidestop_setting.json
new file mode 100644
index 0000000..6a6f4eb
--- /dev/null
+++ b/app/src/main/assets/sidestop_setting.json
@@ -0,0 +1 @@
+{"road_total_distance":3000,"road_max_speed":3,"stop_car_open_door_allow_time":15,"stop_car_limit_distance":150,"stop_car_edge_red_distance":0.5,"stop_car_edge_yellow_distance":0.3}
\ No newline at end of file
diff --git a/app/src/main/assets/startcar_setting.json b/app/src/main/assets/startcar_setting.json
new file mode 100644
index 0000000..216a6d5
--- /dev/null
+++ b/app/src/main/assets/startcar_setting.json
@@ -0,0 +1 @@
+{"start_car_limit_distance":10,"open_door_drive_allow_distance":1.1,"start_car_max_rpm":2500}
\ No newline at end of file
diff --git a/app/src/main/assets/station_setting.json b/app/src/main/assets/station_setting.json
new file mode 100644
index 0000000..1bcd741
--- /dev/null
+++ b/app/src/main/assets/station_setting.json
@@ -0,0 +1 @@
+{"cross_school_max_speed":30,"crossing_break_valid_distance":30,"crossing_stop_valid_distance":3.5}
\ No newline at end of file
diff --git a/app/src/main/assets/straightline_setting.json b/app/src/main/assets/straightline_setting.json
new file mode 100644
index 0000000..619d310
--- /dev/null
+++ b/app/src/main/assets/straightline_setting.json
@@ -0,0 +1 @@
+{"straight_limit_distance":100,"straight_max_offset":0.3}
\ No newline at end of file
diff --git a/app/src/main/assets/subdecGear_setting.json b/app/src/main/assets/subdecGear_setting.json
new file mode 100644
index 0000000..843a08e
--- /dev/null
+++ b/app/src/main/assets/subdecGear_setting.json
@@ -0,0 +1 @@
+{"shift_limit_distance":120,"shift_hold_time":3}
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/CommonSetting.java b/app/src/main/java/safeluck/drive/evaluation/bean/CommonSetting.java
new file mode 100644
index 0000000..24b4d33
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/CommonSetting.java
@@ -0,0 +1,74 @@
+package safeluck.drive.evaluation.bean;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2020/10/26. 13:49:28
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class CommonSetting {
+
+    /**
+     * road_slide_yellow_distance : 0.1
+     * road_slide_red_distance : 0.3
+     * road_pause_criteria : 2000
+     * crash_dotted_line_cumulative_time : 10
+     * continuous_change_lane_min_time : 10
+     * change_lane_limit_distance : 100
+     */
+
+    private double road_slide_yellow_distance;
+    private double road_slide_red_distance;
+    private int road_pause_criteria;
+    private int crash_dotted_line_cumulative_time;
+    private int continuous_change_lane_min_time;
+    private int change_lane_limit_distance;
+
+    public double getRoad_slide_yellow_distance() {
+        return road_slide_yellow_distance;
+    }
+
+    public void setRoad_slide_yellow_distance(double road_slide_yellow_distance) {
+        this.road_slide_yellow_distance = road_slide_yellow_distance;
+    }
+
+    public double getRoad_slide_red_distance() {
+        return road_slide_red_distance;
+    }
+
+    public void setRoad_slide_red_distance(double road_slide_red_distance) {
+        this.road_slide_red_distance = road_slide_red_distance;
+    }
+
+    public int getRoad_pause_criteria() {
+        return road_pause_criteria;
+    }
+
+    public void setRoad_pause_criteria(int road_pause_criteria) {
+        this.road_pause_criteria = road_pause_criteria;
+    }
+
+    public int getCrash_dotted_line_cumulative_time() {
+        return crash_dotted_line_cumulative_time;
+    }
+
+    public void setCrash_dotted_line_cumulative_time(int crash_dotted_line_cumulative_time) {
+        this.crash_dotted_line_cumulative_time = crash_dotted_line_cumulative_time;
+    }
+
+    public int getContinuous_change_lane_min_time() {
+        return continuous_change_lane_min_time;
+    }
+
+    public void setContinuous_change_lane_min_time(int continuous_change_lane_min_time) {
+        this.continuous_change_lane_min_time = continuous_change_lane_min_time;
+    }
+
+    public int getChange_lane_limit_distance() {
+        return change_lane_limit_distance;
+    }
+
+    public void setChange_lane_limit_distance(int change_lane_limit_distance) {
+        this.change_lane_limit_distance = change_lane_limit_distance;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/CorneringLampSetting.java b/app/src/main/java/safeluck/drive/evaluation/bean/CorneringLampSetting.java
new file mode 100644
index 0000000..658dc89
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/CorneringLampSetting.java
@@ -0,0 +1,24 @@
+package safeluck.drive.evaluation.bean;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2020/10/26. 13:59:39
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class CorneringLampSetting {
+
+    /**
+     * turn_signal_min_advance : 3
+     */
+
+    private int turn_signal_min_advance;
+
+    public int getTurn_signal_min_advance() {
+        return turn_signal_min_advance;
+    }
+
+    public void setTurn_signal_min_advance(int turn_signal_min_advance) {
+        this.turn_signal_min_advance = turn_signal_min_advance;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/OverTakeMeetingSetting.java b/app/src/main/java/safeluck/drive/evaluation/bean/OverTakeMeetingSetting.java
new file mode 100644
index 0000000..84aab6c
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/OverTakeMeetingSetting.java
@@ -0,0 +1,24 @@
+package safeluck.drive.evaluation.bean;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2020/10/26. 13:59:39
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class OverTakeMeetingSetting {
+
+    /**
+     * overtake_limit_distance : 150
+     */
+
+    private int overtake_limit_distance;
+
+    public int getOvertake_limit_distance() {
+        return overtake_limit_distance;
+    }
+
+    public void setOvertake_limit_distance(int overtake_limit_distance) {
+        this.overtake_limit_distance = overtake_limit_distance;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/SideStopSetting.java b/app/src/main/java/safeluck/drive/evaluation/bean/SideStopSetting.java
new file mode 100644
index 0000000..ca53373
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/SideStopSetting.java
@@ -0,0 +1,74 @@
+package safeluck.drive.evaluation.bean;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2020/10/26. 13:59:39
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class SideStopSetting {
+
+    /**
+     * road_total_distance : 3000
+     * road_max_speed : 3
+     * stop_car_open_door_allow_time : 15
+     * stop_car_limit_distance : 150
+     * stop_car_edge_red_distance : 0.5
+     * stop_car_edge_yellow_distance : 0.3
+     */
+
+    private int road_total_distance;
+    private int road_max_speed;
+    private int stop_car_open_door_allow_time;
+    private int stop_car_limit_distance;
+    private double stop_car_edge_red_distance;
+    private double stop_car_edge_yellow_distance;
+
+    public int getRoad_total_distance() {
+        return road_total_distance;
+    }
+
+    public void setRoad_total_distance(int road_total_distance) {
+        this.road_total_distance = road_total_distance;
+    }
+
+    public int getRoad_max_speed() {
+        return road_max_speed;
+    }
+
+    public void setRoad_max_speed(int road_max_speed) {
+        this.road_max_speed = road_max_speed;
+    }
+
+    public int getStop_car_open_door_allow_time() {
+        return stop_car_open_door_allow_time;
+    }
+
+    public void setStop_car_open_door_allow_time(int stop_car_open_door_allow_time) {
+        this.stop_car_open_door_allow_time = stop_car_open_door_allow_time;
+    }
+
+    public int getStop_car_limit_distance() {
+        return stop_car_limit_distance;
+    }
+
+    public void setStop_car_limit_distance(int stop_car_limit_distance) {
+        this.stop_car_limit_distance = stop_car_limit_distance;
+    }
+
+    public double getStop_car_edge_red_distance() {
+        return stop_car_edge_red_distance;
+    }
+
+    public void setStop_car_edge_red_distance(double stop_car_edge_red_distance) {
+        this.stop_car_edge_red_distance = stop_car_edge_red_distance;
+    }
+
+    public double getStop_car_edge_yellow_distance() {
+        return stop_car_edge_yellow_distance;
+    }
+
+    public void setStop_car_edge_yellow_distance(double stop_car_edge_yellow_distance) {
+        this.stop_car_edge_yellow_distance = stop_car_edge_yellow_distance;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/StartCarSetting.java b/app/src/main/java/safeluck/drive/evaluation/bean/StartCarSetting.java
new file mode 100644
index 0000000..a051827
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/StartCarSetting.java
@@ -0,0 +1,45 @@
+package safeluck.drive.evaluation.bean;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2020/10/26. 13:59:39
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class StartCarSetting {
+
+
+    /**
+     * start_car_limit_distance : 10
+     * open_door_drive_allow_distance : 1.1
+     * start_car_max_rpm : 2500
+     */
+
+    private int start_car_limit_distance;
+    private double open_door_drive_allow_distance;
+    private int start_car_max_rpm;
+
+    public int getStart_car_limit_distance() {
+        return start_car_limit_distance;
+    }
+
+    public void setStart_car_limit_distance(int start_car_limit_distance) {
+        this.start_car_limit_distance = start_car_limit_distance;
+    }
+
+    public double getOpen_door_drive_allow_distance() {
+        return open_door_drive_allow_distance;
+    }
+
+    public void setOpen_door_drive_allow_distance(double open_door_drive_allow_distance) {
+        this.open_door_drive_allow_distance = open_door_drive_allow_distance;
+    }
+
+    public int getStart_car_max_rpm() {
+        return start_car_max_rpm;
+    }
+
+    public void setStart_car_max_rpm(int start_car_max_rpm) {
+        this.start_car_max_rpm = start_car_max_rpm;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/StationSetting.java b/app/src/main/java/safeluck/drive/evaluation/bean/StationSetting.java
new file mode 100644
index 0000000..ac9870d
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/StationSetting.java
@@ -0,0 +1,44 @@
+package safeluck.drive.evaluation.bean;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2020/10/26. 13:59:39
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class StationSetting {
+
+    /**
+     * cross_school_max_speed : 30
+     * crossing_break_valid_distance : 30
+     * crossing_stop_valid_distance : 3.5
+     */
+
+    private int cross_school_max_speed;
+    private int crossing_break_valid_distance;
+    private double crossing_stop_valid_distance;
+
+    public int getCross_school_max_speed() {
+        return cross_school_max_speed;
+    }
+
+    public void setCross_school_max_speed(int cross_school_max_speed) {
+        this.cross_school_max_speed = cross_school_max_speed;
+    }
+
+    public int getCrossing_break_valid_distance() {
+        return crossing_break_valid_distance;
+    }
+
+    public void setCrossing_break_valid_distance(int crossing_break_valid_distance) {
+        this.crossing_break_valid_distance = crossing_break_valid_distance;
+    }
+
+    public double getCrossing_stop_valid_distance() {
+        return crossing_stop_valid_distance;
+    }
+
+    public void setCrossing_stop_valid_distance(double crossing_stop_valid_distance) {
+        this.crossing_stop_valid_distance = crossing_stop_valid_distance;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/StraightLineSetting.java b/app/src/main/java/safeluck/drive/evaluation/bean/StraightLineSetting.java
new file mode 100644
index 0000000..fe07627
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/StraightLineSetting.java
@@ -0,0 +1,34 @@
+package safeluck.drive.evaluation.bean;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2020/10/26. 13:59:39
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class StraightLineSetting {
+
+    /**
+     * straight_limit_distance : 100
+     * straight_max_offset : 0.3
+     */
+
+    private int straight_limit_distance;
+    private double straight_max_offset;
+
+    public int getStraight_limit_distance() {
+        return straight_limit_distance;
+    }
+
+    public void setStraight_limit_distance(int straight_limit_distance) {
+        this.straight_limit_distance = straight_limit_distance;
+    }
+
+    public double getStraight_max_offset() {
+        return straight_max_offset;
+    }
+
+    public void setStraight_max_offset(double straight_max_offset) {
+        this.straight_max_offset = straight_max_offset;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/SubDecGearSetting.java b/app/src/main/java/safeluck/drive/evaluation/bean/SubDecGearSetting.java
new file mode 100644
index 0000000..49c9a06
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/SubDecGearSetting.java
@@ -0,0 +1,34 @@
+package safeluck.drive.evaluation.bean;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2020/10/26. 13:59:39
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class SubDecGearSetting {
+
+    /**
+     * shift_limit_distance : 120
+     * shift_hold_time : 3
+     */
+
+    private int shift_limit_distance;
+    private int shift_hold_time;
+
+    public int getShift_limit_distance() {
+        return shift_limit_distance;
+    }
+
+    public void setShift_limit_distance(int shift_limit_distance) {
+        this.shift_limit_distance = shift_limit_distance;
+    }
+
+    public int getShift_hold_time() {
+        return shift_hold_time;
+    }
+
+    public void setShift_hold_time(int shift_hold_time) {
+        this.shift_hold_time = shift_hold_time;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting2.java b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting2.java
index dbb2d91..e8d69a6 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting2.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting2.java
@@ -5,11 +5,18 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.Toast;
 
 import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProviders;
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.bean.CommonSetting;
+import safeluck.drive.evaluation.fragment.rulefragments.cview.TextEditText;
+import safeluck.drive.evaluation.util.Utils;
+import safeluck.drive.evaluation.viewmodels.CommonSettingViewModel;
 
 /**
  * DriveJudge
@@ -21,6 +28,15 @@
     private static final String ARG_NUMBER = "arg_number";
     private static final String TAG = FragmentSetting2.class.getSimpleName();
 
+    private CommonSetting mCommonSetting;
+    private CommonSettingViewModel commonSettingViewModel;
+
+    private TextEditText te_road_pause_time;
+    private TextEditText te_crash_dotted_line_time;
+    private TextEditText te_slide_yellow_distance;
+    private TextEditText te_slide_red_distance;
+    private TextEditText te_lane_min_time;
+    private TextEditText te_change_lane_dis;
 
     private int mNumber;
 
@@ -47,12 +63,80 @@
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.layout_common_judge_1, container, false);
         initView(view);
+        commonSettingViewModel = ViewModelProviders.of(this).get(CommonSettingViewModel.class);
+        commonSettingViewModel.getCommonSetting().observe(this, new Observer<CommonSetting>() {
+            @Override
+            public void onChanged(CommonSetting commonSetting) {
+                if (commonSetting != null){
+                    mCommonSetting = commonSetting;
+                    setDatas();
+                }
+            }
+        });
         return view;
     }
 
+    private void setDatas() {
+        if (mCommonSetting != null){
+            te_change_lane_dis.setInput(String.valueOf(mCommonSetting.getChange_lane_limit_distance()));
+            te_crash_dotted_line_time.setInput(String.valueOf(mCommonSetting.getCrash_dotted_line_cumulative_time()));
+            te_lane_min_time.setInput(String.valueOf(mCommonSetting.getContinuous_change_lane_min_time()));
+            te_road_pause_time.setInput(String.valueOf(mCommonSetting.getRoad_pause_criteria()));
+            te_slide_red_distance.setInput(String.valueOf(mCommonSetting.getRoad_slide_red_distance()));
+            te_slide_yellow_distance.setInput(String.valueOf(mCommonSetting.getRoad_slide_yellow_distance()));
+        }
+    }
+
     private void initView(View view) {
+    te_change_lane_dis = view.findViewById(R.id.road_change_lane_dist);
+    te_crash_dotted_line_time = view.findViewById(R.id.road_crash_dotted_line_time);
+    te_lane_min_time = view.findViewById(R.id.road_lane_min_time);
+    te_road_pause_time = view.findViewById(R.id.road_pause_time);
+    te_slide_red_distance = view.findViewById(R.id.road_slide_red_distance);
+    te_slide_yellow_distance = view.findViewById(R.id.road_slide_yellow_distance);
+
+    view.findViewById(R.id.btn_setting_save).setOnClickListener(new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            String change_lane_dis_str = te_change_lane_dis.getInput();
+            String crash_dotted_line_time_str = te_crash_dotted_line_time.getInput();
+            String lane_min_time_str = te_lane_min_time.getInput();
+            String road_pause_time_str = te_road_pause_time.getInput();
+            String slide_red_distance_str = te_slide_red_distance.getInput();
+            String slide_yellow_distance_str = te_slide_yellow_distance.getInput();
+
+            if (mCommonSetting != null){
+
+                if (Utils.isDigital(change_lane_dis_str)){
+
+                     mCommonSetting.setChange_lane_limit_distance(Integer.parseInt(change_lane_dis_str));
+                }
+                if (Utils.isDigital(crash_dotted_line_time_str)){
+                    mCommonSetting.setCrash_dotted_line_cumulative_time(Integer.parseInt(crash_dotted_line_time_str));
+                }
+                if (Utils.isDigital(lane_min_time_str)){
+                    mCommonSetting.setContinuous_change_lane_min_time(Integer.parseInt(lane_min_time_str));
+                }
+                if (Utils.isDigital(road_pause_time_str)){
+
+                    mCommonSetting.setRoad_pause_criteria(Integer.parseInt(road_pause_time_str));
+                }
+                if (Utils.isNumber(slide_red_distance_str)){
+                    mCommonSetting.setRoad_slide_red_distance(Double.parseDouble(slide_red_distance_str));
+                }
+                if (Utils.isNumber(slide_yellow_distance_str)){
+                    mCommonSetting.setRoad_slide_yellow_distance(Double.parseDouble(slide_yellow_distance_str));
+                }
 
 
+
+
+
+                commonSettingViewModel.saveCommonSetting(mCommonSetting);
+                Toast.makeText(_mActivity, "閫氱敤璁剧疆鎴愬姛", Toast.LENGTH_SHORT).show();
+            }
+        }
+    });
     }
 
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting3.java b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting3.java
index 506fb8e..16f00aa 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting3.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting3.java
@@ -7,9 +7,16 @@
 import android.view.ViewGroup;
 
 import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProviders;
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.bean.CommonSetting;
+import safeluck.drive.evaluation.bean.StartCarSetting;
+import safeluck.drive.evaluation.fragment.rulefragments.cview.TextEditText;
+import safeluck.drive.evaluation.viewmodels.CommonSettingViewModel;
+import safeluck.drive.evaluation.viewmodels.StartCarSettingViewModel;
 
 /**
  * DriveJudge
@@ -23,6 +30,13 @@
 
 
     private int mNumber;
+
+    private StartCarSetting mStartCarSetting;
+    private StartCarSettingViewModel startCarSettingViewModel;
+
+    private TextEditText te_start_car_max_rpm;
+    private TextEditText te_start_car_limit_distance;
+    private TextEditText te_open_door_drive_allow_distance;
 
     public static FragmentSetting3 newInstance(String number) {
         FragmentSetting3 fragment = new FragmentSetting3();
@@ -47,12 +61,31 @@
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.layout_fragment_start, container, false);
         initView(view);
+        startCarSettingViewModel = ViewModelProviders.of(this).get(StartCarSettingViewModel.class);
+        startCarSettingViewModel.getStartCarSetting().observe(this, new Observer<StartCarSetting>() {
+            @Override
+            public void onChanged(StartCarSetting commonSetting) {
+                if (commonSetting != null){
+                    mStartCarSetting = commonSetting;
+                    setDatas();
+                }
+            }
+        });
         return view;
+    }
+
+    private void setDatas() {
+        te_open_door_drive_allow_distance.setInput(String.valueOf(mStartCarSetting.getOpen_door_drive_allow_distance()));
+        te_start_car_limit_distance.setInput(String.valueOf(mStartCarSetting.getStart_car_limit_distance()));
+        te_start_car_max_rpm.setInput(String.valueOf(mStartCarSetting.getStart_car_max_rpm()));
     }
 
     private void initView(View view) {
 
-
+        te_open_door_drive_allow_distance = view.findViewById(R.id.road_start_open_door_dist);
+        te_start_car_limit_distance = view.findViewById(R.id.road_start_dist);
+        te_start_car_max_rpm = view.findViewById(R.id.road_start_max_rpm);
     }
 
+
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting4.java b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting4.java
index 601b970..3362c6e 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting4.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting4.java
@@ -7,12 +7,21 @@
 import android.view.ViewGroup;
 
 import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProviders;
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.bean.CommonSetting;
+import safeluck.drive.evaluation.bean.StraightLineSetting;
+import safeluck.drive.evaluation.fragment.rulefragments.cview.TextEditText;
+import safeluck.drive.evaluation.viewmodels.CommonSettingViewModel;
+import safeluck.drive.evaluation.viewmodels.StraightLineSettingViewModel;
 
 /**
  * DriveJudge
+ *
+ * 鐩寸嚎琛岄┒璁剧疆
  * Created by lzw on 2020/9/14. 10:16:39
  * 閭锛�632393724@qq.com
  * All Rights Saved! Chongqing AnYun Tech co. LTD
@@ -23,6 +32,12 @@
 
 
     private int mNumber;
+
+    private TextEditText te_straight_limit_distance;
+    private TextEditText te_straight_max_offset;
+
+    private StraightLineSetting mStrarightLineSetting;
+    private StraightLineSettingViewModel straightLineSettingViewModel;
 
     public static FragmentSetting4 newInstance(String number) {
         FragmentSetting4 fragment = new FragmentSetting4();
@@ -47,12 +62,27 @@
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.layout_fragment_straight_line, container, false);
         initView(view);
+        straightLineSettingViewModel = ViewModelProviders.of(this).get(StraightLineSettingViewModel.class);
+        straightLineSettingViewModel.getStraightLineSetting().observe(this, new Observer<StraightLineSetting>() {
+            @Override
+            public void onChanged(StraightLineSetting commonSetting) {
+                if (commonSetting != null){
+                    mStrarightLineSetting = commonSetting;
+                    setDatas();
+                }
+            }
+        });
         return view;
     }
 
     private void initView(View view) {
-
+    te_straight_limit_distance = view.findViewById(R.id.straight_limit_distance);
+        te_straight_max_offset = view.findViewById(R.id.straight_max_offset);
 
     }
 
+    private void setDatas() {
+        te_straight_limit_distance.setInput(String.valueOf(mStrarightLineSetting.getStraight_limit_distance()));
+        te_straight_max_offset.setInput(String.valueOf(mStrarightLineSetting.getStraight_max_offset()));
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting5.java b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting5.java
index 095617c..138cf52 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting5.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting5.java
@@ -7,12 +7,21 @@
 import android.view.ViewGroup;
 
 import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProviders;
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.bean.CommonSetting;
+import safeluck.drive.evaluation.bean.StationSetting;
+import safeluck.drive.evaluation.fragment.rulefragments.cview.TextEditText;
+import safeluck.drive.evaluation.viewmodels.CommonSettingViewModel;
+import safeluck.drive.evaluation.viewmodels.StationSettingViewModel;
 
 /**
  * DriveJudge
+ *
+ * 閫氳繃绔欑偣璁剧疆
  * Created by lzw on 2020/9/14. 10:16:39
  * 閭锛�632393724@qq.com
  * All Rights Saved! Chongqing AnYun Tech co. LTD
@@ -21,6 +30,12 @@
     private static final String ARG_NUMBER = "arg_number";
     private static final String TAG = FragmentSetting5.class.getSimpleName();
 
+    private StationSetting mStationSetting;
+    private StationSettingViewModel mStationSettingViewModel;
+
+    private TextEditText te_cross_school_max_speed;
+    private TextEditText te_crossing_break_valid_distance;
+    private TextEditText te_crossing_stop_valid_distance;
 
     private int mNumber;
 
@@ -47,12 +62,29 @@
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.layout_fragment_stationsettin, container, false);
         initView(view);
+        mStationSettingViewModel = ViewModelProviders.of(this).get(StationSettingViewModel.class);
+        mStationSettingViewModel.getStationSetting().observe(this, new Observer<StationSetting>() {
+            @Override
+            public void onChanged(StationSetting commonSetting) {
+                if (commonSetting != null){
+                    mStationSetting = commonSetting;
+                    setDatas();
+                }
+            }
+        });
         return view;
     }
 
     private void initView(View view) {
-
+        te_cross_school_max_speed = view.findViewById(R.id.cross_school_max_speed);
+        te_crossing_break_valid_distance = view.findViewById(R.id.crossing_break_valid_distance);
+        te_crossing_stop_valid_distance = view.findViewById(R.id.crossing_stop_valid_distance);
 
     }
 
+    private void setDatas() {
+        te_cross_school_max_speed.setInput(String.valueOf(mStationSetting.getCross_school_max_speed()));
+        te_crossing_break_valid_distance.setInput(String.valueOf(mStationSetting.getCrossing_break_valid_distance()));
+        te_crossing_stop_valid_distance.setInput(String.valueOf(mStationSetting.getCrossing_stop_valid_distance()));
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting6.java b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting6.java
index b08e87b..2b539df 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting6.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting6.java
@@ -7,9 +7,16 @@
 import android.view.ViewGroup;
 
 import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProviders;
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.bean.CommonSetting;
+import safeluck.drive.evaluation.bean.CorneringLampSetting;
+import safeluck.drive.evaluation.fragment.rulefragments.cview.TextEditText;
+import safeluck.drive.evaluation.viewmodels.CommonSettingViewModel;
+import safeluck.drive.evaluation.viewmodels.CorneringLampSettingViewModel;
 
 /**
  * DriveJudge
@@ -23,6 +30,10 @@
 
 
     private int mNumber;
+
+    private TextEditText te_turn_signal_min_advance;
+    private CorneringLampSetting mCornerLampSetting;
+    private CorneringLampSettingViewModel corneringLampSettingViewModel;
 
     public static FragmentSetting6 newInstance(String number) {
         FragmentSetting6 fragment = new FragmentSetting6();
@@ -47,12 +58,25 @@
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.layout_fragment_setlights, container, false);
         initView(view);
+        corneringLampSettingViewModel = ViewModelProviders.of(this).get(CorneringLampSettingViewModel.class);
+        corneringLampSettingViewModel.getCorneringLampSetting().observe(this, new Observer<CorneringLampSetting>() {
+            @Override
+            public void onChanged(CorneringLampSetting commonSetting) {
+                if (commonSetting != null){
+                    mCornerLampSetting = commonSetting;
+                    setDatas();
+                }
+            }
+        });
         return view;
     }
 
     private void initView(View view) {
-
+        te_turn_signal_min_advance = view.findViewById(R.id.turn_signal_min_advance);
 
     }
 
+    private void setDatas() {
+        te_turn_signal_min_advance.setInput(String.valueOf(mCornerLampSetting.getTurn_signal_min_advance()));
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting7.java b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting7.java
index c48f7e2..e93b134 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting7.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting7.java
@@ -7,9 +7,16 @@
 import android.view.ViewGroup;
 
 import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProviders;
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.bean.CommonSetting;
+import safeluck.drive.evaluation.bean.OverTakeMeetingSetting;
+import safeluck.drive.evaluation.fragment.rulefragments.cview.TextEditText;
+import safeluck.drive.evaluation.viewmodels.CommonSettingViewModel;
+import safeluck.drive.evaluation.viewmodels.OverTakeAndMeetingSettingViewModel;
 
 /**
  * DriveJudge
@@ -21,8 +28,12 @@
     private static final String ARG_NUMBER = "arg_number";
     private static final String TAG = FragmentSetting7.class.getSimpleName();
 
+    private OverTakeAndMeetingSettingViewModel overTakeAndMeetingSettingViewModel;
+    private OverTakeMeetingSetting overTakeMeetingSetting;
 
     private int mNumber;
+
+    private TextEditText te_overtake_limit_distance;
 
     public static FragmentSetting7 newInstance(String number) {
         FragmentSetting7 fragment = new FragmentSetting7();
@@ -47,12 +58,27 @@
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.layout_fragment_over_take, container, false);
         initView(view);
+        overTakeAndMeetingSettingViewModel = ViewModelProviders.of(this).get(OverTakeAndMeetingSettingViewModel.class);
+        overTakeAndMeetingSettingViewModel.getOverTakeMeetingSetting().observe(this, new Observer<OverTakeMeetingSetting>() {
+            @Override
+            public void onChanged(OverTakeMeetingSetting commonSetting) {
+                if (commonSetting != null){
+                    overTakeMeetingSetting = commonSetting;
+                    setDatas();
+                }
+            }
+        });
         return view;
     }
 
     private void initView(View view) {
-
+        te_overtake_limit_distance = view.findViewById(R.id.overtake_limit_distance);
 
     }
 
+    private void setDatas() {
+        if (overTakeMeetingSetting != null){
+            te_overtake_limit_distance.setInput(String.valueOf(overTakeMeetingSetting.getOvertake_limit_distance()));
+        }
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting8.java b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting8.java
index 2577774..07bf8ca 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting8.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting8.java
@@ -7,9 +7,16 @@
 import android.view.ViewGroup;
 
 import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProviders;
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.bean.CommonSetting;
+import safeluck.drive.evaluation.bean.SubDecGearSetting;
+import safeluck.drive.evaluation.fragment.rulefragments.cview.TextEditText;
+import safeluck.drive.evaluation.viewmodels.CommonSettingViewModel;
+import safeluck.drive.evaluation.viewmodels.SubDecGearSettingViewModel;
 
 /**
  * DriveJudge
@@ -23,6 +30,13 @@
 
 
     private int mNumber;
+
+
+    private TextEditText te_shift_limit_distance;
+    private TextEditText te_road_shift_hold_time;
+
+    private SubDecGearSetting mSubGearSetting;
+    private SubDecGearSettingViewModel subDecGearSettingViewModel;
 
     public static FragmentSetting8 newInstance(String number) {
         FragmentSetting8 fragment = new FragmentSetting8();
@@ -47,12 +61,29 @@
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.fragment_add_sub_gear_setting_1, container, false);
         initView(view);
+        subDecGearSettingViewModel = ViewModelProviders.of(this).get(SubDecGearSettingViewModel.class);
+        subDecGearSettingViewModel.getSubDecGearSetting().observe(this, new Observer<SubDecGearSetting>() {
+            @Override
+            public void onChanged(SubDecGearSetting commonSetting) {
+                if (commonSetting != null){
+                    mSubGearSetting = commonSetting;
+                    setDatas();
+                }
+            }
+        });
         return view;
     }
 
     private void initView(View view) {
 
-
+    te_shift_limit_distance = view.findViewById(R.id.shift_limit_distance);
+    te_road_shift_hold_time =view.findViewById(R.id.road_shift_hold_time);
     }
 
+    private void setDatas() {
+        if (mSubGearSetting != null){
+            te_shift_limit_distance.setInput(String.valueOf(mSubGearSetting.getShift_limit_distance()));
+            te_road_shift_hold_time.setInput(String.valueOf(mSubGearSetting.getShift_hold_time()));
+        }
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting9.java b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting9.java
index 05bbac9..e62cfa4 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting9.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/rulefragments/FragmentSetting9.java
@@ -7,9 +7,16 @@
 import android.view.ViewGroup;
 
 import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProviders;
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.bean.CommonSetting;
+import safeluck.drive.evaluation.bean.SideStopSetting;
+import safeluck.drive.evaluation.fragment.rulefragments.cview.TextEditText;
+import safeluck.drive.evaluation.viewmodels.CommonSettingViewModel;
+import safeluck.drive.evaluation.viewmodels.SideStopSettingViewModel;
 
 /**
  * DriveJudge
@@ -21,8 +28,16 @@
     private static final String ARG_NUMBER = "arg_number";
     private static final String TAG = FragmentSetting9.class.getSimpleName();
 
-
+    private SideStopSetting mSideStopSetting;
+    private SideStopSettingViewModel mSideStopSettingViewModel;
     private int mNumber;
+
+    private TextEditText te_road_total_distance;
+    private TextEditText te_road_max_speed;
+    private TextEditText te_stop_car_open_door_allow_time;
+    private TextEditText te_stop_car_limit_distance;
+    private TextEditText te_stop_car_edge_red_distance;
+    private TextEditText te_stop_car_edge_yellow_distance;
 
     public static FragmentSetting9 newInstance(String number) {
         FragmentSetting9 fragment = new FragmentSetting9();
@@ -47,12 +62,37 @@
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.layout_fragment_parkover_1, container, false);
         initView(view);
+        mSideStopSettingViewModel = ViewModelProviders.of(this).get(SideStopSettingViewModel.class);
+        mSideStopSettingViewModel.getSideStopSetting().observe(this, new Observer<SideStopSetting>() {
+            @Override
+            public void onChanged(SideStopSetting commonSetting) {
+                if (commonSetting != null){
+                    mSideStopSetting = commonSetting;
+                    setDatas();
+                }
+            }
+        });
         return view;
     }
 
     private void initView(View view) {
-
+         te_road_total_distance = view.findViewById(R.id.road_total_distance);
+        te_road_max_speed = view.findViewById(R.id.road_max_speed);
+        te_stop_car_open_door_allow_time = view.findViewById(R.id.stop_car_open_door_allow_time);
+        te_stop_car_limit_distance = view.findViewById(R.id.stop_car_limit_distance);
+        te_stop_car_edge_red_distance = view.findViewById(R.id.stop_car_edge_red_distance);
+        te_stop_car_edge_yellow_distance = view.findViewById(R.id.stop_car_edge_yellow_distance);
 
     }
 
+    private void setDatas() {
+        if (mSideStopSetting != null){
+            te_road_total_distance.setInput(String.valueOf(mSideStopSetting.getRoad_total_distance()));
+            te_stop_car_open_door_allow_time.setInput(String.valueOf(mSideStopSetting.getStop_car_open_door_allow_time()));
+            te_stop_car_limit_distance.setInput(String.valueOf(mSideStopSetting.getStop_car_limit_distance()));
+            te_stop_car_edge_red_distance.setInput(String.valueOf(mSideStopSetting.getStop_car_edge_red_distance()));
+            te_stop_car_edge_yellow_distance.setInput(String.valueOf(mSideStopSetting.getStop_car_edge_yellow_distance()));
+            te_road_max_speed.setInput(String.valueOf(mSideStopSetting.getRoad_max_speed()));
+        }
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/viewmodels/CommonSettingViewModel.kt b/app/src/main/java/safeluck/drive/evaluation/viewmodels/CommonSettingViewModel.kt
new file mode 100644
index 0000000..baa9db3
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/viewmodels/CommonSettingViewModel.kt
@@ -0,0 +1,46 @@
+package safeluck.drive.evaluation.viewmodels
+
+import android.app.Application
+import androidx.lifecycle.*
+import com.google.gson.Gson
+
+import safeluck.drive.evaluation.app
+import safeluck.drive.evaluation.bean.AreaSetting
+import safeluck.drive.evaluation.bean.CommonSetting
+import safeluck.drive.evaluation.util.CThreadPoolExecutor
+import safeluck.drive.evaluation.util.FileUtil
+
+/**DriveJudge
+ *
+ * 鍦鸿�冭缃�
+ * Created by lzw on 2020/10/9. 14:22:48
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class CommonSettingViewModel() : ViewModel() {
+    var gson = Gson()
+    private val gearRelateSet:MutableLiveData<CommonSetting> by lazy {
+        MutableLiveData<CommonSetting>().also {
+            loadData()
+        }
+    }
+
+    fun saveCommonSetting(gearRelateSet: CommonSetting){
+        CThreadPoolExecutor.runInBackground {
+            FileUtil.writeTxtFileToSD(app.getAppContext(),"common_setting.json",gson.toJson(gearRelateSet),"")
+        }
+    }
+
+    private fun loadData(){
+        CThreadPoolExecutor.runInBackground {
+           var buffer =FileUtil.readTxtFileFromSD(app.getAppContext(),"common_setting.json",false)
+            var g = gson.fromJson(buffer.toString(),CommonSetting::class.java)
+            gearRelateSet.postValue(g)
+        }
+    }
+
+    fun getCommonSetting():LiveData<CommonSetting> {
+        return gearRelateSet
+    }
+}
+
diff --git a/app/src/main/java/safeluck/drive/evaluation/viewmodels/CorneringLampSettingViewModel.kt b/app/src/main/java/safeluck/drive/evaluation/viewmodels/CorneringLampSettingViewModel.kt
new file mode 100644
index 0000000..e4904d5
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/viewmodels/CorneringLampSettingViewModel.kt
@@ -0,0 +1,45 @@
+package safeluck.drive.evaluation.viewmodels
+
+import android.app.Application
+import androidx.lifecycle.*
+import com.google.gson.Gson
+
+import safeluck.drive.evaluation.app
+import safeluck.drive.evaluation.bean.*
+import safeluck.drive.evaluation.util.CThreadPoolExecutor
+import safeluck.drive.evaluation.util.FileUtil
+
+/**DriveJudge
+ *
+ * 杞悜鐏缃�
+ * Created by lzw on 2020/10/9. 14:22:48
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class CorneringLampSettingViewModel() : ViewModel() {
+    var gson = Gson()
+    private val gearRelateSet:MutableLiveData<CorneringLampSetting> by lazy {
+        MutableLiveData<CorneringLampSetting>().also {
+            loadData()
+        }
+    }
+
+    fun saveCommonSetting(gearRelateSet: CorneringLampSetting){
+        CThreadPoolExecutor.runInBackground {
+            FileUtil.writeTxtFileToSD(app.getAppContext(),"cornerlamp_setting.json",gson.toJson(gearRelateSet),"")
+        }
+    }
+
+    private fun loadData(){
+        CThreadPoolExecutor.runInBackground {
+           var buffer =FileUtil.readTxtFileFromSD(app.getAppContext(),"cornerlamp_setting.json",false)
+            var g = gson.fromJson(buffer.toString(),CorneringLampSetting::class.java)
+            gearRelateSet.postValue(g)
+        }
+    }
+
+    fun getCorneringLampSetting():LiveData<CorneringLampSetting> {
+        return gearRelateSet
+    }
+}
+
diff --git a/app/src/main/java/safeluck/drive/evaluation/viewmodels/OverTakeAndMeetingSettingViewModel.kt b/app/src/main/java/safeluck/drive/evaluation/viewmodels/OverTakeAndMeetingSettingViewModel.kt
new file mode 100644
index 0000000..1a748fd
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/viewmodels/OverTakeAndMeetingSettingViewModel.kt
@@ -0,0 +1,48 @@
+package safeluck.drive.evaluation.viewmodels
+
+import android.app.Application
+import androidx.lifecycle.*
+import com.google.gson.Gson
+
+import safeluck.drive.evaluation.app
+import safeluck.drive.evaluation.bean.AreaSetting
+import safeluck.drive.evaluation.bean.CommonSetting
+import safeluck.drive.evaluation.bean.OverTakeMeetingSetting
+import safeluck.drive.evaluation.bean.StartCarSetting
+import safeluck.drive.evaluation.util.CThreadPoolExecutor
+import safeluck.drive.evaluation.util.FileUtil
+
+/**DriveJudge
+ *
+ * 鍦鸿�冭缃�
+ * Created by lzw on 2020/10/9. 14:22:48
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class OverTakeAndMeetingSettingViewModel() : ViewModel() {
+    var gson = Gson()
+    private val gearRelateSet:MutableLiveData<OverTakeMeetingSetting> by lazy {
+        MutableLiveData<OverTakeMeetingSetting>().also {
+            loadData()
+        }
+    }
+
+    fun saveCommonSetting(gearRelateSet: OverTakeMeetingSetting){
+        CThreadPoolExecutor.runInBackground {
+            FileUtil.writeTxtFileToSD(app.getAppContext(),"overtake_setting.json",gson.toJson(gearRelateSet),"")
+        }
+    }
+
+    private fun loadData(){
+        CThreadPoolExecutor.runInBackground {
+           var buffer =FileUtil.readTxtFileFromSD(app.getAppContext(),"overtake_setting.json",false)
+            var g = gson.fromJson(buffer.toString(),OverTakeMeetingSetting::class.java)
+            gearRelateSet.postValue(g)
+        }
+    }
+
+    fun getOverTakeMeetingSetting():LiveData<OverTakeMeetingSetting> {
+        return gearRelateSet
+    }
+}
+
diff --git a/app/src/main/java/safeluck/drive/evaluation/viewmodels/SideStopSettingViewModel.kt b/app/src/main/java/safeluck/drive/evaluation/viewmodels/SideStopSettingViewModel.kt
new file mode 100644
index 0000000..cc38385
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/viewmodels/SideStopSettingViewModel.kt
@@ -0,0 +1,47 @@
+package safeluck.drive.evaluation.viewmodels
+
+import android.app.Application
+import androidx.lifecycle.*
+import com.google.gson.Gson
+
+import safeluck.drive.evaluation.app
+import safeluck.drive.evaluation.bean.AreaSetting
+import safeluck.drive.evaluation.bean.CommonSetting
+import safeluck.drive.evaluation.bean.SideStopSetting
+import safeluck.drive.evaluation.util.CThreadPoolExecutor
+import safeluck.drive.evaluation.util.FileUtil
+
+/**DriveJudge
+ *
+ * 鍦鸿�冭缃�
+ * Created by lzw on 2020/10/9. 14:22:48
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class SideStopSettingViewModel() : ViewModel() {
+    var gson = Gson()
+    private val gearRelateSet:MutableLiveData<SideStopSetting> by lazy {
+        MutableLiveData<SideStopSetting>().also {
+            loadData()
+        }
+    }
+
+    fun saveSideStopSetting(gearRelateSet: SideStopSetting){
+        CThreadPoolExecutor.runInBackground {
+            FileUtil.writeTxtFileToSD(app.getAppContext(),"sidestop_setting.json",gson.toJson(gearRelateSet),"")
+        }
+    }
+
+    private fun loadData(){
+        CThreadPoolExecutor.runInBackground {
+           var buffer =FileUtil.readTxtFileFromSD(app.getAppContext(),"sidestop_setting.json",false)
+            var g = gson.fromJson(buffer.toString(),SideStopSetting::class.java)
+            gearRelateSet.postValue(g)
+        }
+    }
+
+    fun getSideStopSetting():LiveData<SideStopSetting> {
+        return gearRelateSet
+    }
+}
+
diff --git a/app/src/main/java/safeluck/drive/evaluation/viewmodels/StartCarSettingViewModel.kt b/app/src/main/java/safeluck/drive/evaluation/viewmodels/StartCarSettingViewModel.kt
new file mode 100644
index 0000000..4eac389
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/viewmodels/StartCarSettingViewModel.kt
@@ -0,0 +1,47 @@
+package safeluck.drive.evaluation.viewmodels
+
+import android.app.Application
+import androidx.lifecycle.*
+import com.google.gson.Gson
+
+import safeluck.drive.evaluation.app
+import safeluck.drive.evaluation.bean.AreaSetting
+import safeluck.drive.evaluation.bean.CommonSetting
+import safeluck.drive.evaluation.bean.StartCarSetting
+import safeluck.drive.evaluation.util.CThreadPoolExecutor
+import safeluck.drive.evaluation.util.FileUtil
+
+/**DriveJudge
+ *
+ * 鍦鸿�冭缃�
+ * Created by lzw on 2020/10/9. 14:22:48
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class StartCarSettingViewModel() : ViewModel() {
+    var gson = Gson()
+    private val gearRelateSet:MutableLiveData<StartCarSetting> by lazy {
+        MutableLiveData<StartCarSetting>().also {
+            loadData()
+        }
+    }
+
+    fun saveCommonSetting(gearRelateSet: StartCarSetting){
+        CThreadPoolExecutor.runInBackground {
+            FileUtil.writeTxtFileToSD(app.getAppContext(),"startcar_setting.json",gson.toJson(gearRelateSet),"")
+        }
+    }
+
+    private fun loadData(){
+        CThreadPoolExecutor.runInBackground {
+           var buffer =FileUtil.readTxtFileFromSD(app.getAppContext(),"startcar_setting.json",false)
+            var g = gson.fromJson(buffer.toString(),StartCarSetting::class.java)
+            gearRelateSet.postValue(g)
+        }
+    }
+
+    fun getStartCarSetting():LiveData<StartCarSetting> {
+        return gearRelateSet
+    }
+}
+
diff --git a/app/src/main/java/safeluck/drive/evaluation/viewmodels/StationSettingViewModel.kt b/app/src/main/java/safeluck/drive/evaluation/viewmodels/StationSettingViewModel.kt
new file mode 100644
index 0000000..50ddc0f
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/viewmodels/StationSettingViewModel.kt
@@ -0,0 +1,45 @@
+package safeluck.drive.evaluation.viewmodels
+
+import android.app.Application
+import androidx.lifecycle.*
+import com.google.gson.Gson
+
+import safeluck.drive.evaluation.app
+import safeluck.drive.evaluation.bean.*
+import safeluck.drive.evaluation.util.CThreadPoolExecutor
+import safeluck.drive.evaluation.util.FileUtil
+
+/**DriveJudge
+ *
+ * 鍦鸿�冭缃�
+ * Created by lzw on 2020/10/9. 14:22:48
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class StationSettingViewModel() : ViewModel() {
+    var gson = Gson()
+    private val gearRelateSet:MutableLiveData<StationSetting> by lazy {
+        MutableLiveData<StationSetting>().also {
+            loadData()
+        }
+    }
+
+    fun saveCommonSetting(gearRelateSet: StationSetting){
+        CThreadPoolExecutor.runInBackground {
+            FileUtil.writeTxtFileToSD(app.getAppContext(),"station_setting.json",gson.toJson(gearRelateSet),"")
+        }
+    }
+
+    private fun loadData(){
+        CThreadPoolExecutor.runInBackground {
+           var buffer =FileUtil.readTxtFileFromSD(app.getAppContext(),"station_setting.json",false)
+            var g = gson.fromJson(buffer.toString(),StationSetting::class.java)
+            gearRelateSet.postValue(g)
+        }
+    }
+
+    fun getStationSetting():LiveData<StationSetting> {
+        return gearRelateSet
+    }
+}
+
diff --git a/app/src/main/java/safeluck/drive/evaluation/viewmodels/StraightLineSettingViewModel.kt b/app/src/main/java/safeluck/drive/evaluation/viewmodels/StraightLineSettingViewModel.kt
new file mode 100644
index 0000000..5155164
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/viewmodels/StraightLineSettingViewModel.kt
@@ -0,0 +1,48 @@
+package safeluck.drive.evaluation.viewmodels
+
+import android.app.Application
+import androidx.lifecycle.*
+import com.google.gson.Gson
+
+import safeluck.drive.evaluation.app
+import safeluck.drive.evaluation.bean.AreaSetting
+import safeluck.drive.evaluation.bean.CommonSetting
+import safeluck.drive.evaluation.bean.StartCarSetting
+import safeluck.drive.evaluation.bean.StraightLineSetting
+import safeluck.drive.evaluation.util.CThreadPoolExecutor
+import safeluck.drive.evaluation.util.FileUtil
+
+/**DriveJudge
+ *
+ * 鍦鸿�冭缃�
+ * Created by lzw on 2020/10/9. 14:22:48
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class StraightLineSettingViewModel() : ViewModel() {
+    var gson = Gson()
+    private val gearRelateSet:MutableLiveData<StraightLineSetting> by lazy {
+        MutableLiveData<StraightLineSetting>().also {
+            loadData()
+        }
+    }
+
+    fun saveCommonSetting(gearRelateSet: StraightLineSetting){
+        CThreadPoolExecutor.runInBackground {
+            FileUtil.writeTxtFileToSD(app.getAppContext(),"straightline_setting.json",gson.toJson(gearRelateSet),"")
+        }
+    }
+
+    private fun loadData(){
+        CThreadPoolExecutor.runInBackground {
+           var buffer =FileUtil.readTxtFileFromSD(app.getAppContext(),"straightline_setting.json",false)
+            var g = gson.fromJson(buffer.toString(),StraightLineSetting::class.java)
+            gearRelateSet.postValue(g)
+        }
+    }
+
+    fun getStraightLineSetting():LiveData<StraightLineSetting> {
+        return gearRelateSet
+    }
+}
+
diff --git a/app/src/main/java/safeluck/drive/evaluation/viewmodels/SubDecGearSettingViewModel.kt b/app/src/main/java/safeluck/drive/evaluation/viewmodels/SubDecGearSettingViewModel.kt
new file mode 100644
index 0000000..f8df4b3
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/viewmodels/SubDecGearSettingViewModel.kt
@@ -0,0 +1,45 @@
+package safeluck.drive.evaluation.viewmodels
+
+import android.app.Application
+import androidx.lifecycle.*
+import com.google.gson.Gson
+
+import safeluck.drive.evaluation.app
+import safeluck.drive.evaluation.bean.*
+import safeluck.drive.evaluation.util.CThreadPoolExecutor
+import safeluck.drive.evaluation.util.FileUtil
+
+/**DriveJudge
+ *
+ * 鍦鸿�冭缃�
+ * Created by lzw on 2020/10/9. 14:22:48
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class SubDecGearSettingViewModel() : ViewModel() {
+    var gson = Gson()
+    private val gearRelateSet:MutableLiveData<SubDecGearSetting> by lazy {
+        MutableLiveData<SubDecGearSetting>().also {
+            loadData()
+        }
+    }
+
+    fun saveSubDecGearSetting(gearRelateSet: SubDecGearSetting){
+        CThreadPoolExecutor.runInBackground {
+            FileUtil.writeTxtFileToSD(app.getAppContext(),"subdecGear_setting.json",gson.toJson(gearRelateSet),"")
+        }
+    }
+
+    private fun loadData(){
+        CThreadPoolExecutor.runInBackground {
+           var buffer =FileUtil.readTxtFileFromSD(app.getAppContext(),"subdecGear_setting.json",false)
+            var g = gson.fromJson(buffer.toString(),SubDecGearSetting::class.java)
+            gearRelateSet.postValue(g)
+        }
+    }
+
+    fun getSubDecGearSetting():LiveData<SubDecGearSetting> {
+        return gearRelateSet
+    }
+}
+
diff --git a/app/src/main/res/layout/layout_fragment_parkover_1.xml b/app/src/main/res/layout/layout_fragment_parkover_1.xml
index 3db4c1b..2431b6c 100644
--- a/app/src/main/res/layout/layout_fragment_parkover_1.xml
+++ b/app/src/main/res/layout/layout_fragment_parkover_1.xml
@@ -12,7 +12,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         app:txt_des_tvedit = "鍏ㄧ▼鑰冭瘯閲岀▼/绫�"
-        android:id="@+id/road_max_dist"
+        android:id="@+id/road_total_distance"
         app:et_input="3000"
         />
     <safeluck.drive.evaluation.fragment.rulefragments.cview.TextEditText
@@ -26,26 +26,26 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         app:txt_des_tvedit = "涓嬭溅鏃惰溅闂ㄥ厑璁稿紑鍚殑鏃堕棿/绉�"
-        android:id="@+id/road_stop_open_door_time"
+        android:id="@+id/stop_car_open_door_allow_time"
         app:et_input="17"
         />
     <safeluck.drive.evaluation.fragment.rulefragments.cview.TextEditText
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         app:txt_des_tvedit = "闈犺竟鍋滆溅琛岄┒璺濈闄愬埗/绫�"
-        android:id="@+id/road_stop_dist"
+        android:id="@+id/stop_car_limit_distance"
         app:et_input="150"
         />    <safeluck.drive.evaluation.fragment.rulefragments.cview.TextEditText
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         app:txt_des_tvedit = "闈犺竟鍋滆溅杈规部鍒扮嚎璺濈(绾㈢墝)/绫�"
-    android:id="@+id/road_stop_edge_red_dist"
+    android:id="@+id/stop_car_edge_red_distance"
         app:et_input="3000"
         /><safeluck.drive.evaluation.fragment.rulefragments.cview.TextEditText
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         app:txt_des_tvedit = "闈犺竟鍋滆溅杈规部鍒扮嚎璺濈(榛勭墝)/绫�"
-    android:id="@+id/road_stop_edge_yellow_dist"
+    android:id="@+id/stop_car_edge_yellow_distance"
         app:et_input="17"
         />
 
diff --git a/app/src/main/res/layout/layout_fragment_stationsettin.xml b/app/src/main/res/layout/layout_fragment_stationsettin.xml
index 9e45b60..3da1f76 100644
--- a/app/src/main/res/layout/layout_fragment_stationsettin.xml
+++ b/app/src/main/res/layout/layout_fragment_stationsettin.xml
@@ -8,6 +8,7 @@
     <safeluck.drive.evaluation.fragment.rulefragments.cview.TextEditText
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:id="@+id/cross_school_max_speed"
         app:txt_des_tvedit = "瀛︽牎/杞︾珯/妯亾鍖哄煙鏈�楂橀�熷害KM/H"
         app:et_input="30"
         />
@@ -15,12 +16,14 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         app:txt_des_tvedit = "閫氳繃瀛︽牎/杞︾珯/妯亾锛岃窛绂绘鏌ョ偣鐨勬湁鏁堣窛绂�(绫�)"
+        android:id="@+id/crossing_break_valid_distance"
         app:et_input="30"
         />
     <safeluck.drive.evaluation.fragment.rulefragments.cview.TextEditText
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         app:txt_des_tvedit = "鍋滄绾垮闇�鍋滆溅鏃讹紝璺濆仠姝㈢嚎鏈夋晥璺濈(绫�)"
+        android:id="@+id/crossing_stop_valid_distance"
         app:et_input="3.0"
         />
 

--
Gitblit v1.8.0