From e5659a16092dc90fd7b06f3659158ddae6e1edd3 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期一, 06 七月 2020 17:06:34 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 lib/src/main/java/com/anyun/exam/lib/SvrManager.java                      |    4 
 app/src/main/java/safeluck/drive/evaluation/fragment/VPFragment.java      |   27 -
 app/src/main/java/safeluck/drive/evaluation/fragment/JiaXiaoFragment.java |  388 +++++++++++++++++++++++++
 app/src/main/res/values/app_settings.xml                                  |    4 
 app/src/main/java/safeluck/drive/evaluation/util/Utils.java               |   85 +++++
 app/src/main/assets/giscar.json                                           |   35 ++
 app/src/main/res/layout/layout_arc_gis.xml                                |   14 
 app/src/main/res/layout/layout_select_dlg.xml                             |   10 
 /dev/null                                                                 |    0 
 app/src/main/java/safeluck/drive/evaluation/app.java                      |   61 ++-
 app/src/main/java/safeluck/drive/evaluation/bean/GisCarModel.java         |  146 +++++++++
 app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java    |   36 +-
 build.gradle                                                              |    4 
 app/src/main/res/layout/profile_layout.xml                                |    9 
 app/src/main/java/safeluck/drive/evaluation/bean/CarModel.java            |   43 ++
 app/build.gradle                                                          |    3 
 app/src/main/res/values/dimens.xml                                        |    1 
 17 files changed, 794 insertions(+), 76 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 85f7c62..c04999c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -77,6 +77,9 @@
     implementation "com.squareup.retrofit2:retrofit:$rootProject.retrofit_version"
     implementation "com.google.zxing:core:$rootProject.qrcode_version"
     implementation "com.squareup.picasso:picasso:2.5.2"
+    // *** ADD ***
+    implementation 'com.esri.arcgisruntime:arcgis-android:100.8.0'
+
 }
 repositories {
     mavenCentral()
diff --git a/app/libs/tbs_sdk_thirdapp_v4.3.0.3_43903_sharewithdownloadwithfile_withoutGame_obfs_20200402_121309.jar b/app/libs/tbs_sdk_thirdapp_v4.3.0.3_43903_sharewithdownloadwithfile_withoutGame_obfs_20200402_121309.jar
deleted file mode 100644
index 87c40fa..0000000
--- a/app/libs/tbs_sdk_thirdapp_v4.3.0.3_43903_sharewithdownloadwithfile_withoutGame_obfs_20200402_121309.jar
+++ /dev/null
Binary files differ
diff --git a/app/src/main/assets/giscar.json b/app/src/main/assets/giscar.json
new file mode 100644
index 0000000..667ae34
--- /dev/null
+++ b/app/src/main/assets/giscar.json
@@ -0,0 +1,35 @@
+{
+  "axial": [0, 25],
+  "body": [0, 1, 2, 3, 4, 5, 6, 7, 25, 26, 27, 28,29,30,31,32],
+  "left_front_tire": [8, 9],
+  "left_rear_tire": [10, 11],
+  "main_ant": [-9151.5063, 13030.5118],
+  "point": [-9149.6063, 13033.0768, -9149.9978, 13033.3124, -9150.3258, 13033.3485, -9150.8341, 13032.8985, -9151.7318, 13031.6639, -9152.3573, 13030.83, -9152.5214, 13030.5639, -9152.602, 13030.3105,-9150.8053, 13032.8843,-9150.6537, 13032.7602,-9152.3352, 13030.8124, -9152.221, 13030.7008,
+
+    -9150.1005859,13032.423100000247000,-9150.8535156,13032.752900000662000,-9151.1162109,13032.073200000450000,-9150.5683594,13031.804300000891000,
+    -9151.5400391,13030.519500000402000,-9151.9570313,13030.962400000542000,-9152.3496094,13030.609099999070000,-9151.8574219,13030.100199999288000,
+
+    -9151.0009766,13032.559200000018000,-9152.1943359,13030.980799999088000,-9151.9980469,13031.044099999592000,-9151.8066406,13031.161399999633000,-9151.2636719,13031.880100000650000,
+
+
+    -9152.092, 13029.7892,
+
+
+    -9151.4638, 13029.4333, -9151.2111, 13029.568, -9150.9808, 13029.8341, -9150.3546, 13030.6796, -9149.458, 13031.8642,-9149.1611, 13032.4276,-9149.2827, 13032.7653,-9149.4842, 13031.8708, -9149.6176, 13031.9937, -9151.0011,13029.8717, -9151.1367, 13029.9878,
+
+
+    -9150.1621094,13031.346100000665000,-9149.5800781,13031.784299999475000,
+    -9151.2343750,13029.761800000444000,-9151.0019531,13030.236099999398000,
+
+    -9150.9208984,13030.012800000608000,-9149.7265625,13031.590900000185000,-9150.3085938,13031.153000000864000,-9150.8496094,13030.435100000352000,-9150.9160156,13030.213700000197000
+  ],
+  "right_front_tire": [33, 34],
+  "right_rear_tire": [35, 36],
+
+  "left_front_glass":[12,13,14,15],
+  "left_rear_glass":[16,17,18,19],
+  "left_center_glass":[20,21,22,23,24],
+  "right_front_glass":[37,38],
+  "right_rear_glass":[39,40],
+  "right_center_glass":[41,42,43,44,45]
+}
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index cef9ce9..3c2f9aa 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -26,7 +26,6 @@
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
-import com.tencent.smtt.sdk.QbSdk;
 
 
 import org.json.JSONException;
@@ -98,33 +97,20 @@
 
             //鑰冭瘯鐘舵�� 锛屼竴浜涘垵濮嬬姸鎬侊紝app涓�浜涚姸鎬佸簲璇ュ厛鍒濆鍖栦竴涓�
             initData();
-            QbSdk.initX5Environment(this,cb);
 
         }
 
     }
-    QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
-        @Override
-        public void onViewInitFinished(boolean arg0) {
-            MyLog.i(" QbSdk onViewInitFinished is " + arg0);
-        }
 
-        @Override
-        public void onCoreInitFinished() {
-            MyLog.i("x5鍐呮牳onCoreInitFinished");
-        }
-    };
-    private void preinitX5WebCore() {
-        if (!QbSdk.isTbsCoreInited()) {
-            // preinit鍙渶瑕佽皟鐢ㄤ竴娆★紝濡傛灉宸茬粡瀹屾垚浜嗗垵濮嬪寲锛岄偅涔堝氨鐩存帴鏋勯�爒iew
-            QbSdk.preInit(this, null);// 璁剧疆X5鍒濆鍖栧畬鎴愮殑鍥炶皟鎺ュ彛
-            MyLog.i(" QbSdk isTbsCoreInited  " );
-        }
-    }
+
     private void initData() {
         CThreadPoolExecutor.runInBackground(()->{
+            MyLog.i("寮�濮嬪垵濮嬪寲鏁版嵁鍙戦�佸湴鍥�/杞﹁締/mcu鍗囩骇鏂囦欢/鑰冭瘯鐘舵��");
                 int type = WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getExamStatusDao().getStartExamInt();
                 ExamPlatformData.getInstance().setExamType(type);
+            OneTimeWorkRequest examStatausOutWorker = OneTimeWorkRequest.from(ExamStatusOutWorker.class);
+            OneTimeWorkRequest mcuUpgradeWorker = OneTimeWorkRequest.from(MCUUpgradeWorker.class);
+            WorkManager.getInstance(getApplicationContext()).beginWith(examStatausOutWorker).then(mcuUpgradeWorker).enqueue();
         });
     }
 
@@ -150,7 +136,6 @@
     @Override
     public void callBackMsg(final int cmd, String json) {
         String strConent = String.format("鏀跺埌鍛戒护[%d],Json鍐呭涓�%s", cmd, json);
-        Log.i(TAG,strConent);
         if (strConent.equalsIgnoreCase(lastStr)){
 
         }else{
@@ -160,9 +145,7 @@
         }
         switch (cmd) {
             case Constant.NDK_START:
-                OneTimeWorkRequest examStatausOutWorker = OneTimeWorkRequest.from(ExamStatusOutWorker.class);
-                OneTimeWorkRequest mcuUpgradeWorker = OneTimeWorkRequest.from(MCUUpgradeWorker.class);
-                WorkManager.getInstance(getApplicationContext()).beginWith(examStatausOutWorker).then(mcuUpgradeWorker).enqueue();
+
 
 
 
@@ -272,12 +255,35 @@
                     MyLog.i("鏀跺埌鑰冭瘯搴旂瓟閿欒鐮�="+errCode);
                     switch (errCode){
                         case -1:
-//                            sendMapInfo();
-//                            break;
+                            if (ExamPlatformData.getInstance().getExamType()>ExamPlatformData.EXAM_TYPE_ChangKAO){
+                                if (TextUtils.isEmpty(ExamPlatformData.getInstance().getRoadMapPath())){
+                                    MyLog.i("寮�濮嬭�冭瘯鍚庯紝杩滅▼鏈嶅姟缂哄皯璺�冨湴鍥撅紝浣嗗湴鍥剧‘瀹炰笉瀛樺湪鏃犳硶鍙戦�佺粰杩滅▼鏈嶅姟");
+                                    CThreadPoolExecutor.runOnMainThread(() -> Toast.makeText(appContext, "缂哄皯璺�冨湴鍥撅紝璇峰墠寰�\"璁剧疆\"閫夋嫨鍦板浘", Toast.LENGTH_SHORT).show());
+
+                                    return;
+                                }
+                            }
+                            if (ExamPlatformData.getInstance().getExamType()==ExamPlatformData.EXAM_TYPE_ChangKAO){
+                                if (TextUtils.isEmpty(ExamPlatformData.getInstance().getMapPath())){
+                                    MyLog.i("寮�濮嬭�冭瘯鍚庯紝杩滅▼鏈嶅姟缂哄皯chang鑰冨湴鍥撅紝浣嗗湴鍥剧‘瀹炰笉瀛樺湪鏃犳硶鍙戦�佺粰杩滅▼鏈嶅姟");
+                                    CThreadPoolExecutor.runOnMainThread(new Runnable() {
+                                        @Override
+                                        public void run() {
+                                            Toast.makeText(appContext, "缂哄皯鍦鸿�冨湴鍥撅紝璇峰墠寰�\"璁剧疆\"閫夋嫨鍦板浘", Toast.LENGTH_SHORT).show();
+
+                                        }
+                                    });
+
+                                    return;
+                                }
+                            }
+
+                            sendMapInfo();
+                            break;
                         case -2:
 
-//                            sendVechileInfo();
-//                            break;
+                            sendVechileInfo();
+                            break;
                         case -3:
                             Data data = new Data.Builder().putInt(Constant.NEED_MAPS_CAR,1).build();
                             OneTimeWorkRequest examStatausOutWorker1 = new OneTimeWorkRequest.Builder(ExamStatusOutWorker.class)
@@ -551,7 +557,6 @@
                         AYSdk.getInstance().sendCmd(Constant.PUSH_ROAD_MAP_INFO,str);
                     }else{
                         MyLog.i(String.format("鏂囦欢:%s涓嶅瓨鍦�",roadmapPath));
-
                         CThreadPoolExecutor.runOnMainThread(new Runnable() {
                             @Override
                             public void run() {
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/CarModel.java b/app/src/main/java/safeluck/drive/evaluation/bean/CarModel.java
new file mode 100644
index 0000000..1408276
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/CarModel.java
@@ -0,0 +1,43 @@
+package safeluck.drive.evaluation.bean;
+
+/**
+ * @ProjectName: DriveJudge
+ * @Package: safeluck.drive.evaluation.bean
+ * @ClassName: CarModel
+ * @Description: java绫讳綔鐢ㄦ弿杩�
+ * @Author: 鏉庡崰浼�
+ * @CreateDate: 2020-06-03 15:22
+ * @UpdateUser: 鏇存柊鑰�
+ * @UpdateDate: 2020-06-03 15:22
+ * @UpdateRemark: 鏇存柊璇存槑
+ * @Version: 1.0
+ */
+
+public class CarModel {
+    private double distance;
+    private double angle;
+
+    public CarModel(double distance, double angle) {
+        this.distance = distance;
+        this.angle = angle;
+    }
+
+    public CarModel() {
+    }
+
+    public double getDistance() {
+        return distance;
+    }
+
+    public void setDistance(double distance) {
+        this.distance = distance;
+    }
+
+    public double getAngle() {
+        return angle;
+    }
+
+    public void setAngle(double angle) {
+        this.angle = angle;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/GisCarModel.java b/app/src/main/java/safeluck/drive/evaluation/bean/GisCarModel.java
new file mode 100644
index 0000000..0c0422c
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/GisCarModel.java
@@ -0,0 +1,146 @@
+package safeluck.drive.evaluation.bean;
+
+import java.util.List;
+
+/**
+ * @ProjectName: DriveJudge
+ * @Package: safeluck.drive.evaluation.bean
+ * @ClassName: GisCarModel
+ * @Description: java绫讳綔鐢ㄦ弿杩�
+ * @Author: 鏉庡崰浼�
+ * @CreateDate: 2020-06-03 16:56
+ * @UpdateUser: 鏇存柊鑰�
+ * @UpdateDate: 2020-06-03 16:56
+ * @UpdateRemark: 鏇存柊璇存槑
+ * @Version: 1.0
+ */
+
+public class GisCarModel {
+
+    private List<Integer> axial;
+    private List<Integer> body;
+    private List<Integer> left_front_tire;
+    private List<Integer> left_rear_tire;
+    private List<Double> main_ant;
+    private List<Double> point;
+    private List<Integer> right_front_tire;
+    private List<Integer> right_rear_tire;
+    private List<Integer> left_front_glass;
+    private List<Integer> left_rear_glass;
+    private List<Integer> left_center_glass;
+    private List<Integer> right_front_glass;
+    private List<Integer> right_rear_glass;
+    private List<Integer> right_center_glass;
+
+    public List<Integer> getAxial() {
+        return axial;
+    }
+
+    public void setAxial(List<Integer> axial) {
+        this.axial = axial;
+    }
+
+    public List<Integer> getBody() {
+        return body;
+    }
+
+    public void setBody(List<Integer> body) {
+        this.body = body;
+    }
+
+    public List<Integer> getLeft_front_tire() {
+        return left_front_tire;
+    }
+
+    public void setLeft_front_tire(List<Integer> left_front_tire) {
+        this.left_front_tire = left_front_tire;
+    }
+
+    public List<Integer> getLeft_rear_tire() {
+        return left_rear_tire;
+    }
+
+    public void setLeft_rear_tire(List<Integer> left_rear_tire) {
+        this.left_rear_tire = left_rear_tire;
+    }
+
+    public List<Double> getMain_ant() {
+        return main_ant;
+    }
+
+    public void setMain_ant(List<Double> main_ant) {
+        this.main_ant = main_ant;
+    }
+
+    public List<Double> getPoint() {
+        return point;
+    }
+
+    public void setPoint(List<Double> point) {
+        this.point = point;
+    }
+
+    public List<Integer> getRight_front_tire() {
+        return right_front_tire;
+    }
+
+    public void setRight_front_tire(List<Integer> right_front_tire) {
+        this.right_front_tire = right_front_tire;
+    }
+
+    public List<Integer> getRight_rear_tire() {
+        return right_rear_tire;
+    }
+
+    public void setRight_rear_tire(List<Integer> right_rear_tire) {
+        this.right_rear_tire = right_rear_tire;
+    }
+
+    public List<Integer> getLeft_front_glass() {
+        return left_front_glass;
+    }
+
+    public void setLeft_front_glass(List<Integer> left_front_glass) {
+        this.left_front_glass = left_front_glass;
+    }
+
+    public List<Integer> getLeft_rear_glass() {
+        return left_rear_glass;
+    }
+
+    public void setLeft_rear_glass(List<Integer> left_rear_glass) {
+        this.left_rear_glass = left_rear_glass;
+    }
+
+    public List<Integer> getLeft_center_glass() {
+        return left_center_glass;
+    }
+
+    public void setLeft_center_glass(List<Integer> left_center_glass) {
+        this.left_center_glass = left_center_glass;
+    }
+
+    public List<Integer> getRight_front_glass() {
+        return right_front_glass;
+    }
+
+    public void setRight_front_glass(List<Integer> right_front_glass) {
+        this.right_front_glass = right_front_glass;
+    }
+
+    public List<Integer> getRight_rear_glass() {
+        return right_rear_glass;
+    }
+
+    public void setRight_rear_glass(List<Integer> right_rear_glass) {
+        this.right_rear_glass = right_rear_glass;
+    }
+
+    public List<Integer> getRight_center_glass() {
+        return right_center_glass;
+    }
+
+    public void setRight_center_glass(List<Integer> right_center_glass) {
+        this.right_center_glass = right_center_glass;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java
index 7a2a4d5..659e551 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java
@@ -109,22 +109,28 @@
                 break;
             case R.id.exit_sys:
 
-                MyDialog myDialog = MyDialog.Companion.newInstance("鎮ㄥ皢閫�鍑虹郴缁�,璇风‘璁ゆ暟鎹凡淇濆瓨");
+//                MyDialog myDialog = MyDialog.Companion.newInstance("鎮ㄥ皢閫�鍑虹郴缁�,璇风‘璁ゆ暟鎹凡淇濆瓨");
+//
+//                myDialog.setOnClick(new MyDialog.MyOnClickListener() {
+//                    @Override
+//                    public void onSure() {
+//                        _mActivity.finish();
+//
+//                    }
+//
+//                    @Override
+//                    public void onCancle() {
+//
+//                    }
+//                });
+//
+//                myDialog.show(getFragmentManager(),"mydialog");
 
-                myDialog.setOnClick(new MyDialog.MyOnClickListener() {
-                    @Override
-                    public void onSure() {
-                        _mActivity.finish();
-
-                    }
-
-                    @Override
-                    public void onCancle() {
-
-                    }
-                });
-
-                myDialog.show(getFragmentManager(),"mydialog");
+                JiaXiaoFragment jiaXiaoFragment = findFragment(JiaXiaoFragment.class);
+                if (jiaXiaoFragment == null) {
+                    jiaXiaoFragment = (JiaXiaoFragment) JiaXiaoFragment.newInstance();
+                }
+                start(jiaXiaoFragment);
 
                 break;
             case R.id.system_setting:
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/JiaXiaoFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/JiaXiaoFragment.java
index 2c09199..454809f 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/JiaXiaoFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/JiaXiaoFragment.java
@@ -1,16 +1,71 @@
 package safeluck.drive.evaluation.fragment;
 
+import android.graphics.Color;
 import android.os.Bundle;
 
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
 import android.view.LayoutInflater;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import com.esri.arcgisruntime.ArcGISRuntimeEnvironment;
+import com.esri.arcgisruntime.arcgisservices.ArcGISMapServiceInfo;
+import com.esri.arcgisruntime.data.ServiceFeatureTable;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.geometry.PointCollection;
+import com.esri.arcgisruntime.geometry.Polygon;
+import com.esri.arcgisruntime.geometry.Polyline;
+import com.esri.arcgisruntime.geometry.SpatialReference;
+import com.esri.arcgisruntime.geometry.SpatialReferences;
+import com.esri.arcgisruntime.layers.ArcGISMapImageLayer;
+import com.esri.arcgisruntime.layers.ArcGISMapImageSublayer;
+import com.esri.arcgisruntime.layers.ArcGISSublayer;
+import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
+import com.esri.arcgisruntime.layers.ArcGISVectorTiledLayer;
+import com.esri.arcgisruntime.layers.FeatureLayer;
+import com.esri.arcgisruntime.layers.MobileBasemapLayer;
+import com.esri.arcgisruntime.layers.SublayerList;
+import com.esri.arcgisruntime.loadable.LoadStatus;
+import com.esri.arcgisruntime.loadable.LoadStatusChangedEvent;
+import com.esri.arcgisruntime.loadable.LoadStatusChangedListener;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.Viewpoint;
+import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener;
+import com.esri.arcgisruntime.mapping.view.Graphic;
+import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
+import com.esri.arcgisruntime.mapping.view.MapView;
+import com.esri.arcgisruntime.portal.Portal;
+import com.esri.arcgisruntime.portal.PortalItem;
+import com.esri.arcgisruntime.symbology.LineSymbol;
+import com.esri.arcgisruntime.symbology.SimpleFillSymbol;
+import com.esri.arcgisruntime.symbology.SimpleLineSymbol;
+import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.google.gson.Gson;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.app;
+import safeluck.drive.evaluation.bean.GisCarModel;
+import safeluck.drive.evaluation.util.CThreadPoolExecutor;
+import safeluck.drive.evaluation.util.FileUtil;
+import safeluck.drive.evaluation.util.Utils;
 
 /**椹炬牎淇℃伅UI
  * MyApplication2
@@ -22,13 +77,344 @@
     public static SupportFragment newInstance(){
         return new JiaXiaoFragment();
     }
+    private static final String TAG = JiaXiaoFragment.class.getSimpleName();
 
+    private MapView mMapView ;
+    private static final int MSG_CAR = 100;
+    double yaw = 0;
+
+    GraphicsOverlay mGraphicsOverlay;
+    private int count =0;
+    private double startX = -8647.003,startY = 14590.7213;
+    private Handler mHandler = new Handler(){
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what){
+                case MSG_CAR:
+                    count++;
+                    yaw +=count;
+                    addGraphicLayer(yaw,startX+count,startY+count);
+                    sendEmptyMessageDelayed(MSG_CAR,1000);
+                    break;
+            }
+        }
+    };
+
+    PointCollection mPointCollection = new PointCollection(SpatialReference.create(4544));
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
 
 
-        View view = inflater.inflate(R.layout.layout_jiaxiao_info,container,false);
+        View view = inflater.inflate(R.layout.layout_arc_gis,container,false);
+        mMapView = view.findViewById(R.id.mapView);
+        setupMap();
+        addTrailheadsLayer();
+//        addImageLayer();
+
+        mHandler.sendEmptyMessageDelayed(MSG_CAR,1000);
+
+//        drawPolygon();
         return view;
     }
+    private SublayerList mSublayersList;
+    private void setupMap() {
+        if (mMapView != null) {
+            ArcGISMap map = new ArcGISMap();
+            mMapView.setMap(map);
+
+            mGraphicsOverlay= new GraphicsOverlay();
+            mMapView.getGraphicsOverlays().add(mGraphicsOverlay);
+
+        }
+    }
+    private void addTrailheadsLayer() {
+
+
+
+        String url = "http://192.168.0.47:6080/arcgis/rest/services/%E5%9C%9F%E4%B8%BB%E8%80%83%E5%9C%BA/MapServer/";
+        ArcGISMapImageLayer arcGISMapImageLayer = new ArcGISMapImageLayer(url);
+        arcGISMapImageLayer.loadAsync();
+        arcGISMapImageLayer.addLoadStatusChangedListener(loadStatusChangedEvent -> {
+            if (loadStatusChangedEvent.getNewLoadStatus() == LoadStatus.LOADED){
+                SublayerList tables = arcGISMapImageLayer.getSublayers();
+
+                Log.i(TAG,"ServiceFeatureTables size = "+tables.size());
+                for (int i = tables.size()-1; i >= 0; i--) {
+        ServiceFeatureTable serviceFeatureTable = new ServiceFeatureTable(url+String.valueOf(i));
+
+        FeatureLayer featureLayer = new FeatureLayer(serviceFeatureTable);
+        ArcGISMap map = mMapView.getMap();
+        map.getOperationalLayers().add(featureLayer);
+    }
+            }
+        });
+
+ 
+
+
+
+    }
+
+    private void addGraphicLayer(double yaw,double x,double y){
+
+        SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.rgb(232,0,0), 0.5f);
+        SimpleFillSymbol simpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.argb(255,232,0,0), lineSymbol);
+        PointCollection points = new PointCollection(SpatialReference.create(4544));
+        CThreadPoolExecutor.runInBackground(new Runnable() {
+            @Override
+            public void run() {
+                StringBuffer buffer= FileUtil.readAssetTxtFile(app.getAppContext(),"giscar.json");
+                Log.i(TAG,"giscar="+buffer.toString());
+                GisCarModel gisCarModel= new Gson().fromJson(buffer.toString(),GisCarModel.class);
+//                List<safeluck.drive.evaluation.bean.Point> carNew=Utils.getCarPoint(0,45,new safeluck.drive.evaluation.bean.Point(-8633.77199999988,14471.793700000271));
+                List<safeluck.drive.evaluation.bean.Point> carNew=Utils.getCarPoint(0,yaw,new safeluck.drive.evaluation.bean.Point(x,y));
+                List<Integer> bodys =gisCarModel.getBody();
+                for (int i = 0; i <bodys.size(); i++) {
+                    Log.i(TAG,String.format("杞﹁韩鐐逛綅缃細%d",bodys.get(i)));
+                    Log.i(TAG,"鏂板潗鏍�"+carNew.get(bodys.get(i)).getX()+" Y="+carNew.get(bodys.get(i)).getY());
+                    points.add(carNew.get(bodys.get(i)).getX(),carNew.get(bodys.get(i)).getY());
+                }
+
+                CThreadPoolExecutor.runOnMainThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        Polygon polygon = new Polygon(points);
+
+                        Graphic graphic = new Graphic(polygon,simpleFillSymbol);
+                        mGraphicsOverlay.getGraphics().clear();
+                        mGraphicsOverlay.getGraphics().add(graphic);
+
+                        drawrightCenterGls(gisCarModel,carNew);
+
+                        drawPoint(new Point(x,y));
+
+                    }
+                });
+
+
+            }
+
+
+        });
+    }
+
+    private void drawPoint(Point point) {
+        SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.WHITE, 5);
+
+        Graphic graphic = new Graphic(point, simpleMarkerSymbol);
+        mGraphicsOverlay.getGraphics().add(graphic);
+    }
+
+    private void drawrightCenterGls(GisCarModel gisCarModel, List<safeluck.drive.evaluation.bean.Point> carNew) {
+
+        SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.BLACK, 0.5f);
+        SimpleFillSymbol simpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.argb(255,0,0,0), lineSymbol);
+        PointCollection points = new PointCollection(SpatialReference.create(4544));
+
+        drawGlses(carNew, simpleFillSymbol, points, gisCarModel.getRight_center_glass());
+        drawGlses(carNew, simpleFillSymbol, points, gisCarModel.getLeft_center_glass());
+
+        List<Integer> frontCLs = new ArrayList<>();
+        frontCLs.addAll(gisCarModel.getLeft_front_glass());
+        frontCLs.addAll(gisCarModel.getRight_front_glass());
+        drawGlses(carNew, simpleFillSymbol, points, frontCLs);
+
+        frontCLs.clear();
+        frontCLs.addAll(gisCarModel.getLeft_rear_glass());
+        frontCLs.addAll(gisCarModel.getRight_rear_glass());
+        drawGlses(carNew, simpleFillSymbol, points, frontCLs);
+
+
+    }
+
+    private void drawGlses(List<safeluck.drive.evaluation.bean.Point> carNew, SimpleFillSymbol simpleFillSymbol, PointCollection points, List<Integer> left_center_glass) {
+        List<Integer> leftCenterGls = left_center_glass;
+        points.clear();
+        for (int i = 0; i < leftCenterGls.size(); i++) {
+            int pos = leftCenterGls.get(i);
+            points.add(carNew.get(pos).getX(), carNew.get(pos).getY());
+
+        }
+
+        Polygon polygon1 = new Polygon(points);
+        Graphic graphic1 = new Graphic(polygon1, simpleFillSymbol);
+        mGraphicsOverlay.getGraphics().add(graphic1);
+    }
+
+    /**
+     * 缁樺埗闈�
+     */
+    private void drawPolygon() {
+//        List<Point> points = new ArrayList<>();
+//        points.add(new Point(21.21,21.32, SpatialReference.create("4544")));
+//        PointCollection pointCollection = new PointCollection(points);
+
+        mMapView.setOnTouchListener(new DefaultMapViewOnTouchListener(_mActivity, mMapView) {
+            @Override
+            public boolean onSingleTapConfirmed(MotionEvent e) {
+
+                mGraphicsOverlay.getGraphics().clear();
+                Point point = mMapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+                mPointCollection.add(point);
+
+                Polygon polygon = new Polygon(mPointCollection);
+
+                if (mPointCollection.size() == 1) {
+                    SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10);
+                    Graphic pointGraphic = new Graphic(point, simpleMarkerSymbol);
+                    mGraphicsOverlay.getGraphics().add(pointGraphic);
+                }
+
+                SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.GREEN, 3.0f);
+                SimpleFillSymbol simpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.parseColor("#33e97676"), lineSymbol);
+                Graphic graphic = new Graphic(polygon, simpleFillSymbol);
+                mGraphicsOverlay.getGraphics().add(graphic);
+
+                return super.onSingleTapConfirmed(e);
+            }
+        });
+    }
+
+    /**
+     * 缁樺埗鐐�
+     */
+    private void drawPoint() {
+        mMapView.setOnTouchListener(new DefaultMapViewOnTouchListener(_mActivity, mMapView) {
+            @Override
+            public boolean onSingleTapConfirmed(MotionEvent e) {
+                Point clickPoint = mMapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+                SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 20);
+                Graphic graphic = new Graphic(clickPoint, simpleMarkerSymbol);
+                //娓呴櫎涓婁竴涓偣
+                mGraphicsOverlay.getGraphics().clear();
+                mGraphicsOverlay.getGraphics().add(graphic);
+
+                //浣跨敤娓叉煋鍣�
+                //                Graphic graphic1 = new Graphic(clickPoint);
+                //                SimpleRenderer simpleRenderer = new SimpleRenderer(simpleMarkerSymbol);
+                //                mGraphicsOverlay.setRenderer(simpleRenderer);
+                //                mGraphicsOverlay.getGraphics().clear();
+                //                mGraphicsOverlay.getGraphics().add(graphic1);
+
+                return super.onSingleTapConfirmed(e);
+            }
+        });
+    }
+
+    /**
+     * 缁樺埗绾�
+     */
+    private void drawPolyline() {
+        mMapView.setOnTouchListener(new DefaultMapViewOnTouchListener(_mActivity, mMapView) {
+            @Override
+            public boolean onSingleTapConfirmed(MotionEvent e) {
+                Point point = mMapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+                mPointCollection.add(point);
+
+                Polyline polyline = new Polyline(mPointCollection);
+
+                //鐐�
+                SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10);
+                Graphic pointGraphic = new Graphic(point, simpleMarkerSymbol);
+                mGraphicsOverlay.getGraphics().add(pointGraphic);
+
+                //绾�
+                SimpleLineSymbol simpleLineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.parseColor("#FC8145"), 3);
+                Graphic graphic = new Graphic(polyline, simpleLineSymbol);
+                mGraphicsOverlay.getGraphics().add(graphic);
+
+                return super.onSingleTapConfirmed(e);
+            }
+        });
+    }
+
+private void addImageLayer(){
+            String url = "http://192.168.0.47:6080/arcgis/rest/services/%E5%9C%9F%E4%B8%BB%E8%80%83%E5%9C%BA/MobileServer";
+    // create a MapImageLayer with dynamically generated map images
+    final ArcGISMapImageLayer mapImageLayer = new ArcGISMapImageLayer(url);
+//    mapImageLayer.loadAsync();
+    // Add a listener that is invoked when layer loading has completed.
+    mapImageLayer.addDoneLoadingListener(() -> {
+        if (mapImageLayer.getLoadStatus() == LoadStatus.LOADED) {
+            ArcGISMapServiceInfo mapServiceInfo = mapImageLayer.getMapServiceInfo();
+
+            Log.i(TAG, "addImageLayer: 鍔犺浇瀹屾垚銆傘�傘��");
+
+            // work with map service info here
+        }
+    });
+    // create an empty map instance
+    ArcGISMap map = new ArcGISMap();
+    // add map image layer as operational layer
+    map.getOperationalLayers().add(mapImageLayer);
+    // set the map to be displayed in this view
+    mMapView.setMap(map);
+}
+
+private void addtiledLayer(){
+//    String url = "http://192.168.0.47:6080/arcgis/rest/services/%E5%9C%9F%E4%B8%BB%E8%80%83%E5%9C%BA/MapServer";
+    String url = "http://192.168.0.47:6080/arcgis/manager/service.html?name=SampleWorldCities.MapServer";
+    // create a MapImageLayer with dynamically generated map images
+    final ArcGISTiledLayer arcGISTiledLayer = new ArcGISTiledLayer(url);
+    // Add a listener that is invoked when layer loading has completed.
+    arcGISTiledLayer.addDoneLoadingListener(() -> {
+        if (arcGISTiledLayer.getLoadStatus() == LoadStatus.LOADED) {
+            // work with map service info here
+            Log.i(TAG,"ArcGISTiledLayer鍔犺浇瀹屾垚");
+        }
+    });
+    Basemap basemap = new Basemap(arcGISTiledLayer);
+    // create a map with the basemap
+    ArcGISMap arcGISMap = new ArcGISMap(basemap);
+    // set the map to be displayed in this view
+    mMapView.setMap(arcGISMap);
+
+}
+private void addVectorTiledLayer(){
+    String url = "http://192.168.0.47:6080/arcgis/rest/services/%E5%9C%9F%E4%B8%BB%E8%80%83%E5%9C%BA/MapServer";
+    // create a MapImageLayer with dynamically generated map images
+    final ArcGISVectorTiledLayer mVectorTiledLayer = new ArcGISVectorTiledLayer(url);
+    // Add a listener that is invoked when layer loading has completed.
+    mVectorTiledLayer.addDoneLoadingListener(() -> {
+        if (mVectorTiledLayer.getLoadStatus() == LoadStatus.LOADED) {
+            // work with map service info here
+            Log.i(TAG,"ArcGISTiledLayer鍔犺浇瀹屾垚");
+        }
+    });
+    Basemap basemap = new Basemap(mVectorTiledLayer);
+    // create a map with the basemap
+    ArcGISMap arcGISMap = new ArcGISMap(basemap);
+
+    Viewpoint vp = new Viewpoint(47.606726, -122.335564, 72223.819286);
+    arcGISMap.setInitialViewpoint(vp);
+
+    // set the map to be displayed in this view
+    mMapView.setMap(arcGISMap);
+
+}
+
+    @Override
+    public void onPause() {
+        if (mMapView != null) {
+            mMapView.pause();
+        }
+        super.onPause();
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        if (mMapView != null) {
+            mMapView.resume();
+        }
+    }
+
+    @Override
+    public void onDetach() {
+        if (mMapView != null) {
+            mMapView.dispose();
+        }
+        super.onDetach();
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/VPFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/VPFragment.java
index b4725bb..9bdb8f5 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/VPFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/VPFragment.java
@@ -7,18 +7,13 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.anyun.exam.lib.MyLog;
-import com.tencent.smtt.export.external.interfaces.SslError;
-import com.tencent.smtt.export.external.interfaces.SslErrorHandler;
-import com.tencent.smtt.export.external.interfaces.WebResourceRequest;
-import com.tencent.smtt.export.external.interfaces.WebResourceResponse;
-import com.tencent.smtt.sdk.WebSettings;
-import com.tencent.smtt.sdk.WebView;
-import com.tencent.smtt.sdk.WebViewClient;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
@@ -71,25 +66,7 @@
                 webSettings.setJavaScriptEnabled(true);
         webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
         webView.loadUrl(url);
-        webView.setWebViewClient(new WebViewClient(){
-            @Override
-            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
-                view.loadUrl(url);
-                return true;
-            }
 
-            @Override
-            public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
-                super.onReceivedHttpError(view, request, errorResponse);
-                Log.i(TAG,errorResponse.getReasonPhrase());
-            }
-
-            @Override
-            public void onReceivedSslError(WebView webView, SslErrorHandler sslErrorHandler, SslError sslError) {
-                super.onReceivedSslError(webView, sslErrorHandler, sslError);
-                sslErrorHandler.proceed();
-            }
-        });
         return webView;
     }
     public static void hookWebView() {
diff --git a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
index b7e43f5..2c1ab57 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
+++ b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
@@ -8,6 +8,7 @@
 
 import com.anyun.exam.lib.MyLog;
 import com.anyun.exam.lib.util.ByteUtil;
+import com.google.gson.Gson;
 import com.safeluck.aykj.utils.BytesUtils;
 
 import java.io.File;
@@ -37,7 +38,11 @@
 import javax.crypto.spec.DESKeySpec;
 import javax.crypto.spec.IvParameterSpec;
 
+import safeluck.drive.evaluation.app;
+import safeluck.drive.evaluation.bean.CarModel;
+import safeluck.drive.evaluation.bean.GisCarModel;
 import safeluck.drive.evaluation.bean.Point;
+import safeluck.drive.evaluation.httpmodule.GsonConverterFactory;
 
 import static java.lang.Math.cos;
 import static java.lang.Math.pow;
@@ -656,4 +661,84 @@
         }
 
     }
+
+
+    public static List<CarModel> getCarModelData(Point basePoint, List<Integer> axial, List<Point> car){
+        List<CarModel> carModelList = new ArrayList<>();
+        double C02= (car.get(0).getX()-basePoint.getX())*(car.get(0).getX()-basePoint.getX()) + (car.get(0).getY()-basePoint.getY())*(car.get(0).getY()-basePoint.getY());
+        double c0 = Math.sqrt(C02);
+        CarModel carModel = new CarModel();
+        carModel.setDistance(c0);
+        carModel.setAngle(0.0);
+        carModelList.add(carModel);
+
+        for (int i = 1; i < car.size(); ++i) {
+            double dis2 = (car.get(i).getX()-basePoint.getX())*(car.get(i).getX()-basePoint.getX()) + (car.get(i).getY()-basePoint.getY())*(car.get(i).getY()-basePoint.getY());
+            double dis = Math.sqrt(dis2);
+
+            CarModel c =new CarModel();
+            c.setDistance(dis);
+
+            c.setAngle(180 * Math.acos((dis2 + C02 - ((car.get(i).getX()-car.get(0).getX())*(car.get(i).getX()-car.get(0).getX()) +
+                    (car.get(i).getY()-car.get(0).getY())*(car.get(i).getY()-car.get(0).getY())))/(2*c0*dis)) / Math.PI);
+
+            if (i > axial.get(1)){
+                c.setAngle( 360.0 - c.getAngle());
+            }
+            carModelList.add(c);
+        }
+        return carModelList;
+    }
+
+    public static List<Point> getCarPoint(double pitch,double yaw,Point point){
+        pitch = 0;
+//        yaw = 45;
+        Point main_ant = point;
+        List<Point> carNew = new ArrayList<>();
+        StringBuffer buffer=FileUtil.readAssetTxtFile(app.getAppContext(),"giscar.json");
+        Log.i(TAG,"giscar="+buffer.toString());
+        GisCarModel gisCarModel= new Gson().fromJson(buffer.toString(),GisCarModel.class);
+        List<Point> pointList = new ArrayList<Point>() ;
+        for (int i = 0; i < gisCarModel.getPoint().size(); i++) {
+                double x= gisCarModel.getPoint().get(i);
+                i++;
+                double y= gisCarModel.getPoint().get(i);
+                pointList.add(new Point(x,y));
+
+
+
+        }
+        double mainAnt_x = gisCarModel.getMain_ant().get(0);
+        double mainAnt_y = gisCarModel.getMain_ant().get(1);
+        List<CarModel> carModels = getCarModelData(new Point(mainAnt_x, mainAnt_y),gisCarModel.getAxial(),pointList);
+        if (carModels != null && carModels.size()>0){
+
+            for (int i = 0; i < carModels.size(); ++i) {
+                Log.i(TAG,String.format("浣嶇疆[%d],distance=%f,angle=%f",i,carModels.get(i).getDistance(),carModels.get(i).getAngle()));
+                double qrx = carModels.get(i).getDistance() * Math.sin(carModels.get(i).getAngle() * Math.PI / 180);
+                double qry = carModels.get(i).getDistance() * Math.cos(carModels.get(i).getAngle() * Math.PI / 180) * Math.cos(pitch * Math.PI / 180);
+
+                double projectDistance = Math.sqrt(Math.pow(qrx, 2) + Math.pow(qry, 2));
+                double projectAngle = Math.acos(qry / projectDistance) * 180 / Math.PI;
+
+                if (carModels.get(i).getAngle() > 180) {
+                    projectAngle = 360 - projectAngle;
+                }
+
+                double X =
+                        projectDistance * Math.sin(yaw * Math.PI / 180) * Math.cos(projectAngle * Math.PI / 180) -
+                                projectDistance * Math.cos(yaw * Math.PI / 180) * Math.sin(projectAngle * Math.PI / 180) +
+                                main_ant.getX();
+                double Y =
+                        projectDistance * Math.sin(yaw * Math.PI / 180) * Math.sin(projectAngle * Math.PI / 180) +
+                                projectDistance * Math.cos(yaw * Math.PI / 180) * Math.cos(projectAngle * Math.PI / 180) +
+                                main_ant.getY();
+                carNew.add(new Point(X,Y));
+
+            }
+        }
+        return carNew;
+
+
+    }
 }
diff --git a/app/src/main/res/layout/layout_arc_gis.xml b/app/src/main/res/layout/layout_arc_gis.xml
new file mode 100644
index 0000000..8f56f7d
--- /dev/null
+++ b/app/src/main/res/layout/layout_arc_gis.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/activity_main"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+   >
+
+    <com.esri.arcgisruntime.mapping.view.MapView
+        android:id="@+id/mapView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" >
+    </com.esri.arcgisruntime.mapping.view.MapView>
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_select_dlg.xml b/app/src/main/res/layout/layout_select_dlg.xml
index a12674a..088f070 100644
--- a/app/src/main/res/layout/layout_select_dlg.xml
+++ b/app/src/main/res/layout/layout_select_dlg.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="210dp"
+    android:layout_width="220dp"
 
     android:layout_height="210dp"
     android:gravity="center"
@@ -13,12 +13,14 @@
     android:layout_height="wrap_content"
     android:textSize="@dimen/network_train_textsize20px"
     android:textColor="@android:color/white"
-    android:layout_margin="@dimen/ui_margin_10dp"
+    android:padding="@dimen/ui_margin_10dp"
+    android:background="@drawable/bg_select_dlg"
     android:text="璇烽�夋嫨涓�涓」鐩細"/>
         <RadioGroup
-            android:background="@drawable/bg_rgb_dlg"
+
             android:layout_width="match_parent"
             android:id="@+id/radiogroub"
+            android:layout_marginRight="@dimen/ui_margin_10dp"
             android:layout_height="wrap_content">
             <RadioButton
                 android:layout_width="match_parent"
@@ -39,12 +41,12 @@
 
         </RadioGroup>
         <Button
+            android:background="@drawable/bg_select_dlg"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginTop="@dimen/ui_margin_10dp"
             android:text="纭畾"
             android:textSize="@dimen/network_train_textsize22px"
-            android:background="@null"
             android:textColor="@android:color/white"
             android:id="@+id/btn_sure_"/>
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/profile_layout.xml b/app/src/main/res/layout/profile_layout.xml
index 93d32d4..acb67a2 100644
--- a/app/src/main/res/layout/profile_layout.xml
+++ b/app/src/main/res/layout/profile_layout.xml
@@ -8,6 +8,7 @@
 <LinearLayout android:layout_width="457dp"
     android:layout_height="105dp"
     android:orientation="horizontal"
+    android:layout_weight="3"
     android:background="@drawable/stu_score_bg"
     >
 
@@ -69,9 +70,10 @@
 </LinearLayout>
     <LinearLayout android:layout_width="166dp"
         android:layout_height="105dp"
+        android:layout_weight="1"
         android:orientation="vertical"
         android:id="@+id/view_map"
-        android:layout_marginLeft="@dimen/ui_margin_10dp"
+        android:layout_marginLeft="@dimen/ui_margin_35dp"
         android:background="@drawable/view_map_bg"
         >
 <ImageView
@@ -96,7 +98,8 @@
     <LinearLayout
         android:layout_width="143dp"
         android:layout_height="105dp"
-        android:layout_marginLeft="10dp"
+        android:layout_weight="1"
+        android:layout_marginLeft="@dimen/ui_margin_35dp"
         android:orientation="vertical"
     >
 <LinearLayout
@@ -130,7 +133,7 @@
        />
 </LinearLayout>
         <Button
-            android:layout_width="match_parent"
+            android:layout_width="143dp"
             android:layout_height="match_parent"
             android:textColor="#ffffff"
             android:background="@drawable/start_exam_bg"
diff --git a/app/src/main/res/values/app_settings.xml b/app/src/main/res/values/app_settings.xml
new file mode 100644
index 0000000..9a8f887
--- /dev/null
+++ b/app/src/main/res/values/app_settings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="arcgis_license_key">YOUR_LICENSE_KEY</string>
+</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 3267616..0252eb5 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -20,4 +20,5 @@
     <dimen name="ui_margin_50dp">50dp</dimen>
     <dimen name="ui_margin_40dp">40dp</dimen>
     <dimen name="ui_margin_45dp">45dp</dimen>
+    <dimen name="ui_margin_35dp">35dp</dimen>
 </resources>
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 5a5a0d6..ee4e1c6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,6 +7,7 @@
         jcenter()
         
     }
+
     ext{
         roomVersion  ='2.2.1'
         workVersion  ='2.2.0'
@@ -28,6 +29,9 @@
     repositories {
         google()
         jcenter()
+        maven {
+            url 'https://esri.bintray.com/arcgis'
+        }
         
     }
 }
diff --git a/lib/src/main/java/com/anyun/exam/lib/SvrManager.java b/lib/src/main/java/com/anyun/exam/lib/SvrManager.java
index f72ef4b..1583bb4 100644
--- a/lib/src/main/java/com/anyun/exam/lib/SvrManager.java
+++ b/lib/src/main/java/com/anyun/exam/lib/SvrManager.java
@@ -23,6 +23,7 @@
     private static final String TAG = "SvrManager";
     private MyServiceConn conn;
     private Intent intent;
+    private Context mContext;
 
 
     private IAYExamListener mCallback;
@@ -55,6 +56,8 @@
             }
             remoteInterface.asBinder().unlinkToDeath(mDeathRecipient,0);
             remoteInterface = null;
+            MyLog.i("妫�娴嬪埌杩滅▼鏈嶅姟寮傚父姝讳骸锛岄噸鏂扮粦瀹�");
+            bindRemoteService(mContext);
         }
     };
 
@@ -110,6 +113,7 @@
 
     }
     public void bindRemoteService(Context mContext){
+        this.mContext = mContext;
         intent = new Intent(mContext,RemoteService.class);
         conn = new MyServiceConn();
         mContext.bindService(intent,conn, Context.BIND_AUTO_CREATE);

--
Gitblit v1.8.0