From c73a6318cb54e1bd16f6f1f2e432c2ed0ab4f594 Mon Sep 17 00:00:00 2001
From: endian11 <Dana_Lee1016@126.com>
Date: 星期一, 24 八月 2020 18:01:53 +0800
Subject: [PATCH] SharedPrefernce增加保存hashmap ;设置界面增加车辆模型、地图信息展示(名字、版本)和版本更新功能,点击之后进行http请求,请求完成后发送地图、车辆给移动站服务;设置界面信息展示增加TypeCount,展示地图简要信息

---
 app/src/main/java/safeluck/drive/evaluation/util/DataInit.kt                  |  166 ++++++++++++++++
 app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java        |   12 +
 app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java                 |   39 +++
 app/src/main/res/values/strings.xml                                           |    1 
 app/src/main/res/layout/map_car_info_update.xml                               |   40 ++++
 app/src/main/java/safeluck/drive/evaluation/bean/BaseDataUIBean.java          |   55 +++++
 app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpCarRespBean.java   |   18 +
 app/src/main/java/safeluck/drive/evaluation/adapter/BaseDataInfoAdapter.java  |  106 +++++++++-
 app/src/main/java/safeluck/drive/evaluation/bean/CarInfoHead.kt               |    8 
 app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigUpdateWorker.kt |   16 +
 app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpRoadMapRsp.java    |   18 +
 app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java   |   58 +++++
 app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpYardRsp.java       |   18 +
 13 files changed, 537 insertions(+), 18 deletions(-)

diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigUpdateWorker.kt b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigUpdateWorker.kt
index 7501015..1b235ae 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigUpdateWorker.kt
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigUpdateWorker.kt
@@ -19,7 +19,9 @@
 import safeluck.drive.evaluation.DB.Constant
 import safeluck.drive.evaluation.DB.WorkRoomDataBase
 import safeluck.drive.evaluation.app
+import safeluck.drive.evaluation.bean.BaseDataUIBean
 import safeluck.drive.evaluation.bean.ExamPlatformData
+import safeluck.drive.evaluation.bean.MapInfoHead
 import safeluck.drive.evaluation.httpmodule.HttpCarRespBean
 import safeluck.drive.evaluation.httpmodule.HttpRequetBean
 import safeluck.drive.evaluation.httpmodule.HttpRoadMapRsp
@@ -96,12 +98,18 @@
                     jsonObject1 = JSONObject(str)
                     val result = jsonObject1!!.getBoolean("result")
                     if (result) {
+                        var mapInfoHead:MapInfoHead = MapInfoHead("","",BaseDataUIBean.TYPE_.car)
+
                         when(type){
                             "road" ->{
+                                mapInfoHead.type = BaseDataUIBean.TYPE_.road
                                 val map = gson.fromJson<HttpRoadMapRsp>(str, HttpRoadMapRsp::class.java)
                             if (map.isResult) {
                                 if (map.data != null) {
+                                    mapInfoHead.version = map.data.version
+
                                     if (map.data.map_json.type.equals("road")) {
+                                        mapInfoHead.str = map.data.map_json.name
                                         ExamPlatformData.getInstance().setNewRoadMapPath(Environment.getExternalStorageDirectory().absolutePath + "/"
                                                 + applicationContext.getPackageName() + "/" + fileName)
                                         CThreadPoolExecutor.runInBackground(Runnable {
@@ -118,10 +126,13 @@
 
                             }}
                                 "yard" ->{
+                                    mapInfoHead.type = BaseDataUIBean.TYPE_.yard
                                     val yard = gson.fromJson<HttpYardRsp>(str,HttpYardRsp::class.java)
                                     if (yard.isResult){
                                         if (yard.data !=null){
+                                            mapInfoHead.version = yard.data.version
                                             Log.i(TAG,"yard====")
+                                            mapInfoHead.str = yard.data.map_json.name
                                             ExamPlatformData.getInstance().setNewMapPath(Environment.getExternalStorageDirectory().absolutePath + "/"
                                                     + applicationContext.getPackageName() + "/"+fileName)
                                             CThreadPoolExecutor.runInBackground(Runnable{
@@ -134,10 +145,13 @@
                                     }
                                 }
                             else ->{
+                                mapInfoHead.type = BaseDataUIBean.TYPE_.car
                                 val car = gson.fromJson<HttpCarRespBean>(str,HttpCarRespBean::class.java)
 
                                 if (car.isResult){
                                     if (car.data !=null){
+                                        mapInfoHead.version = car.data.version
+                                        mapInfoHead.str = car.data.map_json.name
                                         ExamPlatformData.getInstance().carModelPath = Environment.getExternalStorageDirectory().absolutePath + "/" +
                                                 applicationContext.getPackageName() + "/"+fileName
 
@@ -153,7 +167,7 @@
                                 }
                             }
                         }
-
+                        ExamPlatformData.getInstance().setMapHeadInfo(mapInfoHead)
                     } else {
 //                        Toast.makeText(applicationContext, jsonObject1!!.getString("data"), Toast.LENGTH_SHORT).show()
                     }
diff --git a/app/src/main/java/safeluck/drive/evaluation/adapter/BaseDataInfoAdapter.java b/app/src/main/java/safeluck/drive/evaluation/adapter/BaseDataInfoAdapter.java
index 4eb06aa..db42cd3 100644
--- a/app/src/main/java/safeluck/drive/evaluation/adapter/BaseDataInfoAdapter.java
+++ b/app/src/main/java/safeluck/drive/evaluation/adapter/BaseDataInfoAdapter.java
@@ -1,10 +1,12 @@
 package safeluck.drive.evaluation.adapter;
 
 import android.content.Context;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
+import android.widget.Button;
 import android.widget.TextView;
 
 import java.util.ArrayList;
@@ -12,6 +14,7 @@
 
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.bean.BaseDataUIBean;
+import safeluck.drive.evaluation.fragment.BaseDatasFragment;
 
 /**
  * MyApplication2
@@ -20,10 +23,11 @@
  * All Rights Saved! Chongqing AnYun Tech co. LTD
  */
 
-public class BaseDataInfoAdapter extends BaseAdapter {
-    private List<BaseDataUIBean> persons = new ArrayList<>();//gps淇℃伅
+public class BaseDataInfoAdapter extends BaseAdapter implements View.OnClickListener {
+    private List<BaseDataUIBean> persons = new ArrayList<>();
     private final static String TAG = "anyun_info";
     private Context mContext;
+    private Callback mCallback;
     @Override
     public int getCount() {
         return persons.size();
@@ -35,26 +39,73 @@
     }
 
     @Override
+    public int getViewTypeCount() {
+        return 2;
+    }
+
+    @Override
     public long getItemId(int i) {
         return i;
     }
 
     @Override
+    public int getItemViewType(int position) {
+        if (persons.get(position).getType()==0){
+            return 0;
+        }else{
+
+        return 1;
+        }
+    }
+
+    @Override
     public View getView(int i, View view, ViewGroup viewGroup) {
         InfoHodler infoHodler = null;
-        if (view == null){
-            view = LayoutInflater.from(mContext).inflate(R.layout.gps_info_item,null);
-            infoHodler = new InfoHodler();
-            infoHodler.name = view.findViewById(R.id.text_check_info);
-            view.setTag(infoHodler);
-        }else{
-            infoHodler = (InfoHodler) view.getTag();
+        MapCarInfoHodler mapCarinfoHodler = null;
+
+        switch (getItemViewType(i)){
+            case 0:
+                if (view == null){
+                    view = LayoutInflater.from(mContext).inflate(R.layout.gps_info_item,null);
+                    infoHodler = new InfoHodler();
+                    infoHodler.name = view.findViewById(R.id.text_check_info);
+                    view.setTag(infoHodler);
+                }else{
+                    infoHodler = (InfoHodler) view.getTag();
+                }
+                infoHodler.name.setText(getItem(i).getDes());
+                infoHodler.name.setCompoundDrawablesWithIntrinsicBounds(mContext.getResources().
+                        getDrawable(getItem(i).getRes_id()),null,null,null);
+                infoHodler.name.setCompoundDrawablePadding(10);
+                break;
+            default:
+                Log.i(TAG,"Defalut");
+                if (view == null){
+                    view = LayoutInflater.from(mContext).inflate(R.layout.map_car_info_update,null);
+                    mapCarinfoHodler = new MapCarInfoHodler();
+                    mapCarinfoHodler.name = view.findViewById(R.id.tv_map_name);
+                    mapCarinfoHodler.version = view.findViewById(R.id.tv_version);
+                    mapCarinfoHodler.btn = view.findViewById(R.id.btn_update_map_car);
+                    view.setTag(mapCarinfoHodler);
+                }else{
+                    mapCarinfoHodler = (MapCarInfoHodler) view.getTag();
+                }
+                mapCarinfoHodler.btn.setOnClickListener(this);
+                mapCarinfoHodler.btn.setTag(i);
+                mapCarinfoHodler.name.setText(getItem(i).getDes());
+                mapCarinfoHodler.name.setCompoundDrawablesWithIntrinsicBounds(mContext.getResources().
+                        getDrawable(getItem(i).getRes_id()),null,null,null);
+                mapCarinfoHodler.name.setCompoundDrawablePadding(10);
+
+                mapCarinfoHodler.btn.setText(getItem(i).getBtn_txt());
+                mapCarinfoHodler.version.setText(getItem(i).getVersion());
+
+
+                break;
         }
 
-        infoHodler.name.setText(getItem(i).getDes());
-        infoHodler.name.setCompoundDrawablesWithIntrinsicBounds(mContext.getResources().
-                getDrawable(getItem(i).getRes_id()),null,null,null);
-        infoHodler.name.setCompoundDrawablePadding(10);
+
+
         return view;
     }
 
@@ -71,6 +122,24 @@
         notifyDataSetChanged();//鍒锋柊鐣岄潰
     }
 
+    @Override
+    public void onClick(View v) {
+        if (mCallback != null){
+            mCallback.click(v);
+        }
+    }
+
+    public void setCallback(Callback call) {
+        this.mCallback = call;
+    }
+
+    /**
+     * 鑷畾涔夋帴鍙o紝鐢ㄤ簬鍥炶皟鎸夐挳鐐瑰嚮浜嬩欢鍒癋ragment銆丄ctivity
+     */
+    public interface Callback{
+        void click(View view);
+    }
+
     static class InfoHodler {
 
 
@@ -81,5 +150,16 @@
 
 
     }
+    static class MapCarInfoHodler {
+
+
+        public TextView name;//濮撳悕
+        public TextView version;//濮撳悕
+    public Button btn;
+
+
+
+
+    }
 
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/BaseDataUIBean.java b/app/src/main/java/safeluck/drive/evaluation/bean/BaseDataUIBean.java
index 185680a..d01ca84 100644
--- a/app/src/main/java/safeluck/drive/evaluation/bean/BaseDataUIBean.java
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/BaseDataUIBean.java
@@ -19,12 +19,59 @@
 
 public class BaseDataUIBean {
     private SpannableString des;
+    // 涓昏鏄彧鐢ㄤ簡涓�涓猼extview 琛ㄧずitem 锛岃�屽湴鍥惧拰杞﹁締妯″瀷闇�瑕佷竴涓寜閽紝鎵�浠ヨ窡鍗曠墖鏈哄崟鐙樉绀轰俊鎭笉涓�鏍凤紱
+    private int type=0;
+
+    //鏍囪杞︽ā鍨嬨�佸満鍦般�佽矾鑰冨湴鍥剧殑鐗堟湰  鏁村瀷
+    private SpannableString version;
+
+    private String btn_txt="";
+
+    public enum TYPE_{
+        yard,road,car
+    }
+
+    TYPE_ type_;
+
+
+    public String getBtn_txt() {
+        return btn_txt;
+    }
+
+    public void setBtn_txt(String btn_txt) {
+        this.btn_txt = btn_txt;
+    }
+
     @IdRes
     private int res_id;
+
+    public SpannableString getVersion() {
+        return version;
+    }
+
+    public void setVersion(SpannableString version) {
+        this.version = version;
+    }
 
     public BaseDataUIBean(SpannableString s, int res_id) {
         this.des = s;
         this.res_id = res_id;
+    }
+    public BaseDataUIBean(SpannableString s, int res_id,SpannableString ver,String btn_txt,int type,TYPE_ t) {
+        this.des = s;
+        this.res_id = res_id;
+        this.version = ver;
+        this.type = type;
+        this.btn_txt = btn_txt;
+        this.type_ = t;
+    }
+
+    public TYPE_ getType_() {
+        return type_;
+    }
+
+    public void setType_(TYPE_ type_) {
+        this.type_ = type_;
     }
 
     public SpannableString getDes() {
@@ -42,4 +89,12 @@
     public void setRes_id(int res_id) {
         this.res_id = res_id;
     }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/CarInfoHead.kt b/app/src/main/java/safeluck/drive/evaluation/bean/CarInfoHead.kt
new file mode 100644
index 0000000..ce8dc77
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/CarInfoHead.kt
@@ -0,0 +1,8 @@
+package safeluck.drive.evaluation.bean
+
+/**DriveJudge
+ * Created by lzw on 2020/8/24. 15:24:15
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+data class MapInfoHead(var version:String,var str:String,var type:BaseDataUIBean.TYPE_)
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java b/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
index d75cd9b..fd5442a 100644
--- a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
@@ -465,4 +465,16 @@
         sign_mode = (int) SPUtils.get(app.getAppContext(),SPUtils.SIGN_MODE,0);
         return sign_mode;
     }
+    private HashMap<BaseDataUIBean.TYPE_,MapInfoHead> mapInfoHeads = new HashMap<>();
+
+    public HashMap<BaseDataUIBean.TYPE_, MapInfoHead> getMapInfoHeads() {
+        mapInfoHeads = SPUtils.getHashMap(app.getAppContext());
+        return mapInfoHeads;
+    }
+
+    public void setMapHeadInfo(MapInfoHead mapHeadInfo) {
+
+            mapInfoHeads.put(mapHeadInfo.getType(),mapHeadInfo);
+        SPUtils.saveHashMap(mapInfoHeads,app.getAppContext());
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java
index cf2b582..6cb346b 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java
@@ -40,7 +40,10 @@
 import java.lang.reflect.Field;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.BuildConfig;
@@ -58,9 +61,11 @@
 import safeluck.drive.evaluation.bean.BaseDataUIBean;
 import safeluck.drive.evaluation.bean.ExamPlatformData;
 import safeluck.drive.evaluation.bean.MCUInfo;
+import safeluck.drive.evaluation.bean.MapInfoHead;
 import safeluck.drive.evaluation.cEventCenter.CEventCenter;
 import safeluck.drive.evaluation.cEventCenter.ICEventListener;
 import safeluck.drive.evaluation.util.CThreadPoolExecutor;
+import safeluck.drive.evaluation.util.DataInitKt;
 import safeluck.drive.evaluation.util.FileUtil;
 
 /**
@@ -71,7 +76,7 @@
  * 閭锛�632393724@qq.com
  * All Rights Saved! Chongqing AnYun Tech co. LTD
  */
-public class BaseDatasFragment extends SupportFragment {
+public class BaseDatasFragment extends SupportFragment implements BaseDataInfoAdapter.Callback {
 
     private static final String TAG = BaseDatasFragment.class.getSimpleName();
     private Gson gson = new Gson();
@@ -129,6 +134,16 @@
                                         setitemInfo("RTK骞冲彴鐘舵��         ", appStatus.getRtk_connect_status()==1?(appStatus.getRtk_login_code()==0?"宸茬櫥褰�":"鏈櫥褰�"):"鏈繛鎺�",R.mipmap.conn_status);
                                         setitemInfo("鑰冭瘯骞冲彴鐘舵��         ", ExamPlatformData.getInstance().getExamplatformStatusStr(ExamPlatformData.getInstance().getExamplatformStatus()),R.mipmap.conn_status);
                                     }
+                                    HashMap<BaseDataUIBean.TYPE_, MapInfoHead> hashMaps = ExamPlatformData.getInstance().getMapInfoHeads();
+                                    Iterator<Map .Entry<BaseDataUIBean.TYPE_,MapInfoHead>> iterator = hashMaps.entrySet().iterator();
+                                    while (iterator.hasNext()){
+                                        Map.Entry<BaseDataUIBean.TYPE_,MapInfoHead>entry = iterator.next();
+                                        Log.i(TAG,"key= " + entry.getKey() + " and value= " + entry.getValue());
+                                        datas.add(new BaseDataUIBean(str2SpannableString(entry.getValue().getStr()),R.mipmap.province_id,str2FouregourdSpannableString(getResources().getString(R.string.mapversion)+entry.getValue().getVersion()),
+                                                        entry.getKey()== BaseDataUIBean.TYPE_.car?"鏇存柊杞﹁締妯″瀷":(entry.getKey()== BaseDataUIBean.TYPE_.road?"鏇存柊閬撹矾鍦板浘":"鏇存柊鍦哄湴鍦板浘")
+                                                ,1, entry.getKey()));
+                                    }
+
                                     gpsInfoAdapter.addAll(datas);
                                 }
                             });
@@ -137,6 +152,13 @@
             }
         }
     };
+
+    private SpannableString str2FouregourdSpannableString(String s) {
+        spannableString = new SpannableString(s);
+        spannableString.setSpan(new AbsoluteSizeSpan(28),0,s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#FFFFFF")),0,s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        return spannableString;
+    }
 
     private void setitemInfo(String des, String str, int id){
         versionDes=des;
@@ -207,7 +229,19 @@
         gpsInfoAdapter = new BaseDataInfoAdapter(_mActivity);
         lv.setAdapter(gpsInfoAdapter);
 
+        gpsInfoAdapter.setCallback(this);
+
+
+
     }
+
+    private SpannableString str2SpannableString(String str) {
+        spannableString = new SpannableString(str);
+        spannableString.setSpan(new AbsoluteSizeSpan(22),0,str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#A8AAA7")),0,str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        return spannableString;
+    }
+
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
@@ -226,4 +260,26 @@
         ((MainActivity)_mActivity).viewtitle.setVisibility(View.GONE);
         ((MainActivity)_mActivity).btn_return.setVisibility(View.GONE);
     }
+
+    @Override
+    public void click(View view) {
+        if (view != null){
+            Log.i(TAG,"view="+(int)view.getTag());
+            BaseDataUIBean.TYPE_ type = datas.get((int)view.getTag()).getType_();
+            switch (type){
+                case car:
+                    Toast.makeText(_mActivity, "鏇存柊杞︽ā鍨�", Toast.LENGTH_SHORT).show();
+                    DataInitKt.getMap(ExamPlatformData.getInstance().getPhone(),"car");
+                    break;
+                case road:
+                    Toast.makeText(_mActivity, "鏇存柊閬撹矾鍦板浘", Toast.LENGTH_SHORT).show();
+                    DataInitKt.getMap(ExamPlatformData.getInstance().getPhone(),"road");
+                    break;
+                case yard:
+                    Toast.makeText(_mActivity, "鏇存柊鍦哄湴鍦板浘", Toast.LENGTH_SHORT).show();
+                    DataInitKt.getMap(ExamPlatformData.getInstance().getPhone(),"yard");
+                    break;
+            }
+        }
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpCarRespBean.java b/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpCarRespBean.java
index 0ffe1cf..d2ab3f1 100644
--- a/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpCarRespBean.java
+++ b/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpCarRespBean.java
@@ -38,6 +38,8 @@
 
         private String server;
         private String port;
+        private String version;
+        private String map_url;
         private MapJsonBean map_json;
         private String pzh;
 
@@ -45,6 +47,22 @@
             return server;
         }
 
+        public String getVersion() {
+            return version;
+        }
+
+        public void setVersion(String version) {
+            this.version = version;
+        }
+
+        public String getMap_url() {
+            return map_url;
+        }
+
+        public void setMap_url(String map_url) {
+            this.map_url = map_url;
+        }
+
         public void setServer(String server) {
             this.server = server;
         }
diff --git a/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpRoadMapRsp.java b/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpRoadMapRsp.java
index ced6c5f..ef25dfe 100644
--- a/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpRoadMapRsp.java
+++ b/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpRoadMapRsp.java
@@ -38,9 +38,27 @@
 
         private String server;
         private String port;
+        private String version;
+        private String map_url;
         private MapJsonBean map_json;
         private String pzh;
 
+        public String getVersion() {
+            return version;
+        }
+
+        public void setVersion(String version) {
+            this.version = version;
+        }
+
+        public String getMap_url() {
+            return map_url;
+        }
+
+        public void setMap_url(String map_url) {
+            this.map_url = map_url;
+        }
+
         public String getServer() {
             return server;
         }
diff --git a/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpYardRsp.java b/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpYardRsp.java
index 04c8620..348435b 100644
--- a/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpYardRsp.java
+++ b/app/src/main/java/safeluck/drive/evaluation/httpmodule/HttpYardRsp.java
@@ -40,9 +40,27 @@
 
         private String server;
         private String port;
+        private String version;
+        private String map_url;
         private MapJsonBean map_json;
         private String pzh;
 
+        public String getVersion() {
+            return version;
+        }
+
+        public void setVersion(String version) {
+            this.version = version;
+        }
+
+        public String getMap_url() {
+            return map_url;
+        }
+
+        public void setMap_url(String map_url) {
+            this.map_url = map_url;
+        }
+
         public String getServer() {
             return server;
         }
diff --git a/app/src/main/java/safeluck/drive/evaluation/util/DataInit.kt b/app/src/main/java/safeluck/drive/evaluation/util/DataInit.kt
index 36b87e7..ca4620d 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/DataInit.kt
+++ b/app/src/main/java/safeluck/drive/evaluation/util/DataInit.kt
@@ -1,6 +1,10 @@
 package safeluck.drive.evaluation.util
 
 import android.content.Context
+import android.os.Environment
+import android.text.TextUtils
+import android.util.Log
+import android.widget.Toast
 import androidx.work.Data
 import androidx.work.ListenableWorker
 import com.anyun.exam.lib.AYSdk
@@ -8,15 +12,24 @@
 import com.google.gson.Gson
 import com.google.gson.reflect.TypeToken
 import com.google.gson.stream.JsonReader
+import okhttp3.ResponseBody
 import org.json.JSONException
 import org.json.JSONObject
+import retrofit2.Call
+import retrofit2.Callback
+import retrofit2.Response
 import safeluck.drive.evaluation.Constant
 import safeluck.drive.evaluation.DB.WorkRoomDataBase
 import safeluck.drive.evaluation.DB.rtktb.RTKConfig
 import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig
-import safeluck.drive.evaluation.bean.ExamPlatformData
-import safeluck.drive.evaluation.bean.SignalConfigRemote
-import safeluck.drive.evaluation.bean.SimulateNightBean
+import safeluck.drive.evaluation.app
+import safeluck.drive.evaluation.bean.*
+import safeluck.drive.evaluation.httpmodule.HttpCarRespBean
+import safeluck.drive.evaluation.httpmodule.HttpRequetBean
+import safeluck.drive.evaluation.httpmodule.HttpRoadMapRsp
+import safeluck.drive.evaluation.httpmodule.HttpYardRsp
+import safeluck.drive.evaluation.httpmodule.RetrofitCreator.Companion.getRestService
+import safeluck.drive.evaluation.platformMessage.PlatFormConstant
 import safeluck.drive.evaluation.worker.MCUUpgradeWorker
 import java.io.IOException
 import java.io.InputStreamReader
@@ -205,3 +218,150 @@
     }
     return false
 }
+
+
+
+
+ fun getMap(sn: String, type: String){
+    lateinit var jsonObject1 :JSONObject
+    lateinit var fileName :String
+    when(type){
+        "road" -> fileName =  safeluck.drive.evaluation.Constant.ROAD_MAP
+        "yard" -> fileName =  safeluck.drive.evaluation.Constant.MAP
+        else -> fileName = safeluck.drive.evaluation.Constant.VEHICLE
+    }
+        getRestService().getMapsAndVehicleModel(HttpRequetBean(sn, type)).enqueue(object : Callback<ResponseBody> {
+            override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
+                MyLog.i(PlatFormConstant.HTTPTAG,t.localizedMessage)
+            }
+
+            override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
+                var str: String = response.body()!!.string()
+                MyLog.i(PlatFormConstant.HTTPTAG,str)
+                jsonObject1 = JSONObject(str)
+                val result = jsonObject1!!.getBoolean("result")
+                if (result) {
+                    var mapInfoHead: MapInfoHead = MapInfoHead("","", BaseDataUIBean.TYPE_.car)
+
+                    when(type){
+                        "road" ->{
+                            mapInfoHead.type = BaseDataUIBean.TYPE_.road
+                            val map = gson.fromJson<HttpRoadMapRsp>(str, HttpRoadMapRsp::class.java)
+                            if (map.isResult) {
+                                if (map.data != null) {
+                                    mapInfoHead.version = map.data.version
+
+                                    if (map.data.map_json.type.equals("road")) {
+                                        mapInfoHead.str = map.data.map_json.name
+                                        ExamPlatformData.getInstance().setNewRoadMapPath(Environment.getExternalStorageDirectory().absolutePath + "/"
+                                                + app.getAppContext().getPackageName() + "/" + fileName)
+                                        CThreadPoolExecutor.runInBackground(Runnable {
+                                            str = gson.toJson(map.data.map_json)
+                                            MyLog.i(PlatFormConstant.HTTPTAG,"绉戜笁閬撹矾鍦板浘淇濆瓨鎴愬姛")
+                                            FileUtil.writeTxtFileToSD(app.getAppContext(), fileName, str, "")
+//                                            sendRoadMapInfo()
+                                        })
+                                    }
+
+
+                                }
+
+
+                            }}
+                        "yard" ->{
+                            mapInfoHead.type = BaseDataUIBean.TYPE_.yard
+                            val yard = gson.fromJson<HttpYardRsp>(str,HttpYardRsp::class.java)
+                            if (yard.isResult){
+                                if (yard.data !=null){
+                                    mapInfoHead.version = yard.data.version
+                                    mapInfoHead.str = yard.data.map_json.name
+                                    ExamPlatformData.getInstance().setNewMapPath(Environment.getExternalStorageDirectory().absolutePath + "/"
+                                            + app.getAppContext().getPackageName() + "/"+fileName)
+                                    CThreadPoolExecutor.runInBackground(Runnable{
+                                        MyLog.i(PlatFormConstant.HTTPTAG,"绉戜笁鍦哄湴鍦板浘淇濆瓨鎴愬姛")
+                                        str = gson.toJson(yard.data.map_json)
+                                        FileUtil.writeTxtFileToSD(app.getAppContext(),fileName,str,"")
+                                        sendMapInfo()
+                                    })
+                                }
+                            }
+                        }
+                        else ->{
+                            mapInfoHead.type = BaseDataUIBean.TYPE_.car
+                            val car = gson.fromJson<HttpCarRespBean>(str,HttpCarRespBean::class.java)
+
+                            if (car.isResult){
+                                if (car.data !=null){
+                                    mapInfoHead.version = car.data.version
+                                    mapInfoHead.str = car.data.map_json.name
+                                    ExamPlatformData.getInstance().carModelPath = Environment.getExternalStorageDirectory().absolutePath + "/" +
+                                            app.getAppContext().getPackageName() + "/"+fileName
+
+//                                    Log.i(TAG, "瑙f瀽涔嬪悗鐨勮溅妯″瀷=$str")
+                                    CThreadPoolExecutor.runInBackground(Runnable{
+                                        str = gson.toJson(car.data.map_json)
+                                        MyLog.i(PlatFormConstant.HTTPTAG,"杞﹁締妯″瀷淇濆瓨鎴愬姛")
+                                        FileUtil.writeTxtFileToSD(app.getAppContext(),fileName,str,"")
+                                        sendVehicleInfo()
+                                    })
+
+                                }
+                            }
+                        }
+                    }
+                    ExamPlatformData.getInstance().setMapHeadInfo(mapInfoHead)
+                } else {
+//                        Toast.makeText(applicationContext, jsonObject1!!.getString("data"), Toast.LENGTH_SHORT).show()
+                }
+            }
+        })
+
+}
+
+private fun sendMapInfo(){
+    val mapPath = ExamPlatformData.getInstance().mapPath
+
+
+    if (!TextUtils.isEmpty(mapPath)) {
+        MyLog.i("鏇存柊Map鐨勫湴鍥�$mapPath")
+        val fileContent = FileUtil.readFile(mapPath)
+        if (fileContent != null) {
+            val str = String(fileContent)
+            AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_MAP_INFO, str)
+        } else {
+            MyLog.i(String.format("鏂囦欢:%s涓嶅瓨鍦�", mapPath))
+            CThreadPoolExecutor.runOnMainThread { Toast.makeText(app.getAppContext(), "鏂囦欢锛�" + mapPath + "涓嶅瓨鍦�", Toast.LENGTH_SHORT).show() }
+        }
+    }
+}
+
+private fun sendVehicleInfo(){
+    val carPath = ExamPlatformData.getInstance().carModelPath
+    if (!TextUtils.isEmpty(carPath)) {
+        MyLog.i("鏇存柊鍚庣殑Car妯″瀷$carPath")
+        val bytes = FileUtil.readFile(carPath)
+        if (bytes != null) {
+            val str = String(bytes)
+            AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_VECHILE_PROFILE, str)
+        } else {
+            MyLog.i(String.format("鏂囦欢:%s涓嶅瓨鍦�", carPath))
+        }
+    }
+}
+private fun sendRoadMapInfo(){
+    val roadmapPath = ExamPlatformData.getInstance().roadMapPath
+
+    if (!TextUtils.isEmpty(roadmapPath)) {
+        MyLog.i("鏇存柊RoadMap鍦板浘$roadmapPath")
+        val fileContent = FileUtil.readFile(roadmapPath)
+        if (fileContent != null) {
+            val str = String(fileContent)
+            AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_ROAD_MAP_INFO, str)
+        } else {
+            MyLog.i(String.format("鏂囦欢:%s涓嶅瓨鍦�", roadmapPath))
+            CThreadPoolExecutor.runOnMainThread { Toast.makeText(app.getAppContext(), "鏂囦欢锛�" + roadmapPath + "涓嶅瓨鍦�", Toast.LENGTH_SHORT).show() }
+        }
+    } else {
+
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java b/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java
index f56ef46..452fb6b 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java
+++ b/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java
@@ -4,10 +4,18 @@
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.HashMap;
 import java.util.Map;
 
 import android.content.Context;
 import android.content.SharedPreferences;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
+import safeluck.drive.evaluation.bean.BaseDataUIBean;
+import safeluck.drive.evaluation.bean.MapInfoHead;
 
 public class SPUtils
 {
@@ -27,6 +35,37 @@
     public static final String Coach_SIGN_STATUS = "coach_sign_";
     public static final String SIGN_MODE = "sign_mode";
     public static final String EXAM_ID = "exam_id";
+    //灏� HashMap 鐢╯p瀛樺偍璧锋潵
+    public static void saveHashMap(HashMap<BaseDataUIBean.TYPE_,MapInfoHead> map, Context context){
+
+        Gson gson = new Gson();
+        String json = gson.toJson(map);
+
+        //姝ラ1锛氬垱寤轰竴涓猄haredPreferences瀵硅薄
+        SharedPreferences sharedPreferences= context.getSharedPreferences("config", Context.MODE_PRIVATE);
+        //姝ラ2锛� 瀹炰緥鍖朣haredPreferences.Editor瀵硅薄
+        SharedPreferences.Editor editor = sharedPreferences.edit();
+        //姝ラ3锛氬皢鑾峰彇杩囨潵鐨勫�兼斁鍏ユ枃浠�
+        editor.putString("config",json);
+        editor.commit();
+
+
+    }
+
+
+    //灏唈son鏍煎紡鐨勫瓧绗︿覆浠巗p涓彇鍑烘潵杞寲涓篽ashMap
+    public static  HashMap<BaseDataUIBean.TYPE_, MapInfoHead> getHashMap(Context context){
+
+        SharedPreferences sharedPreferences=context. getSharedPreferences("config", Context .MODE_PRIVATE);
+        String json =sharedPreferences.getString("config","");
+        HashMap<BaseDataUIBean.TYPE_,MapInfoHead> map = null;
+
+        Type type = new TypeToken<HashMap<BaseDataUIBean.TYPE_, MapInfoHead>>(){}.getType();
+        Gson gson = new Gson();
+        map = gson.fromJson(json, type);
+
+        return map;
+    }
 
     /**
      * 淇濆瓨鏁版嵁鐨勬柟娉曪紝鎴戜滑闇�瑕佹嬁鍒颁繚瀛樻暟鎹殑鍏蜂綋绫诲瀷锛岀劧鍚庢牴鎹被鍨嬭皟鐢ㄤ笉鍚岀殑淇濆瓨鏂规硶
diff --git a/app/src/main/res/layout/map_car_info_update.xml b/app/src/main/res/layout/map_car_info_update.xml
new file mode 100644
index 0000000..95726e9
--- /dev/null
+++ b/app/src/main/res/layout/map_car_info_update.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center_horizontal">
+
+    <TextView
+        android:id="@+id/tv_map_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="娑櫟浜ら�氶┚鏍�"
+        android:layout_weight="3"
+        android:drawablePadding="@dimen/ui_margin_5dp"
+        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+        android:drawableLeft="@mipmap/auto_check_status"
+        android:textColor="@android:color/white"
+/>
+
+    <TextView
+        android:id="@+id/tv_version"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/mapversion"
+        android:layout_weight="1"
+        android:textColor="@android:color/white"
+ />
+
+    <Button
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="鏇存柊杞﹁締妯″瀷"
+        android:textColor="@android:color/white"
+        android:background="@drawable/bg_rgb_dlg"
+        android:layout_weight="2"
+        android:id="@+id/btn_update_map_car"
+     />
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 87f2c9f..50efd62 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -52,6 +52,7 @@
     <string name="by_crossing">閫氳繃璺彛</string>
     <string name="lane_change">鍙樻洿杞﹂亾</string>
     <string name="simulate_light_tip_start">涓嬮潰灏嗚繘琛屾ā鎷熷闂磋椹跺満鏅伅鍏変娇鐢ㄧ殑鑰冭瘯锛岃鎸夎闊虫寚浠ゅ湪5绉掑唴鍋氬嚭鐩稿簲鐨勭伅鍏夋搷浣�</string>
+    <string name="mapversion">鐗堟湰锛歏</string>
     <array name="simulate_light_tips">
         <item>涓嬮潰灏嗚繘琛屾ā鎷熷闂磋椹跺満鏅伅鍏変娇鐢ㄧ殑鑰冭瘯锛岃鎸夎闊虫寚浠ゅ湪5绉掑唴鍋氬嚭鐩稿簲鐨勭伅鍏夋搷浣�</item>
         <item>妯℃嫙澶滈棿鑰冭瘯瀹屾垚璇峰叧闂墍鏈夌伅鍏夛紝璇疯捣姝ョ户缁畬鎴愯�冭瘯</item>

--
Gitblit v1.8.0