From 1b7c87b81313bca47a6847f203be329a63decff3 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期四, 16 四月 2020 18:15:05 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/endian11/DriveJudge

---
 app/src/main/res/drawable/qrcode.jpg                                            |    0 
 app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java          |   21 ++
 .gitignore                                                                      |    6 
 app/src/androidTest/java/safeluck/drive/evaluation/ExampleInstrumentedTest.java |    5 
 app/src/main/res/values/styles.xml                                              |    5 
 app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0204.java  |    2 
 lib/src/main/cpp/test_items/area_exam.cpp                                       |    1 
 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java         |   64 +++--
 app/src/main/java/safeluck/drive/evaluation/customview/LoadProgressDialog.java  |   73 +++++++
 app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0202.java  |   16 +
 app/src/main/res/drawable/anim_loading.xml                                      |    7 
 app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0002.java  |    4 
 app/src/main/java/safeluck/drive/evaluation/app.java                            |   13 -
 app/src/main/res/drawable/anyunlog.jpg                                          |    0 
 app/src/main/res/layout/layout_dialog_loading.xml                               |   40 ++++
 app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java          |   22 -
 app/src/main/res/drawable/dialog_round.xml                                      |    6 
 app/src/main/java/safeluck/drive/evaluation/customview/QRCodeDialog.java        |  100 ++++++++++
 app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0203.java  |    1 
 app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java  |  110 +++++-----
 app/src/main/java/safeluck/drive/evaluation/fragment/SetArgumentsFragment.java  |   58 ++---
 app/src/main/res/layout/layout_dialog_qrcode.xml                                |   36 +++
 app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0206.java  |    2 
 app/src/main/res/drawable/icon_loading.png                                      |    0 
 24 files changed, 429 insertions(+), 163 deletions(-)

diff --git a/.gitignore b/.gitignore
index 2b75303..c580c08 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,9 @@
 /build
 /captures
 .externalNativeBuild
+*.ninja
+lib/.cxx/cmake/debug
+signal_config_file.json.orig
+lib/.cxx/cmake
+ndk_locator_record.json
+misc.xml
diff --git a/app/src/androidTest/java/safeluck/drive/evaluation/ExampleInstrumentedTest.java b/app/src/androidTest/java/safeluck/drive/evaluation/ExampleInstrumentedTest.java
index 30135cd..9357019 100644
--- a/app/src/androidTest/java/safeluck/drive/evaluation/ExampleInstrumentedTest.java
+++ b/app/src/androidTest/java/safeluck/drive/evaluation/ExampleInstrumentedTest.java
@@ -1,8 +1,9 @@
 package safeluck.drive.evaluation;
 
 import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index dedd39a..6867cfd 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -10,10 +10,8 @@
 
 
 import androidx.annotation.NonNull;
-import androidx.lifecycle.Observer;
 import androidx.work.Data;
 import androidx.work.OneTimeWorkRequest;
-import androidx.work.WorkInfo;
 import androidx.work.WorkManager;
 
 import com.anyun.exam.lib.AYSdk;
@@ -25,18 +23,15 @@
 import com.anyun.exam.lib.MyLog;
 import com.anyun.exam.lib.crash.CrashHandler;
 import com.facebook.stetho.Stetho;
-import com.google.gson.Gson;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
-import com.safeluck.aykj.utils.BytesUtils;
 
 
 import org.json.JSONException;
 import org.json.JSONObject;
 
 import java.util.Date;
-import java.util.Random;
 
 import safeluck.drive.evaluation.DB.WorkRoomDataBase;
 import safeluck.drive.evaluation.DB.appstatusdb.AppStatusWorker;
@@ -47,7 +42,6 @@
 import safeluck.drive.evaluation.DB.failitems.FailedProj;
 import safeluck.drive.evaluation.DB.failitems.LuKaoFailedProj;
 import safeluck.drive.evaluation.DB.gps.GpsInfoWorker;
-import safeluck.drive.evaluation.DB.rtktb.RTKConfig;
 import safeluck.drive.evaluation.DB.rtktb.RTKConfigUpdateWorker;
 import safeluck.drive.evaluation.bean.ExamPlatformData;
 import safeluck.drive.evaluation.cEventCenter.CEventCenter;
@@ -583,12 +577,7 @@
                             AYSdk.getInstance().sendCmd(Constant.PUSH_MAP_INFO,buffer.toString());
                         }else{
                             MyLog.d(TAG,String.format("鍦板浘妯″瀷鏈嫹鍏%s]鐩綍涓�", Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+getApplicationContext().getPackageName()));
-                            CThreadPoolExecutor.runOnMainThread(new Runnable() {
-                                @Override
-                                public void run() {
-                                    Toast.makeText(getAppContext(), String.format("鍦板浘妯″瀷鏈嫹鍏%s]鐩綍涓�", Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+getApplicationContext().getPackageName()), Toast.LENGTH_SHORT).show();
-                                }
-                            });
+                            CThreadPoolExecutor.runOnMainThread(() -> Toast.makeText(getAppContext(), String.format("鍦板浘妯″瀷鏈嫹鍏%s]鐩綍涓�", Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+getApplicationContext().getPackageName()), Toast.LENGTH_SHORT).show());
 
                         }
 
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 b586d21..5940779 100644
--- a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
@@ -140,6 +140,7 @@
     private int rtkPort = 12125;
     private String rtkIP = "47.93.80.84";
     public final int MAX_SCORE_DUCT = 20;
+    private String coachID;//鏁欑粌鍛樿韩浠借瘉鍙风爜
 
     public static ExamPlatformData getInstance() {
         return ourInstance;
@@ -207,7 +208,10 @@
     }
 
 
-
+    /**
+     * 鑾峰彇瀛﹀憳ID锛堣韩浠借瘉锛�
+     * @return
+     */
     public String getID() {
         return id;
     }
@@ -388,4 +392,19 @@
         return roadmapPath;
     }
 
+    /**
+     * 璁剧疆淇濆瓨鏁欑粌鍛樿韩浠借瘉鍙�
+     * @param id
+     */
+    public void setCoachID(String id) {
+        this.coachID = id;
+    }
+
+    /**
+     * 鑾峰彇
+     * @return 鏁欑粌鍛樿韩浠借瘉
+     */
+    public String getCoachID() {
+        return coachID;
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/customview/LoadProgressDialog.java b/app/src/main/java/safeluck/drive/evaluation/customview/LoadProgressDialog.java
new file mode 100644
index 0000000..b89fcda
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/customview/LoadProgressDialog.java
@@ -0,0 +1,73 @@
+package safeluck.drive.evaluation.customview;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
+
+import safeluck.drive.evaluation.R;
+
+/**
+ * @ProjectName: DriveJudge
+ * @Package: safeluck.drive.evaluation.customview
+ * @ClassName: LoadProgressDialog
+ * @Description: java绫讳綔鐢ㄦ弿杩�
+ * @Author: 鏉庡崰浼�
+ * @CreateDate: 2020-04-16 09:57
+ * @UpdateUser: 鏇存柊鑰�
+ * @UpdateDate: 2020-04-16 09:57
+ * @UpdateRemark: 鏇存柊璇存槑
+ * @Version: 1.0
+ */
+
+public class LoadProgressDialog extends DialogFragment {
+    private String message="姝e湪鍔犺浇...";
+    private boolean canCancel= false;
+    private TextView textView;
+
+    private Handler handler = new Handler(Looper.getMainLooper()){
+        @Override
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+            if (msg.what==1)
+            dismiss();
+        }
+    };
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        View view = inflater.inflate(R.layout.layout_dialog_loading,container,false);
+        initView(view);
+        setCancelable(canCancel);
+        Message message = Message.obtain();
+        message.what = 1;
+        handler.sendMessageDelayed(message,10*1000);
+        return view;
+    }
+
+    private void initView(View view) {
+        textView =view.findViewById(R.id.tv_message);
+    }
+
+    public static LoadProgressDialog newInstance(String message){
+        LoadProgressDialog fragment = new LoadProgressDialog();
+        Bundle bundle = new Bundle();
+        bundle.putString("tittle", message);
+        fragment.setArguments(bundle);
+        return fragment;
+    }
+
+    @Override
+    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+        message = getArguments().getString("title");
+        textView.setText(message);
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/customview/QRCodeDialog.java b/app/src/main/java/safeluck/drive/evaluation/customview/QRCodeDialog.java
new file mode 100644
index 0000000..8fd32bc
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/customview/QRCodeDialog.java
@@ -0,0 +1,100 @@
+package safeluck.drive.evaluation.customview;
+
+import android.app.Dialog;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+
+import java.nio.charset.Charset;
+
+import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.util.QRCodeUtil;
+
+/**
+ * @ProjectName: DriveJudge
+ * @Package: safeluck.drive.evaluation.customview
+ * @ClassName: LoadProgressDialog
+ * @Description: java绫讳綔鐢ㄦ弿杩�
+ * @Author: 鏉庡崰浼�
+ * @CreateDate: 2020-04-16 09:57
+ * @UpdateUser: 鏇存柊鑰�
+ * @UpdateDate: 2020-04-16 09:57
+ * @UpdateRemark: 鏇存柊璇存槑
+ * @Version: 1.0
+ */
+
+public class QRCodeDialog extends DialogFragment {
+    private static final String TAG = "QRCodeDialog";
+    private String message="姝e湪鍔犺浇...";
+    private boolean canCancel= true;
+    private ImageView iv_qrCode;
+    private Button btn;
+    private Bitmap qrBitmap;
+    private Bitmap logobitmap;
+
+
+    private Handler handler = new Handler(Looper.getMainLooper()){
+        @Override
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+            if (msg.what==1)
+            dismiss();
+        }
+    };
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        View view = inflater.inflate(R.layout.layout_dialog_qrcode,container,false);
+        initView(view);
+        setCancelable(canCancel);
+
+        Message message = Message.obtain();
+        message.what = 1;
+        handler.sendMessageDelayed(message,15*1000);
+        return view;
+    }
+
+    private void initView(View view) {
+        Bundle bundle =getArguments();
+        message = bundle.getString("tittle");
+        Log.i(TAG,"meesage="+message);
+        btn = view.findViewById(R.id.btn_qr_sure);
+        iv_qrCode =view.findViewById(R.id.iv_qr_code);
+        logobitmap = BitmapFactory.decodeResource(getResources(),R.drawable.anyunlog);
+        qrBitmap = QRCodeUtil.createQRCodeBitmap(message,640,640,"UTF-8","H",
+                "1", Color.BLACK,Color.WHITE,logobitmap,0.2f,null);
+        iv_qrCode.setImageBitmap(qrBitmap);
+        btn.setOnClickListener(v -> {
+            dismiss();
+        });
+    }
+
+
+    public static QRCodeDialog newInstance(String message){
+        QRCodeDialog fragment = new QRCodeDialog();
+        Bundle bundle = new Bundle();
+        bundle.putString("tittle", message);
+        Log.i(TAG,"messae="+message);
+        fragment.setArguments(bundle);
+        return fragment;
+    }
+
+
+
+}
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 9ba2202..78f59ae 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java
@@ -15,6 +15,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
 
 
 import com.anyun.exam.lib.AYSdk;
@@ -24,6 +25,7 @@
 import safeluck.drive.evaluation.BuildConfig;
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.bean.ExamPlatformData;
+import safeluck.drive.evaluation.customview.LoadProgressDialog;
 
 
 /**
@@ -82,6 +84,8 @@
                     }
                 }
 
+
+
                 break;
             case R.id.network_train:
                 if (ExamPlatformData.getInstance().getTrainingMode()==ExamPlatformData.TRAINING_MODE){
@@ -106,28 +110,12 @@
                     public void onClick(DialogInterface dialog, int which) {
                         _mActivity.finish();
                     }
-                }).setNegativeButton("鍙栨秷", new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
+                }).setNegativeButton("鍙栨秷", (DialogInterface dialog, int which)-> {
                         dialog.dismiss();
-                    }
                 }).show();
-//                    TakePhotoFragment takePhotoFragment = findFragment(TakePhotoFragment.class);
-//                    if (takePhotoFragment == null){
-//                        takePhotoFragment = TakePhotoFragment.newInstance();
-//                    }
-//                    start(takePhotoFragment);
 
                 break;
             case R.id.system_setting:
-                //鎵撳紑杈撳叆瀵嗙爜鐣岄潰
-//                PasswordFragment passwordFragment = findFragment(PasswordFragment.class);
-//                if (passwordFragment == null) {
-//                    passwordFragment = (PasswordFragment) PasswordFragment.newInstance();
-//                    start(passwordFragment);
-//                } else {
-//                    start(passwordFragment);
-//                }
                 BaseSettingFragment sysSetingFragment = findFragment(BaseSettingFragment.class);
                 if (sysSetingFragment == null) {
                     sysSetingFragment = (BaseSettingFragment) BaseSettingFragment.newInstance();
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
index 52acb1b..0966173 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -21,6 +21,7 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProviders;
 import androidx.work.OneTimeWorkRequest;
@@ -58,11 +59,15 @@
 import safeluck.drive.evaluation.cEventCenter.ICEventListener;
 import safeluck.drive.evaluation.customview.ArrowView;
 import safeluck.drive.evaluation.customview.HouseView;
+import safeluck.drive.evaluation.customview.LoadProgressDialog;
 import safeluck.drive.evaluation.customview.MyDialogFragment;
+import safeluck.drive.evaluation.customview.QRCodeDialog;
+import safeluck.drive.evaluation.httpmodule.RetrofitCreator;
 import safeluck.drive.evaluation.im.MessageProcessor;
 import safeluck.drive.evaluation.platformMessage.JKMessage0201;
 import safeluck.drive.evaluation.platformMessage.JKMessage0202;
 import safeluck.drive.evaluation.platformMessage.JKMessage0204;
+import safeluck.drive.evaluation.platformMessage.PlatFormConstant;
 import safeluck.drive.evaluation.util.Utils;
 import safeluck.drive.evaluation.viewmodels.TimeViewModel;
 
@@ -103,11 +108,13 @@
     private FailedProjViewModel failedProjViewModel;
     String icson;//杩斿洖鐨刬c鍗′俊鎭� json
     WokViewModel wokViewModel;
-    private List<SimulateNightBean.QuestionBean> tempQs=  new ArrayList<>();
     private List<Integer> btn_ids = new ArrayList<Integer>();
     public static SupportFragment newInstance() {
         return new NetWorkTrainFragment();
     }
+
+    private String content;//鐢ㄤ互鐢熸垚浜岀淮鐮佺殑鍐呭
+
 
 
     private Handler mHandler = new Handler(new Handler.Callback() {
@@ -484,6 +491,8 @@
                         ExamPlatformData.getInstance().setId(student.getID());
                         tv_sex.setText(getString(R.string.sex)+(student.getSex()==2?"濂�":"鐢�"));
                         tv_start_time.setText(getString(R.string.begin_time)+Utils.formatTimeYYMMDDHHmmSS(student.getBegin_time()));
+                    }else if (!TextUtils.isEmpty(student.getName())&&student.getStu_id()==ExamPlatformData.COACH_ID){
+                        ExamPlatformData.getInstance().setCoachID(student.getID());
                     }
                 }
             }
@@ -559,21 +568,18 @@
         view.findViewById(R.id.btn_return).setOnClickListener(this);
         mListView = view.findViewById(R.id.lv);
         mListView.setFocusable(false);
-        mListView.setOnTouchListener(new View.OnTouchListener() {
-            @Override
-            public boolean onTouch(View v, MotionEvent ev) {
-                switch (ev.getAction()) {
-                    case MotionEvent.ACTION_DOWN:
-                    case MotionEvent.ACTION_MOVE:
-                        mListView.getParent().requestDisallowInterceptTouchEvent(true);
-                        break;
-                    case MotionEvent.ACTION_UP:
-                    case MotionEvent.ACTION_CANCEL:
-                        mListView.getParent().requestDisallowInterceptTouchEvent(false);
-                        break;
-                }
-                return false;
+        mListView.setOnTouchListener((v, ev) -> {
+            switch (ev.getAction()) {
+                case MotionEvent.ACTION_DOWN:
+                case MotionEvent.ACTION_MOVE:
+                    mListView.getParent().requestDisallowInterceptTouchEvent(true);
+                    break;
+                case MotionEvent.ACTION_UP:
+                case MotionEvent.ACTION_CANCEL:
+                    mListView.getParent().requestDisallowInterceptTouchEvent(false);
+                    break;
             }
+            return false;
         });
 
         view.findViewById(R.id.view_map).setOnClickListener(this);
@@ -587,9 +593,8 @@
 
     }
 
-
+private LoadProgressDialog loadProgressDialog;
 MyDialogFragment myDialogFragment;
-    SimulateNightBean simulateNightBean = null;
     @Override
     public void onClick(View v) {
         switch (v.getId()) {
@@ -597,8 +602,6 @@
 
                 clearArrayListResetTotalScore();
 
-                //TODO 鍙戦�丣KMessage0202 缁欏钩鍙帮紝寮�濮嬭�冭瘯
-                final JKMessage0202 jkMessage0202 = new JKMessage0202();
 
                 if (myDialogFragment == null){
                     myDialogFragment = new MyDialogFragment();
@@ -607,44 +610,12 @@
                 myDialogFragment.setCallback(new MyDialogFragment.Callback() {
                     @Override
                     public void changKao() {
-                        exam_type = 2;
-                        ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.EXAMING_MODE);
-                        ExamPlatformData.getInstance().setExamType(exam_type);
-                        examStatusViewModel.updateStartExam(exam_type);
-                        sendExamJson(1,exam_type);
-                        ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭�冭瘯");
-
-                        Date date = new Date();
-                        wokViewModel.updateBeginTime(date.getTime());
-                        jkMessage0202.timeBCD = date;
-                        ExamPlatformData.getInstance().setExam_id(Utils.parseUnsignedInt(String.valueOf(date.getTime()/1000),10));
-
-                        jkMessage0202.exam_id = ExamPlatformData.getInstance().getExam_id();
-
-                        jkMessage0202.curr_exam = 0;
-                        jkMessage0202.mode = ExamPlatformData.getInstance().getExamType()==ExamPlatformData.TRAINING_MODE?1:0;
-                        MessageProcessor.getInstance().sendMessage(jkMessage0202);
+                        sendJK0202(2);
                     }
 
                     @Override
                     public void luKao() {
-                        ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.EXAMING_MODE);
-                        exam_type = 3;
-                        ExamPlatformData.getInstance().setExamType(exam_type);
-                        examStatusViewModel.updateStartExam(exam_type);
-                        sendExamJson(1,exam_type);
-                        ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭�冭瘯");
-
-                        Date date = new Date();
-                        wokViewModel.updateBeginTime(date.getTime());
-                        jkMessage0202.timeBCD = date;
-                        ExamPlatformData.getInstance().setExam_id(Utils.parseUnsignedInt(String.valueOf(date.getTime()/1000),10));
-
-                        jkMessage0202.exam_id = ExamPlatformData.getInstance().getExam_id();
-
-                        jkMessage0202.curr_exam = 1;
-                        jkMessage0202.mode = ExamPlatformData.getInstance().getExamType()==ExamPlatformData.TRAINING_MODE?1:0;
-                        MessageProcessor.getInstance().sendMessage(jkMessage0202);
+                        sendJK0202(3);
 
                     }
                 });
@@ -680,12 +651,37 @@
                 _mActivity.onBackPressed();
                 break;
             case R.id.iv_head:
-                MyLog.i(TAG,"绛惧埌锛岃幏鍙栬韩浠借瘉鐗╃悊鍗″彿");
-                AYSdk.getInstance().sendCmd(Constant.READ_PHYSICAL_ID,"");
-                //TODO 鑾峰緱鐗╃悊鍗″彿 鍙戦�丣KMessage0201缁欏钩鍙帮紝鑾峰彇濮撳悕銆佽韩浠借瘉銆乭ead_url
+                MyLog.i(PlatFormConstant.HTTPTAG,"绛惧埌");
+                loadProgressDialog = LoadProgressDialog.newInstance("璇风◢鍚�...");
+                loadProgressDialog.setStyle(DialogFragment.STYLE_NORMAL,R.style.Dialog_FullScreen);
+                loadProgressDialog.showNow(getFragmentManager(),"loadingdiaolog");
 
+                //浠庢湇鍔″櫒鑾峰彇鐢ㄤ簬鐢熸垚绛惧埌浜岀淮鐮佺殑url
                 break;
         }
+    }
+
+    private void sendJK0202(int type) {
+
+        final JKMessage0202 jkMessage0202 = new JKMessage0202();
+        exam_type = type;
+        ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.EXAMING_MODE);
+        ExamPlatformData.getInstance().setExamType(exam_type);
+        examStatusViewModel.updateStartExam(exam_type);
+        sendExamJson(1,exam_type);
+        ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭�冭瘯");
+
+        Date date = new Date();
+        wokViewModel.updateBeginTime(date.getTime());
+        jkMessage0202.timeBCD = date;
+        ExamPlatformData.getInstance().setExam_id(Utils.parseUnsignedInt(String.valueOf(date.getTime()/1000),10));
+        jkMessage0202.stu_id = ExamPlatformData.getInstance().getID();
+        jkMessage0202.coach_id = ExamPlatformData.getInstance().getCoachID();
+        jkMessage0202.exam_id = ExamPlatformData.getInstance().getExam_id();
+
+        jkMessage0202.curr_exam = (type-2);//  璺熺Щ鍔ㄧ珯鏈嶅姟瀹氫箟鐨勫満鑰冩槸2  锛屽钩鍙版槸0 锛�  绉诲姩绔欒矾鑰冩槸3 锛屽钩鍙版槸1
+        jkMessage0202.mode = ExamPlatformData.getInstance().getTrainingMode()==ExamPlatformData.TRAINING_MODE?1:0;
+        MessageProcessor.getInstance().sendMessage(jkMessage0202);
     }
 
     private void sendExamJson(int i,int type) {
@@ -768,4 +764,6 @@
         super.onDetach();
         CEventCenter.onBindEvent(false,icEventListener,Constant.BIND_SPEED_TOPIC);
     }
+
+
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/SetArgumentsFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/SetArgumentsFragment.java
index 04a064f..8d77325 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/SetArgumentsFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/SetArgumentsFragment.java
@@ -97,24 +97,21 @@
         View view = inflater.inflate(R.layout.layout_base_datas, container, false);
         initView(view);
         rtkConfigViewModel= ViewModelProviders.of(this).get(RTKConfigViewModel.class);
-        rtkConfigViewModel.getRTKConfig().observe(this, new Observer<RTKConfig>() {
-            @Override
-            public void onChanged(RTKConfig rtkConfig) {
-                if (rtkConfig != null){
-                    Log.i(TAG, "RTKConfig Changed: "+rtkConfig.toString());
-                    mRtkConfig = rtkConfig;
-                    et_ip_rtk.setText(rtkConfig.getIp());
-                    et_city_id.setText(String.valueOf(rtkConfig.getCity()));
-                    et_city_province.setText(String.valueOf(rtkConfig.getProvince()));
-                    et_port_rtk.setText(String.valueOf(rtkConfig.getPort()));
-                    et_phone.setText(rtkConfig.getPhone());
-                    ExamPlatformData.getInstance().setRTKPort(rtkConfig.getPort());
-                    ExamPlatformData.getInstance().setRTKIP(rtkConfig.getIp());
-
-                }
-
+        rtkConfigViewModel.getRTKConfig().observe(this, rtkConfig -> {
+            if (rtkConfig != null){
+                Log.i(TAG, "RTKConfig Changed: "+rtkConfig.toString());
+                mRtkConfig = rtkConfig;
+                et_ip_rtk.setText(rtkConfig.getIp());
+                et_city_id.setText(String.valueOf(rtkConfig.getCity()));
+                et_city_province.setText(String.valueOf(rtkConfig.getProvince()));
+                et_port_rtk.setText(String.valueOf(rtkConfig.getPort()));
+                et_phone.setText(rtkConfig.getPhone());
+                ExamPlatformData.getInstance().setRTKPort(rtkConfig.getPort());
+                ExamPlatformData.getInstance().setRTKIP(rtkConfig.getIp());
 
             }
+
+
         });
 
 
@@ -279,16 +276,15 @@
                 final Uri uri= data.getData();
                 Log.i(TAG, "onActivityResult: "+uri.getPath());
                 ExamPlatformData.getInstance().setNewMapPath(uri.getPath());
-                CThreadPoolExecutor.runInBackground(new Runnable() {
-                    @Override
-                    public void run() {
+                CThreadPoolExecutor.runInBackground(()-> {
+
                         byte[] fileContent = FileUtil.readFile(uri.getPath());
                         if (fileContent != null){
                             String str = new String(fileContent);
                             Log.i(TAG, "鏂囦欢鍐呭锛�"+str);
                             AYSdk.getInstance().sendCmd(Constant.PUSH_MAP_INFO,str);
                         }
-                    }
+
                 });
             }
 
@@ -298,16 +294,15 @@
                 final Uri uri= data.getData();
                 Log.i(TAG, "onActivityResult: "+uri.getPath());
                 ExamPlatformData.getInstance().setCarModelPath(uri.getPath());
-                CThreadPoolExecutor.runInBackground(new Runnable() {
-                    @Override
-                    public void run() {
+                CThreadPoolExecutor.runInBackground(()-> {
+
                         byte[] fileContent = FileUtil.readFile(uri.getPath());
                         if (fileContent != null){
                             String str = new String(fileContent);
                             Log.i(TAG, "鏂囦欢鍐呭锛�"+str);
                             AYSdk.getInstance().sendCmd(Constant.PUSH_VECHILE_PROFILE,str);
                         }
-                    }
+
                 });
             }
 
@@ -317,15 +312,12 @@
                 final Uri uri= data.getData();
                 Log.i(TAG, "onActivityResult: "+uri.getPath());
                 ExamPlatformData.getInstance().setNewRoadMapPath(uri.getPath());
-                CThreadPoolExecutor.runInBackground(new Runnable() {
-                    @Override
-                    public void run() {
-                        byte[] fileContent = FileUtil.readFile(uri.getPath());
-                        if (fileContent != null){
-                            String str = new String(fileContent);
-                            Log.i(TAG, "鏂囦欢鍐呭锛�"+str);
-                            AYSdk.getInstance().sendCmd(Constant.PUSH_ROAD_MAP_INFO,str);
-                        }
+                CThreadPoolExecutor.runInBackground(() -> {
+                    byte[] fileContent = FileUtil.readFile(uri.getPath());
+                    if (fileContent != null){
+                        String str = new String(fileContent);
+                        Log.i(TAG, "鏂囦欢鍐呭锛�"+str);
+                        AYSdk.getInstance().sendCmd(Constant.PUSH_ROAD_MAP_INFO,str);
                     }
                 });
             }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
index baebf8b..da8ebf4 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -6,6 +6,7 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProviders;
 import androidx.work.OneTimeWorkRequest;
@@ -59,6 +60,7 @@
 import safeluck.drive.evaluation.cEventCenter.ICEventListener;
 import safeluck.drive.evaluation.customview.ArrowView;
 import safeluck.drive.evaluation.customview.HouseView;
+import safeluck.drive.evaluation.customview.LoadProgressDialog;
 import safeluck.drive.evaluation.customview.MyDialogFragment;
 import safeluck.drive.evaluation.im.MessageProcessor;
 import safeluck.drive.evaluation.platformMessage.JKMessage0201;
@@ -106,8 +108,9 @@
     private static final int SPEED_DATA = 2;
     private FailedProjViewModel failedProjViewModel;
     String icson;//杩斿洖鐨刬c鍗′俊鎭� json
-    private List<SimulateNightBean.QuestionBean> tempQs=  new ArrayList<>();
-    private TableRow tableRow1,tableRow2,tableRow3;
+    private String content;//鐢ㄤ互鐢熸垚浜岀淮鐮佺殑鍐呭
+
+    private LoadProgressDialog loadProgressDialog;
 
 private List<Integer> btn_ids = new ArrayList<Integer>();
 
@@ -474,6 +477,8 @@
                         tv_sex.setText(getString(R.string.sex)+(student.getSex()==2?"濂�":"鐢�"));
                         tv_start_time.setText(getString(R.string.begin_time)+Utils.formatTimeYYMMDDHHmmSS(student.getBegin_time()));
 
+                    }else if (!TextUtils.isEmpty(student.getName())&&student.getStu_id()==ExamPlatformData.COACH_ID){
+                        ExamPlatformData.getInstance().setCoachID(student.getID());
                     }
                 }
             }
@@ -542,10 +547,6 @@
         tv_total_score = view.findViewById(R.id.tv_total_score);
         tv_network_time = view.findViewById(R.id.network_time);
 
-        tableRow1 = view.findViewById(R.id.first);
-        tableRow2 = view.findViewById(R.id.second);
-        tableRow3 = view.findViewById(R.id.third);
-
 
         tv_network_time.setText(Utils.getHHmm());
 
@@ -606,30 +607,12 @@
                     @Override
                     public void changKao() {
 
-                        exam_type = 2;
-                        ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.TRAINING_MODE);//璁剧疆涓鸿缁冩ā寮�
-                        ExamPlatformData.getInstance().setExamType(exam_type);
-                        examStatusViewModel.updateStartExam(exam_type);
-                        sendExamJson(1,exam_type);
-                        ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭缁�");
-                        jkMessage0202.curr_exam = 0;
-
-                        jkMessage0202.mode = ExamPlatformData.getInstance().getExamType()==ExamPlatformData.TRAINING_MODE?1:0;
-
-                        MessageProcessor.getInstance().sendMessage(jkMessage0202);
+                        sendJK0202(2);
                     }
 
                     @Override
                     public void luKao() {
-                        exam_type = 3;
-                        ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.TRAINING_MODE);
-                        ExamPlatformData.getInstance().setExamType(exam_type);
-                        examStatusViewModel.updateStartExam(exam_type);
-                        sendExamJson(1,exam_type);
-                        ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭缁�");
-                        jkMessage0202.curr_exam = 1;
-                        jkMessage0202.mode = ExamPlatformData.getInstance().getExamType()==ExamPlatformData.TRAINING_MODE?1:0;
-                        MessageProcessor.getInstance().sendMessage(jkMessage0202);
+                        sendJK0202(3);
 
 
 
@@ -669,13 +652,36 @@
                 break;
             case R.id.iv_head:
                 MyLog.i(TAG,"绛惧埌锛岃幏鍙栬韩浠借瘉鐗╃悊鍗″彿");
-                AYSdk.getInstance().sendCmd(Constant.READ_PHYSICAL_ID,"");
-                //TODO 鑾峰緱鐗╃悊鍗″彿 鍙戦�丣KMessage0201缁欏钩鍙帮紝鑾峰彇濮撳悕銆佽韩浠借瘉銆乭ead_url
-
+                loadProgressDialog = LoadProgressDialog.newInstance("璇风◢鍚�...");
+                loadProgressDialog.setStyle(DialogFragment.STYLE_NORMAL,R.style.Dialog_FullScreen);
+                loadProgressDialog.showNow(getFragmentManager(),"loadingdiaolog");
                 break;
         }
     }
 
+    private void sendJK0202(int type) {
+
+        final JKMessage0202 jkMessage0202 = new JKMessage0202();
+        exam_type = type;
+        ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.TRAINING_MODE);
+        ExamPlatformData.getInstance().setExamType(exam_type);
+        examStatusViewModel.updateStartExam(exam_type);
+        sendExamJson(1,exam_type);
+        ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭缁�");
+
+        Date date = new Date();
+        wokViewModel.updateBeginTime(date.getTime());
+        jkMessage0202.timeBCD = date;
+        ExamPlatformData.getInstance().setExam_id(Utils.parseUnsignedInt(String.valueOf(date.getTime()/1000),10));
+        jkMessage0202.stu_id = ExamPlatformData.getInstance().getID();
+        jkMessage0202.coach_id = ExamPlatformData.getInstance().getCoachID();
+        jkMessage0202.exam_id = ExamPlatformData.getInstance().getExam_id();
+
+        jkMessage0202.curr_exam = (type-2);//  璺熺Щ鍔ㄧ珯鏈嶅姟瀹氫箟鐨勫満鑰冩槸2  锛屽钩鍙版槸0 锛�  绉诲姩绔欒矾鑰冩槸3 锛屽钩鍙版槸1
+        jkMessage0202.mode = ExamPlatformData.getInstance().getTrainingMode()==ExamPlatformData.TRAINING_MODE?1:0;
+        MessageProcessor.getInstance().sendMessage(jkMessage0202);
+    }
+
     private void sendExamJson(int i,int type) {
         try {
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0002.java b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0002.java
index 9184539..cc80540 100644
--- a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0002.java
+++ b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0002.java
@@ -1,9 +1,5 @@
 package safeluck.drive.evaluation.platformMessage;
 
-import com.safeluck.aykj.annotation.Hex;
-import com.safeluck.aykj.annotation.Int32;
-import com.safeluck.aykj.annotation.Length;
-import com.safeluck.aykj.annotation.Order;
 
 public class JKMessage0002 extends JK2019MessageBase {
     /**
diff --git a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0202.java b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0202.java
index 70ccedf..e03fb5c 100644
--- a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0202.java
+++ b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0202.java
@@ -6,17 +6,25 @@
 
 public class JKMessage0202 extends JK2019MessageBase {
 
-
     @Order(1)
+    @Length(18)
+    @Ascii
+    public String coach_id;
+    @Order(2)
+    @Length(18)
+    @Ascii
+    public String stu_id;
+
+    @Order(3)
     @BcdDateTime
     public Date timeBCD;
-    @Order(2)
+    @Order(4)
     @Int32
     public int exam_id;
-    @Order(3)
+    @Order(5)
     @Int8
     public int curr_exam;
-    @Order(3)
+    @Order(6)
     @Int8
     public int mode;
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0203.java b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0203.java
index 29b08e0..2670da4 100644
--- a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0203.java
+++ b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0203.java
@@ -2,7 +2,6 @@
 
 import com.safeluck.aykj.annotation.Ascii;
 import com.safeluck.aykj.annotation.BcdDateTime;
-import com.safeluck.aykj.annotation.Hex;
 import com.safeluck.aykj.annotation.Int32;
 import com.safeluck.aykj.annotation.Int8;
 import com.safeluck.aykj.annotation.Length;
diff --git a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0204.java b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0204.java
index ce7a3b2..b5810e9 100644
--- a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0204.java
+++ b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0204.java
@@ -1,10 +1,8 @@
 package safeluck.drive.evaluation.platformMessage;
 
-import com.safeluck.aykj.annotation.Ascii;
 import com.safeluck.aykj.annotation.BcdDateTime;
 import com.safeluck.aykj.annotation.Int32;
 import com.safeluck.aykj.annotation.Int8;
-import com.safeluck.aykj.annotation.Length;
 import com.safeluck.aykj.annotation.Order;
 
 import java.util.Date;
diff --git a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0206.java b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0206.java
index cc2ab02..592a691 100644
--- a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0206.java
+++ b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0206.java
@@ -2,8 +2,6 @@
 
 import com.safeluck.aykj.annotation.*;
 
-import safeluck.drive.evaluation.platformMessage.decoder.JWD;
-import safeluck.drive.evaluation.platformMessage.decoder.SPEED;
 
 public class JKMessage0206 extends JK2019MessageBase {
     @Order(1)
diff --git a/app/src/main/res/drawable/anim_loading.xml b/app/src/main/res/drawable/anim_loading.xml
new file mode 100644
index 0000000..125d033
--- /dev/null
+++ b/app/src/main/res/drawable/anim_loading.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
+            android:drawable="@drawable/icon_loading"
+            android:fromDegrees="0.0"
+            android:pivotX="50.0%"
+            android:pivotY="50.0%"
+            android:toDegrees="360.0" />
\ No newline at end of file
diff --git a/app/src/main/res/drawable/anyunlog.jpg b/app/src/main/res/drawable/anyunlog.jpg
new file mode 100644
index 0000000..cdc7d3e
--- /dev/null
+++ b/app/src/main/res/drawable/anyunlog.jpg
Binary files differ
diff --git a/app/src/main/res/drawable/dialog_round.xml b/app/src/main/res/drawable/dialog_round.xml
new file mode 100644
index 0000000..4810941
--- /dev/null
+++ b/app/src/main/res/drawable/dialog_round.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape  xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle" >
+<solid android:color="#333333"/>
+    <corners android:radius="8dp"/>
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/icon_loading.png b/app/src/main/res/drawable/icon_loading.png
new file mode 100644
index 0000000..e04c045
--- /dev/null
+++ b/app/src/main/res/drawable/icon_loading.png
Binary files differ
diff --git a/app/src/main/res/drawable/qrcode.jpg b/app/src/main/res/drawable/qrcode.jpg
new file mode 100644
index 0000000..1ca9b6d
--- /dev/null
+++ b/app/src/main/res/drawable/qrcode.jpg
Binary files differ
diff --git a/app/src/main/res/layout/layout_dialog_loading.xml b/app/src/main/res/layout/layout_dialog_loading.xml
new file mode 100644
index 0000000..1cb7cb9
--- /dev/null
+++ b/app/src/main/res/layout/layout_dialog_loading.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="fill_parent"
+    android:layout_height="fill_parent"
+    android:background="@android:color/transparent"
+    android:gravity="center"
+    android:orientation="vertical" >
+
+    <LinearLayout
+        android:id="@+id/linearLayout"
+        android:layout_width="100dp"
+        android:layout_height="100dp"
+        android:background="#333333"
+        android:gravity="center"
+        android:orientation="vertical" >
+
+        <ProgressBar
+            android:id="@+id/progressBar1"
+            style="?android:attr/progressBarStyleInverse"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:indeterminateBehavior="repeat"
+            android:indeterminateDrawable="@drawable/anim_loading"
+            android:background="@android:color/transparent" />
+
+        <TextView
+            android:id="@+id/tv_message"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:paddingTop="5dp"
+            android:text="Message"
+            android:visibility="gone"
+            android:textColor="@android:color/holo_red_dark"
+           />
+    </LinearLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_dialog_qrcode.xml b/app/src/main/res/layout/layout_dialog_qrcode.xml
new file mode 100644
index 0000000..fd6494c
--- /dev/null
+++ b/app/src/main/res/layout/layout_dialog_qrcode.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:background="@android:color/transparent"
+    android:gravity="center"
+    android:orientation="vertical" >
+
+    <LinearLayout
+        android:id="@+id/linearLayout"
+        android:layout_width="210dp"
+        android:layout_height="210dp"
+        android:gravity="center"
+        android:background="@android:color/white"
+        android:orientation="vertical" >
+
+        <ImageView
+            android:id="@+id/iv_qr_code"
+            android:layout_width="125dp"
+            android:layout_height="125dp"
+            android:layout_margin="10dp"
+            android:scaleType="fitCenter"
+            android:src="@drawable/qrcode"
+             />
+    <Button
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="纭畾"
+        android:padding="10dp"
+        android:background="@drawable/ic_btn_daikao"
+        android:textColor="@android:color/white"
+        android:id="@+id/btn_qr_sure"/>
+
+    </LinearLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 0bbdc2b..16fc81d 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -52,4 +52,9 @@
         <item name="android:ems">6</item>
         <item name="android:background">@android:drawable/edit_text</item>
     </style>
+
+    <style name="Dialog.FullScreen" parent="Theme.AppCompat.Dialog">
+        <item name="android:padding">0dp</item>
+        <item name="android:windowBackground">@android:color/transparent</item>
+    </style>
 </resources>
diff --git a/lib/src/main/cpp/test_items/area_exam.cpp b/lib/src/main/cpp/test_items/area_exam.cpp
index 819910b..46c71ca 100644
--- a/lib/src/main/cpp/test_items/area_exam.cpp
+++ b/lib/src/main/cpp/test_items/area_exam.cpp
@@ -2,6 +2,7 @@
 // Created by YY on 2020/4/3.
 //
 
+#include <cstdlib>
 #include "area_exam.h"
 #include "../test_common/car_sensor.h"
 #include "../driver_test.h"

--
Gitblit v1.8.0