From e01f5a72c7782419f01f01b3453d808a71888cb1 Mon Sep 17 00:00:00 2001
From: endian11 <Dana_Lee1016@126.com>
Date: 星期一, 25 十一月 2019 16:08:11 +0800
Subject: [PATCH] 使用androidx代替support lib;Room加上注解处理器;修改数据库getID;

---
 app/src/main/java/safeluck/drive/evaluation/DB/WorkRepository.java              |   37 ++
 app/src/main/java/safeluck/drive/evaluation/adapter/ScoreAdapter.java           |    1 
 app/src/main/java/safeluck/drive/evaluation/fragment/VPFragment.java            |    6 
 app/src/main/java/safeluck/drive/evaluation/render/GLRender.java                |  125 ++++++++
 app/src/main/java/safeluck/drive/evaluation/fragment/JiaXiaoFragment.java       |    6 
 app/src/main/java/safeluck/drive/evaluation/fragment/SingleJudgeFragment.java   |    8 
 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java         |    5 
 app/src/main/java/safeluck/drive/evaluation/customview/HouseView.java           |    6 
 app/src/main/java/safeluck/drive/evaluation/fragment/PasswordFragment.java      |    6 
 app/src/main/java/safeluck/drive/evaluation/util/PermissionManager.java         |   10 
 app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java           |  165 +++++------
 app/src/main/java/safeluck/drive/evaluation/adapter/MyFragmetAdapter.java       |   11 
 app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java          |   16 
 app/src/main/java/safeluck/drive/evaluation/DB/StudentDao.java                  |   32 ++
 build.gradle                                                                    |    5 
 app/src/main/java/safeluck/drive/evaluation/customview/ArrowView.java           |    7 
 app/src/main/java/safeluck/drive/evaluation/DB/SeedDatabaseWorker.java          |   55 +++
 app/build.gradle                                                                |    6 
 app/src/main/java/safeluck/drive/evaluation/fragment/BaseSettingFragment.java   |   15 
 app/src/main/assets/students_file.json                                          |   14 +
 app/src/main/java/safeluck/drive/evaluation/fragment/FtpConfigFragment.java     |    4 
 app/src/main/java/safeluck/drive/evaluation/adapter/SimpleFragmentAdapter.java  |   12 
 app/src/main/java/safeluck/drive/evaluation/DB/WokViewModel.java                |   36 ++
 app/src/main/java/safeluck/drive/evaluation/fragment/SysSettingFragment.java    |   15 
 app/src/main/java/safeluck/drive/evaluation/app.java                            |    5 
 app/src/main/java/safeluck/drive/evaluation/MainActivity.java                   |   10 
 app/src/main/java/safeluck/drive/evaluation/customview/CircleImageView.java     |   11 
 app/src/main/java/safeluck/drive/evaluation/fragment/InspectSignalFragment.java |    8 
 app/src/main/java/safeluck/drive/evaluation/viewmodels/MainViewModel.java       |    7 
 app/src/main/java/safeluck/drive/evaluation/fragment/TakePhotoFragment.java     |   12 
 app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java  |    7 
 app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java            |   54 +++
 app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java     |    4 
 app/src/main/java/safeluck/drive/evaluation/DB/Student.java                     |   75 +++++
 app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java  |    7 
 app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java           |   30 +
 lib/src/main/java/com/anyun/exam/lib/RemoteService.java                         |    3 
 37 files changed, 647 insertions(+), 189 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 65af895..5eb1ee0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -37,6 +37,11 @@
     implementation 'com.android.support:appcompat-v7:28.0.0'
     implementation 'com.android.support:design:28.0.0'
     api "android.arch.lifecycle:extensions:1.1.1"
+
+    implementation "androidx.room:room-runtime:$rootProject.roomVersion"
+    annotationProcessor "androidx.room:room-compiler:$rootProject.roomVersion"
+    implementation "androidx.work:work-runtime:$rootProject.workVersion"
+    implementation "androidx.lifecycle:lifecycle-extensions:$rootProject.lifecycleVersion"
     implementation 'com.android.support.constraint:constraint-layout:1.1.3'
     // To get SwipeBack feature, rely on both fragmentation & fragmentation-swipeback
     implementation 'me.yokeyword:fragmentation:1.3.6'
@@ -48,4 +53,5 @@
     androidTestImplementation 'com.android.support.test:runner:1.0.2'
     androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
     implementation project(path: ':lib')
+    implementation 'com.google.code.gson:gson:2.8.6'
 }
diff --git a/app/src/main/assets/students_file.json b/app/src/main/assets/students_file.json
new file mode 100644
index 0000000..8423b11
--- /dev/null
+++ b/app/src/main/assets/students_file.json
@@ -0,0 +1,14 @@
+[
+  {
+    "stu_id":1000,
+    "ID": "410923198910162546",
+    "name": "寮犱笁",
+    "sex":1
+  },
+  {
+    "stu_id":1001,
+    "ID": "410923198910162545",
+    "name": "鏉庡洓",
+    "sex":2
+  }
+]
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/SeedDatabaseWorker.java b/app/src/main/java/safeluck/drive/evaluation/DB/SeedDatabaseWorker.java
new file mode 100644
index 0000000..353d4e9
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/SeedDatabaseWorker.java
@@ -0,0 +1,55 @@
+package safeluck.drive.evaluation.DB;
+
+import android.content.Context;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.work.WorkRequest;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+import androidx.work.impl.model.WorkSpec;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.stream.JsonReader;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.List;
+import java.util.Set;
+import java.util.UUID;
+
+/**
+ * MyApplication2
+ * Created by lzw on 2019/11/25. 13:11:57
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class SeedDatabaseWorker extends Worker {
+
+    private static final String TAG = "SeedDatabaseWorker";
+
+    public SeedDatabaseWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
+        super(context, workerParams);
+    }
+
+    @NonNull
+    @Override
+    public Result doWork() {
+        Log.i(TAG, "doWork: "+Thread.currentThread().getId());
+        try {
+            InputStream inputStream = getApplicationContext().getAssets().open("students_file.json");
+            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
+            JsonReader jsonReader = new JsonReader(inputStreamReader);
+            jsonReader.beginObject();
+            Gson gson = new Gson();
+           List<Student> mstus=gson.fromJson(jsonReader,Student.class);
+           WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getstudentDao().insertAll(mstus);
+        } catch (IOException e) {
+            e.printStackTrace();
+            return Result.failure();
+        }
+        return Result.success();
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/Student.java b/app/src/main/java/safeluck/drive/evaluation/DB/Student.java
new file mode 100644
index 0000000..6c79056
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/Student.java
@@ -0,0 +1,75 @@
+package safeluck.drive.evaluation.DB;
+
+import androidx.annotation.NonNull;
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+/**
+ * MyApplication2
+ * Created by lzw on 2019/11/25. 10:43:57
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+@Entity(tableName = "student_table")
+public class Student {
+    @PrimaryKey
+    @NonNull
+    @ColumnInfo(name = "stu_id")
+    private long stu_ID;
+
+    @NonNull
+    @ColumnInfo(name = "name")
+    private String name;
+
+    //韬唤璇�
+    @ColumnInfo(name = "ID")
+    private String mID;
+
+    //鎬у埆 0-鐢� 1-濂�
+    @ColumnInfo(name = "sex")
+    private int sex;
+
+    public long getStu_ID() {
+        return stu_ID;
+    }
+
+    public void setStu_ID(long stu_ID) {
+        this.stu_ID = stu_ID;
+    }
+
+    public String getID() {
+        return mID;
+    }
+
+    public void setID(String mID) {
+        this.mID = mID;
+    }
+
+    public int getSex() {
+        return sex;
+    }
+
+    public void setSex(int sex) {
+        this.sex = sex;
+    }
+
+    @NonNull
+    public String getName() {
+        return name;
+    }
+
+    public void setName(@NonNull String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String toString() {
+        return "Student{" +
+                "stu_ID=" + stu_ID +
+                ", name='" + name + '\'' +
+                ", mID='" + mID + '\'' +
+                ", sex=" + sex +
+                '}';
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/StudentDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/StudentDao.java
new file mode 100644
index 0000000..6d32c75
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/StudentDao.java
@@ -0,0 +1,32 @@
+package safeluck.drive.evaluation.DB;
+
+import androidx.lifecycle.LiveData;
+import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
+
+import java.util.List;
+
+/**
+ * MyApplication2
+ * Created by lzw on 2019/11/25. 10:51:02
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+@Dao
+public interface StudentDao {
+    @Insert(onConflict = OnConflictStrategy.IGNORE)
+    void insert(Student student);
+
+
+    @Query("SELECT * from student_table")
+    LiveData<List<Student>> getAllStudents();
+
+    @Delete
+    void deleteStu(Student student);
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    void insertAll(List<Student> students);
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/WokViewModel.java b/app/src/main/java/safeluck/drive/evaluation/DB/WokViewModel.java
new file mode 100644
index 0000000..c80d4c5
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/WokViewModel.java
@@ -0,0 +1,36 @@
+package safeluck.drive.evaluation.DB;
+
+import android.app.Application;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.AndroidViewModel;
+import androidx.lifecycle.LiveData;
+
+import java.util.List;
+
+/**
+ * MyApplication2
+ * Created by lzw on 2019/11/25. 11:34:24
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class WokViewModel extends AndroidViewModel {
+    public WokViewModel(@NonNull Application application) {
+        super(application);
+        workRepository = new WorkRepository(application);
+        mStudents = workRepository.getAllStudents();
+    }
+
+    private WorkRepository workRepository;
+    private LiveData<List<Student>> mStudents;
+
+    public LiveData<List<Student>> getStudents() {
+        return mStudents;
+    }
+
+    public void insertStudent(Student student){
+        workRepository.insert(student);
+    }
+
+
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/WorkRepository.java b/app/src/main/java/safeluck/drive/evaluation/DB/WorkRepository.java
new file mode 100644
index 0000000..56d3637
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/WorkRepository.java
@@ -0,0 +1,37 @@
+package safeluck.drive.evaluation.DB;
+
+import android.app.Application;
+
+import androidx.lifecycle.LiveData;
+
+import java.util.List;
+
+/**
+ * MyApplication2
+ * Created by lzw on 2019/11/25. 11:20:26
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class WorkRepository {
+    private StudentDao studentDao;
+    private LiveData<List<Student>> mStudents;
+
+    public WorkRepository(Application application){
+        WorkRoomDataBase db = WorkRoomDataBase.getWorkRoomDataBase(application);
+        studentDao = db.getstudentDao();
+        mStudents = studentDao.getAllStudents();
+    }
+
+    public LiveData<List<Student>> getAllStudents(){
+        return mStudents;
+    }
+
+    void insert(final Student student){
+        WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() {
+            @Override
+            public void run() {
+                studentDao.insert(student);
+            }
+        });
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java b/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java
new file mode 100644
index 0000000..a86a17a
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java
@@ -0,0 +1,54 @@
+package safeluck.drive.evaluation.DB;
+
+import android.content.Context;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.room.Database;
+import androidx.room.Room;
+import androidx.room.RoomDatabase;
+import androidx.sqlite.db.SupportSQLiteDatabase;
+import androidx.work.OneTimeWorkRequest;
+import androidx.work.WorkManager;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+
+/**
+ * MyApplication2
+ * Created by lzw on 2019/11/25. 11:13:23
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+@Database(entities = {Student.class},version = 1,exportSchema = false)
+public abstract class WorkRoomDataBase extends RoomDatabase {
+    private static final String TAG = "WorkRoomDataBase";
+    public abstract StudentDao getstudentDao();
+    private static volatile WorkRoomDataBase workRoomDataBase;
+
+    private static final int NUMBER_OF_THREADS = 4;
+
+    static final ExecutorService dataBaseWriteExecutor = Executors.newFixedThreadPool(NUMBER_OF_THREADS);
+
+    public static WorkRoomDataBase getWorkRoomDataBase(final Context mContext){
+        if (workRoomDataBase == null){
+            synchronized (WorkRoomDataBase.class){
+                if (workRoomDataBase == null){
+                    workRoomDataBase = Room.databaseBuilder(mContext.getApplicationContext(),WorkRoomDataBase.class,"work_database")
+                            .addCallback(new Callback() {
+                                @Override
+                                public void onCreate(@NonNull SupportSQLiteDatabase db) {
+                                    super.onCreate(db);
+                                    OneTimeWorkRequest oneTimeWorkRequest = OneTimeWorkRequest.from(SeedDatabaseWorker.class);
+                                    Log.i(TAG, "onCreate: 鍒涘缓鏁版嵁搴撳悗寤虹珛鏁版嵁琛ㄦ彃鍏ユ暟鎹�");
+                                    WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest);
+                                }
+                            })
+                            .build();
+                }
+            }
+        }
+        return workRoomDataBase;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
index 118aaa1..18dac71 100644
--- a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
+++ b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -3,16 +3,18 @@
 
 import android.Manifest;
 import android.app.AlertDialog;
-import android.arch.lifecycle.Observer;
-import android.arch.lifecycle.ViewModelProviders;
+
 import android.content.DialogInterface;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
 import android.util.Log;
 import android.widget.Toast;
 
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProviders;
 
 import me.yokeyword.fragmentation.SupportActivity;
 import safeluck.drive.evaluation.fragment.HomeFragment;
diff --git a/app/src/main/java/safeluck/drive/evaluation/adapter/MyFragmetAdapter.java b/app/src/main/java/safeluck/drive/evaluation/adapter/MyFragmetAdapter.java
index fd10d36..80c4c4f 100644
--- a/app/src/main/java/safeluck/drive/evaluation/adapter/MyFragmetAdapter.java
+++ b/app/src/main/java/safeluck/drive/evaluation/adapter/MyFragmetAdapter.java
@@ -1,15 +1,14 @@
 package safeluck.drive.evaluation.adapter;
 
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
+
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentPagerAdapter;
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.fragment.BaseSettingFragment;
 import safeluck.drive.evaluation.fragment.SingleJudgeFragment;
-import safeluck.drive.evaluation.fragment.VPFragment;
 
 /**
  * MyApplication2
diff --git a/app/src/main/java/safeluck/drive/evaluation/adapter/ScoreAdapter.java b/app/src/main/java/safeluck/drive/evaluation/adapter/ScoreAdapter.java
index ce8f242..f3a0cdf 100644
--- a/app/src/main/java/safeluck/drive/evaluation/adapter/ScoreAdapter.java
+++ b/app/src/main/java/safeluck/drive/evaluation/adapter/ScoreAdapter.java
@@ -2,7 +2,6 @@
 
 import android.content.Context;
 import android.graphics.Color;
-import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
diff --git a/app/src/main/java/safeluck/drive/evaluation/adapter/SimpleFragmentAdapter.java b/app/src/main/java/safeluck/drive/evaluation/adapter/SimpleFragmentAdapter.java
index 4f550e8..4906bbc 100644
--- a/app/src/main/java/safeluck/drive/evaluation/adapter/SimpleFragmentAdapter.java
+++ b/app/src/main/java/safeluck/drive/evaluation/adapter/SimpleFragmentAdapter.java
@@ -1,15 +1,17 @@
 package safeluck.drive.evaluation.adapter;
 
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
+
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentPagerAdapter;
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.fragment.BaseDatasFragment;
 import safeluck.drive.evaluation.fragment.FtpConfigFragment;
 import safeluck.drive.evaluation.fragment.JiaXiaoFragment;
-import safeluck.drive.evaluation.fragment.VPFragment;
+
 
 /**
  * MyApplication2
diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index 79fa256..3df4c31 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -1,9 +1,10 @@
 package safeluck.drive.evaluation;
 
 import android.app.Application;
-import android.support.annotation.NonNull;
 import android.util.Log;
 
+
+import androidx.annotation.NonNull;
 
 import com.anyun.exam.lib.AYSdk;
 import com.anyun.exam.lib.IAYExamListener;
@@ -13,6 +14,7 @@
 import com.anyun.exam.lib.MyLog;
 import com.anyun.exam.lib.crash.CrashHandler;
 
+import safeluck.drive.evaluation.DB.WorkRoomDataBase;
 import safeluck.drive.evaluation.util.SystemUtil;
 
 /**
@@ -47,6 +49,7 @@
             AYSdk.getInstance().registListener(this);
             Log.i(TAG, "onCreate: ");
             MyLog.createIfNotExist();
+
         }
 
     }
diff --git a/app/src/main/java/safeluck/drive/evaluation/customview/ArrowView.java b/app/src/main/java/safeluck/drive/evaluation/customview/ArrowView.java
index 426d708..85e3cd7 100644
--- a/app/src/main/java/safeluck/drive/evaluation/customview/ArrowView.java
+++ b/app/src/main/java/safeluck/drive/evaluation/customview/ArrowView.java
@@ -6,14 +6,13 @@
 import android.graphics.Color;
 import android.graphics.Paint;
 import android.graphics.Path;
-import android.support.annotation.Nullable;
-import android.text.Layout;
-import android.text.StaticLayout;
-import android.text.TextPaint;
+
 import android.util.AttributeSet;
 import android.util.TypedValue;
 import android.view.View;
 
+import androidx.annotation.Nullable;
+
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.util.Utils;
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/customview/CircleImageView.java b/app/src/main/java/safeluck/drive/evaluation/customview/CircleImageView.java
index 565ff0a..2b1cecb 100644
--- a/app/src/main/java/safeluck/drive/evaluation/customview/CircleImageView.java
+++ b/app/src/main/java/safeluck/drive/evaluation/customview/CircleImageView.java
@@ -14,10 +14,13 @@
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
-import android.support.annotation.ColorInt;
-import android.support.annotation.ColorRes;
-import android.support.annotation.DrawableRes;
+
 import android.util.AttributeSet;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.ColorRes;
+import androidx.annotation.DrawableRes;
+import androidx.appcompat.widget.AppCompatImageView;
 
 import safeluck.drive.evaluation.R;
 
@@ -31,7 +34,7 @@
 
 
 
-public class CircleImageView extends android.support.v7.widget.AppCompatImageView {
+public class CircleImageView extends AppCompatImageView {
 
     private static final ScaleType SCALE_TYPE = ScaleType.CENTER_CROP;
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/customview/HouseView.java b/app/src/main/java/safeluck/drive/evaluation/customview/HouseView.java
index 122f01f..6fb30bd 100644
--- a/app/src/main/java/safeluck/drive/evaluation/customview/HouseView.java
+++ b/app/src/main/java/safeluck/drive/evaluation/customview/HouseView.java
@@ -6,13 +6,13 @@
 import android.graphics.Color;
 import android.graphics.Paint;
 import android.graphics.Path;
-import android.graphics.Rect;
-import android.graphics.RectF;
-import android.support.annotation.Nullable;
+
 import android.util.AttributeSet;
 import android.util.TypedValue;
 import android.view.View;
 
+import androidx.annotation.Nullable;
+
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.util.Utils;
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java
index 07ab889..2dd2bdc 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java
@@ -1,8 +1,8 @@
 package safeluck.drive.evaluation.fragment;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/BaseSettingFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/BaseSettingFragment.java
index 6d37a90..8ce6107 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/BaseSettingFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/BaseSettingFragment.java
@@ -2,20 +2,19 @@
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.design.widget.TabLayout;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.support.v7.widget.Toolbar;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.Toolbar;
+import androidx.viewpager.widget.ViewPager;
+
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
+import com.google.android.material.tabs.TabLayout;
+
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.adapter.MyFragmetAdapter;
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/FtpConfigFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/FtpConfigFragment.java
index 869d819..a6f4fc5 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/FtpConfigFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/FtpConfigFragment.java
@@ -1,8 +1,8 @@
 package safeluck.drive.evaluation.fragment;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
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 615a1bb..abd31ce 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java
@@ -1,22 +1,16 @@
 package safeluck.drive.evaluation.fragment;
 
-import android.app.ActionBar;
-import android.app.AlertDialog;
-import android.content.DialogInterface;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
+
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.Toast;
 
-import com.google.zxing.WriterException;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 
 import java.io.File;
 import java.io.FileOutputStream;
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/InspectSignalFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/InspectSignalFragment.java
index b6a9221..c0dcab7 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/InspectSignalFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/InspectSignalFragment.java
@@ -3,14 +3,16 @@
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.Handler;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.Toolbar;
+
 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.appcompat.widget.Toolbar;
+
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
 
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 fe6973a..2c09199 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/JiaXiaoFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/JiaXiaoFragment.java
@@ -1,12 +1,14 @@
 package safeluck.drive.evaluation.fragment;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
index ed8a45a..f27254c 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
@@ -1,93 +1,72 @@
-package safeluck.drive.evaluation.fragment;
-
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.Path;
-import android.graphics.PathDashPathEffect;
-import android.graphics.Rect;
-import android.graphics.RectF;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-import android.view.View;
-import android.view.ViewGroup;
-
-import me.yokeyword.fragmentation.SupportFragment;
-import safeluck.drive.evaluation.R;
-
-/**
- * MyApplication2
- * Created by lzw on 2019/9/26. 15:20:58
- * 閭锛�632393724@qq.com
- * All Rights Saved! Chongqing AnYun Tech co. LTD
- */
-public class MapFragment extends SupportFragment implements SurfaceHolder.Callback {
-    private boolean isDrawing = false;
-
-    public static SupportFragment newInstance(){
-        return new MapFragment();
-    }
-    private SurfaceView mSurfaceView;
-    private SurfaceHolder holder;
-    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
-    Path path = new Path();
-    private Canvas canvas;
-    @Nullable
-    @Override
-    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-
-
-        mSurfaceView = new SurfaceView(getActivity());
-        ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
-        holder = mSurfaceView.getHolder();
-        holder.addCallback(this);
-        mSurfaceView.setLayoutParams(layoutParams);
-        mSurfaceView.setKeepScreenOn(true);
-        return mSurfaceView;
-    }
-
-    @Override
-    public void surfaceCreated(final SurfaceHolder holder) {
-        isDrawing = true;
-        //寮�鍚嚎绋� 杩涜鐢诲浘
-        new Thread(new Runnable() {
-            @Override
-            public void run() {
-                while (isDrawing){
-                    drawPath();
-                }
-            }
-        }).start();
-    }
-
-    private void drawPath() {
-        try {
-            canvas = holder.lockCanvas();
-            paint.setColor(Color.RED);
-            path.addCircle(mSurfaceView.getWidth()/2,mSurfaceView.getHeight()/2,70, Path.Direction.CW);
-            path.addOval(new RectF(new Rect(100,100,200,200)), Path.Direction.CW);
-            canvas.drawPath(path,paint);
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        } finally {
-            if (canvas != null){
-                holder.unlockCanvasAndPost(canvas);
-            }
-        }
-    }
-
-    @Override
-    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
-
-    }
-
-    @Override
-    public void surfaceDestroyed(SurfaceHolder holder) {
-        isDrawing = false;
-    }
-}
+//package safeluck.drive.evaluation.fragment;
+//
+//import android.graphics.Canvas;
+//import android.graphics.Color;
+//import android.graphics.Paint;
+//import android.graphics.Path;
+//import android.graphics.PathDashPathEffect;
+//import android.graphics.Rect;
+//import android.graphics.RectF;
+//import android.opengl.GLSurfaceView;
+//import android.os.Bundle;
+//import android.support.annotation.NonNull;
+//import android.support.annotation.Nullable;
+//import android.support.v7.widget.Toolbar;
+//import android.util.Log;
+//import android.view.LayoutInflater;
+//import android.view.SurfaceHolder;
+//import android.view.SurfaceView;
+//import android.view.View;
+//import android.view.ViewGroup;
+//import android.widget.LinearLayout;
+//
+//import javax.security.auth.login.LoginException;
+//
+//import me.yokeyword.fragmentation.SupportFragment;
+//import safeluck.drive.evaluation.R;
+////import safeluck.drive.evaluation.render.GLRender;
+//
+//
+///**
+// * MyApplication2
+// * Created by lzw on 2019/9/26. 15:20:58
+// * 閭锛�632393724@qq.com
+// * All Rights Saved! Chongqing AnYun Tech co. LTD
+// */
+//public class MapFragment extends SupportFragment{
+//    private boolean isDrawing = false;
+//
+//    public static SupportFragment newInstance(){
+//        return new MapFragment();
+//    }
+//    private GLSurfaceView mGLSurfaceView;
+//    private static final String TAG = "MapFragment";
+//    private SurfaceHolder holder;
+//    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
+//    Path path = new Path();
+//    private Canvas canvas;
+//    private int x=-1;
+//    private int y = -1;
+//    private Toolbar toolbar;
+//
+//    private LinearLayout linearLayout;//surfaceview鐨勭埗瀹瑰櫒锛屼负浜嗙Щ鍔╯urfaceview鑰屼娇鐢紝鍥犱负scrollto涓嶈兘绉诲姩view锛�
+//
+//    @Nullable
+//    @Override
+//    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+//        View view = inflater.inflate(R.layout.layout_mapfragment,container,false);
+//        initView(view);
+//        return view;
+//    }
+//
+//    private void initView(View view) {
+//        toolbar = view.findViewById(R.id.toolbar);
+//        toolbar.setTitle("绠�鍗曞湴鍥�");
+//
+//        mGLSurfaceView = view.findViewById(R.id.glsurface);
+//        mGLSurfaceView.setRenderer(new GLRender());
+//    }
+//
+//
+//
+//}
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 7862742..bbb0ad3 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -1,15 +1,16 @@
 package safeluck.drive.evaluation.fragment;
 
 import android.os.Bundle;
-import android.os.Handler;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ListView;
 
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/PasswordFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/PasswordFragment.java
index ffa22f0..7880b83 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/PasswordFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/PasswordFragment.java
@@ -1,8 +1,7 @@
 package safeluck.drive.evaluation.fragment;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -11,6 +10,9 @@
 import android.widget.EditText;
 import android.widget.Toast;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java
index 8df02d2..7ff9ebc 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java
@@ -2,9 +2,6 @@
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.Toolbar;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -16,6 +13,10 @@
 import android.widget.ListView;
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.Toolbar;
+
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/SingleJudgeFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/SingleJudgeFragment.java
index 0658498..64b7662 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/SingleJudgeFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/SingleJudgeFragment.java
@@ -1,13 +1,13 @@
 package safeluck.drive.evaluation.fragment;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.Gravity;
+
 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 me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/SysSettingFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/SysSettingFragment.java
index 1a3c335..9df17f5 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/SysSettingFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/SysSettingFragment.java
@@ -1,22 +1,23 @@
 package safeluck.drive.evaluation.fragment;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.design.widget.TabLayout;
-import android.support.v4.view.ViewPager;
-import android.support.v7.widget.Toolbar;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.Toolbar;
+import androidx.viewpager.widget.ViewPager;
+
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
+import com.google.android.material.tabs.TabLayout;
+
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.adapter.MyFragmetAdapter;
 
-import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
-import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
 
 /**
  * 绯荤粺閰嶇疆UI 鐩墠娌℃湁鐢�
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TakePhotoFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TakePhotoFragment.java
index 3659b0e..2af4a2f 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TakePhotoFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TakePhotoFragment.java
@@ -28,11 +28,13 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.HandlerThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.DialogFragment;
-import android.support.v4.app.Fragment;
-import android.support.v4.content.ContextCompat;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+
 import android.util.Log;
 import android.util.SparseIntArray;
 import android.view.LayoutInflater;
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
index 95683d9..0a9a4f8 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -1,16 +1,28 @@
 package safeluck.drive.evaluation.fragment;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.design.widget.TextInputEditText;
-import android.support.v7.widget.AppCompatEditText;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
 
+import androidx.appcompat.widget.AppCompatEditText;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProviders;
+
+import com.google.android.material.textfield.TextInputEditText;
+
+import java.util.List;
+
 import me.yokeyword.fragmentation.SupportFragment;
+import safeluck.drive.evaluation.DB.Student;
+import safeluck.drive.evaluation.DB.WokViewModel;
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.tcp.ConnectThread;
 
@@ -39,6 +51,16 @@
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.layout_tcpclient, container, false);
         initView(view);
+        WokViewModel workViewModel =ViewModelProviders.of(this).get(WokViewModel.class);
+
+        workViewModel.getStudents().observe((LifecycleOwner) this, new Observer<List<Student>>() {
+            @Override
+            public void onChanged(List<Student> students) {
+                for (Student student:students){
+                    Log.i("Students", "onChanged: "+student.toString());
+                }
+            }
+        });
         return view;
     }
 
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 2da9ffb..9c06073 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -1,8 +1,9 @@
 package safeluck.drive.evaluation.fragment;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
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 cc17118..886c096 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/VPFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/VPFragment.java
@@ -1,14 +1,16 @@
 package safeluck.drive.evaluation.fragment;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
 import android.view.Gravity;
 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 me.yokeyword.fragmentation.SupportFragment;
 
 /**
diff --git a/app/src/main/java/safeluck/drive/evaluation/render/GLRender.java b/app/src/main/java/safeluck/drive/evaluation/render/GLRender.java
new file mode 100644
index 0000000..d672f51
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/render/GLRender.java
@@ -0,0 +1,125 @@
+//package safeluck.drive.evaluation.render;
+//
+//import android.opengl.GLSurfaceView;
+//
+//import java.nio.ByteBuffer;
+//
+//import javax.microedition.khronos.egl.EGLConfig;
+//import javax.microedition.khronos.opengles.GL10;
+//
+///**
+// * MyApplication2
+// * Created by lzw on 2019/9/29. 13:31:28
+// * 閭锛�632393724@qq.com
+// * All Rights Saved! Chongqing AnYun Tech co. LTD
+// */
+//public class GLRender implements GLSurfaceView.Renderer {
+//    //鎺у埗鏃嬭浆鐨勮搴�
+//    private float rotate;
+//    @Override
+//    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
+//        //鍏抽棴鎶楁姈鍔�
+//        gl.glDisable(GL10.GL_DITHER);
+//        //璁剧疆绯荤粺瀵归�忚杩涜淇
+//        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
+//        gl.glClearColor(0, 0, 0, 0);
+//        //璁剧疆闃村奖骞虫粦妯″紡
+//        gl.glShadeModel(GL10.GL_SMOOTH);
+//        //鍚姩娣卞害娴嬭瘯
+//        gl.glEnable(GL10.GL_DEPTH_TEST);
+//        //璁剧疆娣卞害娴嬭瘯鐨勭被鍨�
+//        gl.glDepthFunc(GL10.GL_LEQUAL);
+//
+//    }
+//
+//    @Override
+//    public void onSurfaceChanged(GL10 gl, int width, int height) {
+//        //璁剧疆3D瑙嗙獥鐨勫ぇ灏忓強浣嶇疆
+//        gl.glViewport(0, 0, width, height);
+//        //灏嗗綋鍓嶇煩闃垫ā寮忚涓烘姇褰辩煩褰�
+//        gl.glMatrixMode(GL10.GL_PROJECTION);
+//        //鍒濆鍖栧崟浣嶇煩闃�
+//        gl.glLoadIdentity();
+//        //璁$畻閫忚绐楀彛鐨勫搴﹂珮搴︽瘮
+//        float ratio = (float) width / height;
+//        //璋冪敤姝ゆ柟娉曡缃�忚绐楀彛鐨勭┖闂村ぇ灏�
+//        gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);
+//
+//    }
+//
+//    @Override
+//    public void onDrawFrame(GL10 gl) {
+//        //娓呴櫎灞忓箷缂撳瓨鍜屾繁搴︾紦瀛�
+//        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
+//        //鍚敤椤剁偣鍧愭爣鏁版嵁
+//        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
+//        //鍚敤椤剁偣棰滆壊鏁版嵁
+//        gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
+//        //璁剧疆褰撳墠鐭╅樀鍫嗘爤涓烘ā鍨嬪爢鏍�
+//        gl.glMatrixMode(GL10.GL_MODELVIEW);
+//        //------缁樺埗绗竴涓浘褰�-----
+//        //閲嶇疆褰撳墠鐨勬ā鍨嬭鍥剧煩闃�
+//        gl.glLoadIdentity();
+//        gl.glTranslatef(0.95f, -0.8f, -1.5f); //1锔忊儯
+//        //璁剧疆椤剁偣浣嶇疆鏁版嵁
+//        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, PointData.floatBufferUtil(PointData.triangleData));
+//        //璁剧疆椤剁偣棰滆壊鏁版嵁
+//        gl.glColorPointer(4, GL10.GL_FIXED, 0, PointData.intBufferUtil(PointData.triangleColor));
+//        //鏍规嵁椤剁偣鏁版嵁缁樺埗骞抽潰鍥惧舰
+//        gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);
+//
+//        //-----缁樺埗绗簩涓浘褰�-----
+//        //閲嶇疆褰撳墠鐨勬ā鍨嬭鍥剧煩闃�
+//        gl.glLoadIdentity();
+//        gl.glTranslatef(0.95f, 0.8f, -1.5f);
+//        //璁剧疆椤剁偣浣嶇疆鏁版嵁
+//        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, PointData.floatBufferUtil(PointData.rectData));
+//        //璁剧疆椤剁偣棰滆壊鏁版嵁
+//        gl.glColorPointer(4, GL10.GL_FIXED, 0, PointData.intBufferUtil(PointData.rectColor));
+//        //鏇村叿椤剁偣鏁版嵁缁樺埗骞抽潰鍥惧舰
+//        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
+//
+//        //-----缁樺埗绗笁涓浘褰�----
+//        //閲嶇疆褰撳墠鐨勬ā鍨嬭鍥剧煩闃�
+//        gl.glLoadIdentity();
+//        gl.glTranslatef(-0.95f, 0.8f, -1.5f);
+//        //璁剧疆椤剁偣浣嶇疆鏁版嵁
+//        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, PointData.floatBufferUtil(PointData.rectData2));
+//        //鏍规嵁椤剁偣鏁版嵁缁樺埗骞抽潰鍥惧舰
+//        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
+//
+//        //-----缁樺埗绗洓涓浘褰�-----
+//        //閲嶇疆褰撳墠鐨勬ā鍨嬭鍥剧煩闃�
+//        gl.glLoadIdentity();
+//        gl.glTranslatef(-0.95f, -0.8f, -1.5f);
+//        //璁剧疆浣跨敤绾壊濉厖 **闇�瑕佹敞鎰�: 浣跨敤绾壊濉厖闇�瑕佺鐢ㄩ《鐐归鑹叉暟缁�
+//        gl.glColor4f(1.0f, 0.2f, 0.2f, 0.0f);
+//        gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
+//        //璁剧疆椤剁偣浣嶇疆鏁版嵁
+//        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, PointData.floatBufferUtil(PointData.pentacle));
+//        //鏍规嵁椤剁偣鏁版嵁缁樺埗鍥惧舰
+//        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 5);
+//
+//        //----缁樺埗绗簲涓浘褰�---
+//        //閲嶇疆褰撳墠鐨勬ā鍨嬭鍥剧煩闃�
+//        gl.glLoadIdentity();
+//        gl.glTranslatef(0f, 0f, -1.5f);
+//        gl.glRotatef(rotate, 0f, 0.2f, 0f);
+//        //璁剧疆椤剁偣浣嶇疆鏁版嵁
+//        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, PointData.floatBufferUtil(TDPointData.taperVertices));
+//        //鍚敤椤剁偣棰滆壊缁�
+//        gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
+//        //璁剧疆椤剁偣棰滆壊鏁版嵁
+//        gl.glColorPointer(4, GL10.GL_FIXED, 0, PointData.intBufferUtil(TDPointData.taperColors));
+//        //鎸塼aperFacetsBuffer鎸囧畾鐨勯潰缁樺埗涓夎褰�
+//        ByteBuffer byteBuffer = PointData.byteBufferUtil(TDPointData.taperFacets);
+//        gl.glDrawElements(GL10.GL_TRIANGLE_STRIP, byteBuffer.remaining(), GL10.GL_UNSIGNED_BYTE, byteBuffer);
+//
+//
+//        //缁樺埗缁撴潫
+//        gl.glFinish();
+//        gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
+//        //鏃嬭浆瑙掑害+1
+//        rotate += 1;
+//    }
+//}
diff --git a/app/src/main/java/safeluck/drive/evaluation/util/PermissionManager.java b/app/src/main/java/safeluck/drive/evaluation/util/PermissionManager.java
index 53d8792..8ea7849 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/PermissionManager.java
+++ b/app/src/main/java/safeluck/drive/evaluation/util/PermissionManager.java
@@ -7,9 +7,11 @@
 import android.net.Uri;
 import android.os.Build;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.ContextCompat;
+
+
+import androidx.annotation.NonNull;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
 
 import java.util.ArrayList;
 
@@ -67,7 +69,7 @@
         }
     }
 
-    public void recheckPermissions(int requestCode, @NonNull String[] permissions,@NonNull int[] grantReuslts){
+    public void recheckPermissions(int requestCode, @NonNull String[] permissions, @NonNull int[] grantReuslts){
         for (int grantResult :
                 grantReuslts) {
             if (grantResult == PackageManager.PERMISSION_DENIED) {
diff --git a/app/src/main/java/safeluck/drive/evaluation/viewmodels/MainViewModel.java b/app/src/main/java/safeluck/drive/evaluation/viewmodels/MainViewModel.java
index d9eccc3..32d6da5 100644
--- a/app/src/main/java/safeluck/drive/evaluation/viewmodels/MainViewModel.java
+++ b/app/src/main/java/safeluck/drive/evaluation/viewmodels/MainViewModel.java
@@ -1,11 +1,12 @@
 package safeluck.drive.evaluation.viewmodels;
 
 
-import android.arch.lifecycle.LiveData;
-import android.arch.lifecycle.MutableLiveData;
-import android.arch.lifecycle.ViewModel;
 import android.util.Log;
 
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+
 import java.util.concurrent.atomic.AtomicInteger;
 
 import com.anyun.exam.lib.MyLog;
diff --git a/build.gradle b/build.gradle
index fafc1b9..7c33808 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,6 +6,11 @@
         jcenter()
         
     }
+    ext{
+        roomVersion  ='2.2.1'
+        workVersion  ='2.2.0'
+        lifecycleVersion = '2.1.0'
+    }
     dependencies {
         classpath 'com.android.tools.build:gradle:3.4.0'
         
diff --git a/lib/src/main/java/com/anyun/exam/lib/RemoteService.java b/lib/src/main/java/com/anyun/exam/lib/RemoteService.java
index bec2015..87f49db 100644
--- a/lib/src/main/java/com/anyun/exam/lib/RemoteService.java
+++ b/lib/src/main/java/com/anyun/exam/lib/RemoteService.java
@@ -5,9 +5,10 @@
 import android.os.IBinder;
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
-import android.support.annotation.Nullable;
 import android.util.Log;
 
+import androidx.annotation.Nullable;
+
 import java.util.concurrent.atomic.AtomicBoolean;
 
 /**

--
Gitblit v1.8.0