From 2ccd3e37ca45696383d724b15c9109277c6c233f Mon Sep 17 00:00:00 2001 From: lizhanwei <Dana_Lee1016@126.com> Date: 星期四, 09 一月 2020 14:23:59 +0800 Subject: [PATCH] 1.增减rtf配置信息数据库表;2.rtkConfigFragment可以配置rtf平台ip/port/cityid/proviceid/phone;3,student表只有一个1001默认测试学员必须有 --- app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfig.java | 38 ++++++ app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigViewModel.java | 29 ++++ app/src/main/java/safeluck/drive/evaluation/app.java | 87 +++++++++++--- app/src/main/assets/students_file.json | 7 - app/src/main/java/safeluck/drive/evaluation/MainActivity.java | 2 app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigDao.java | 24 ++++ app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java | 8 + app/src/main/java/safeluck/drive/evaluation/fragment/RTKConfigFragment.java | 37 +++++ app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKWorkRepository.java | 64 ++++++++++ app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigWork.java | 50 ++++++++ 10 files changed, 316 insertions(+), 30 deletions(-) diff --git a/app/src/main/assets/students_file.json b/app/src/main/assets/students_file.json index 8423b11..d04d564 100644 --- a/app/src/main/assets/students_file.json +++ b/app/src/main/assets/students_file.json @@ -1,10 +1,5 @@ [ - { - "stu_id":1000, - "ID": "410923198910162546", - "name": "寮犱笁", - "sex":1 - }, + { "stu_id":1001, "ID": "410923198910162545", diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java b/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java index 07cc5de..d4d21a4 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java @@ -24,6 +24,9 @@ import safeluck.drive.evaluation.DB.failitems.FailProjDao; import safeluck.drive.evaluation.DB.failitems.FailedProj; import safeluck.drive.evaluation.DB.failitems.FailedProjWorker; +import safeluck.drive.evaluation.DB.rtktb.RTKConfig; +import safeluck.drive.evaluation.DB.rtktb.RTKConfigDao; +import safeluck.drive.evaluation.DB.rtktb.RTKConfigWork; /** @@ -32,7 +35,7 @@ * 閭锛�632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ -@Database(entities = {Student.class, CriteriaForI.class, FailedProj.class, CriteriaForII.class},version = 2,exportSchema = false) +@Database(entities = {Student.class, CriteriaForI.class, FailedProj.class, CriteriaForII.class, RTKConfig.class},version = 1,exportSchema = false) public abstract class WorkRoomDataBase extends RoomDatabase { private static final String TAG = "WorkRoomDataBase"; public abstract StudentDao getstudentDao(); @@ -72,11 +75,13 @@ OneTimeWorkRequest oneTimeWorkRequest1 = OneTimeWorkRequest.from(CriteriaForIWorker.class); OneTimeWorkRequest oneTimeWorkRequest3 = OneTimeWorkRequest.from(CriteriaForIIWorker.class); OneTimeWorkRequest oneTimeWorkRequest2 = OneTimeWorkRequest.from(FailedProjWorker.class); + OneTimeWorkRequest RTKConfigWorkRequest = OneTimeWorkRequest.from(RTKConfigWork.class); Log.i(TAG, "onCreate: 鍒涘缓鏁版嵁搴撳悗寤虹珛鏁版嵁琛ㄦ彃鍏ユ暟鎹�"); WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest); WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest1); WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest2); WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest3); + WorkManager.getInstance(mContext).enqueue(RTKConfigWorkRequest); } @Override @@ -93,4 +98,5 @@ } + public abstract RTKConfigDao getRTKConfigDao(); } diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/RTKConfig.java b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfig.java similarity index 71% rename from app/src/main/java/safeluck/drive/evaluation/bean/RTKConfig.java rename to app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfig.java index 438bdcf..7af5cb3 100644 --- a/app/src/main/java/safeluck/drive/evaluation/bean/RTKConfig.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfig.java @@ -1,4 +1,7 @@ -package safeluck.drive.evaluation.bean; +package safeluck.drive.evaluation.DB.rtktb; + +import androidx.room.Entity; +import androidx.room.PrimaryKey; /** * MyApplication2 @@ -6,6 +9,7 @@ * 閭锛�632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ +@Entity(tableName = "rtkconfig_table") public class RTKConfig { /** @@ -23,6 +27,7 @@ */ private String ip; + private int port; private int province; private int city; @@ -32,7 +37,19 @@ private String phone; private String password; private int registered; + @PrimaryKey + private int _id; + + public int get_id() { + return _id; + } + + public void set_id(int _id) { + this._id = _id; + } + private int interval; + public String getIp() { return ip; @@ -121,4 +138,23 @@ public void setInterval(int interval) { this.interval = interval; } + + @Override + public String toString() { + return "RTKConfig{" + + "ip='" + ip + '\'' + + ", port=" + port + + ", province=" + province + + ", city=" + city + + ", model='" + model + '\'' + + ", sn='" + sn + '\'' + + ", imei='" + imei + '\'' + + ", phone='" + phone + '\'' + + ", password='" + password + '\'' + + ", registered=" + registered + + ", interval=" + interval + + '}'; + } + + } diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigDao.java new file mode 100644 index 0000000..85d9de4 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigDao.java @@ -0,0 +1,24 @@ +package safeluck.drive.evaluation.DB.rtktb; + +import androidx.lifecycle.LiveData; +import androidx.room.Dao; +import androidx.room.Insert; +import androidx.room.OnConflictStrategy; +import androidx.room.Query; +import androidx.room.Update; + +@Dao +public interface RTKConfigDao { + @Insert(onConflict = OnConflictStrategy.REPLACE) + void insert(RTKConfig rtkConfig); + + + @Query("SELECT * from rtkconfig_table") + LiveData<RTKConfig> getRTKConfig(); + + @Update + void update(RTKConfig rtkConfig); + + @Query("SELECT * from rtkconfig_table") + RTKConfig getRTKConfigNoLive(); +} diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigViewModel.java b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigViewModel.java new file mode 100644 index 0000000..fa63110 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigViewModel.java @@ -0,0 +1,29 @@ +package safeluck.drive.evaluation.DB.rtktb; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; + + +public class RTKConfigViewModel extends AndroidViewModel { + RTKWorkRepository rtkWorkRepository; + public RTKConfigViewModel(@NonNull Application application) { + super(application); + rtkWorkRepository = new RTKWorkRepository(application); + } + + public void insertRTKConfig(final RTKConfig rtkConfig){ + rtkWorkRepository.insertRTKConfig(rtkConfig); + } + + public LiveData<RTKConfig> getRTKConfig(){ + return rtkWorkRepository.getRTKConfig(); + } + + + public void update(final RTKConfig rtkConfig){ + rtkWorkRepository.update(rtkConfig); + } +} diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigWork.java b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigWork.java new file mode 100644 index 0000000..9928694 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigWork.java @@ -0,0 +1,50 @@ +package safeluck.drive.evaluation.DB.rtktb; + +import android.content.Context; + +import androidx.annotation.NonNull; +import androidx.work.Worker; +import androidx.work.WorkerParameters; + +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.lang.reflect.Type; +import java.util.List; + +import safeluck.drive.evaluation.Constant; +import safeluck.drive.evaluation.DB.Student; +import safeluck.drive.evaluation.DB.WorkRoomDataBase; +import safeluck.drive.evaluation.util.FileUtil; + +public class RTKConfigWork extends Worker { + private Context context; + public RTKConfigWork(@NonNull Context context, @NonNull WorkerParameters workerParams) { + super(context, workerParams); + this.context = context; + } + + @NonNull + @Override + public Result doWork() { + try { + InputStream inputStream = getApplicationContext().getAssets().open(Constant.RTK_CONFIG_JSON); + InputStreamReader inputStreamReader = new InputStreamReader(inputStream); + JsonReader jsonReader = new JsonReader(inputStreamReader); + + Gson gson = new Gson(); + Type type = new TypeToken<RTKConfig>(){}.getType(); + + RTKConfig mstus=gson.fromJson(jsonReader, type); + WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getRTKConfigDao().insert(mstus); + } catch (IOException e) { + e.printStackTrace(); + return Result.failure(); + } + return Result.success(); + } +} diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKWorkRepository.java b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKWorkRepository.java new file mode 100644 index 0000000..4f67f92 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKWorkRepository.java @@ -0,0 +1,64 @@ +package safeluck.drive.evaluation.DB.rtktb; + +import android.app.Application; + +import androidx.lifecycle.LiveData; + +import com.anyun.exam.lib.MyLog; + +import safeluck.drive.evaluation.DB.WorkRoomDataBase; + +public class RTKWorkRepository { + private static final String TAG = "RTKWorkRepository"; + private RTKConfigDao rtkConfigDao; + private LiveData<RTKConfig> rtkConfig; + private RTKConfig rtkConfig1; + + public RTKWorkRepository(Application application) { + rtkConfigDao = WorkRoomDataBase.getWorkRoomDataBase(application).getRTKConfigDao(); + rtkConfig = rtkConfigDao.getRTKConfig(); + WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { + @Override + public void run() { + MyLog.d(TAG,"鑾峰彇RTK閰嶇疆淇℃伅琛�"); + rtkConfig1 = rtkConfigDao.getRTKConfigNoLive(); + } + }); + + } + + public void insertRTKConfig(final RTKConfig rtkConfig){ + WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { + @Override + public void run() { + rtkConfigDao.insert(rtkConfig); + } + }); + } + + public LiveData<RTKConfig> getRTKConfig(){ + return rtkConfig; + } + + public void update(final RTKConfig rtkConfig){ + WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { + @Override + public void run() { + rtkConfigDao.update(rtkConfig); + } + }); + } + + public RTKConfig getRTKConfigNoLive() { + if (rtkConfig1 == null){ + WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { + @Override + public void run() { + MyLog.d(TAG,"鍐嶆鑾峰彇RTK閰嶇疆淇℃伅琛�"); + rtkConfig1 = rtkConfigDao.getRTKConfigNoLive(); + } + }); + } + return rtkConfig1; + } +} diff --git a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java index 5ae9c29..98a0b6e 100644 --- a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java +++ b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java @@ -54,6 +54,8 @@ }); + + mPermissionsManager = new PermissionManager(this) { @Override public void authorized(int requestCode) { diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java index ee68c5c..8b384a0 100644 --- a/app/src/main/java/safeluck/drive/evaluation/app.java +++ b/app/src/main/java/safeluck/drive/evaluation/app.java @@ -1,8 +1,6 @@ package safeluck.drive.evaluation; import android.app.Application; -import android.os.Handler; -import android.util.Log; import android.widget.Toast; @@ -27,8 +25,8 @@ import safeluck.drive.evaluation.DB.failitems.FailedProj; import safeluck.drive.evaluation.DB.failitems.FailedProjRepository; -import safeluck.drive.evaluation.bean.RTKConfig; -import safeluck.drive.evaluation.cEventCenter.CEventCenter; +import safeluck.drive.evaluation.DB.rtktb.RTKConfig; +import safeluck.drive.evaluation.DB.rtktb.RTKWorkRepository; import safeluck.drive.evaluation.util.SystemUtil; /** @@ -42,7 +40,8 @@ private static final String TAG = "app"; private Gson gson; RTKConfig rtkConfig; - FailedProjRepository failedProjRepository; + FailedProjRepository failedProjRepository;//澶辫触椤圭洰琛ㄦ暟鎹簱 + RTKWorkRepository rtkWorkRepository;//淇濆瓨RTK閰嶇疆琛� Random random = new Random(); @Override @@ -68,19 +67,20 @@ //RTK閰嶇疆淇℃伅 - rtkConfig = new RTKConfig(); - rtkConfig.setCity(12); - rtkConfig.setImei("460123874561"); - rtkConfig.setInterval(1); - rtkConfig.setIp("47.93.80.84"); - rtkConfig.setModel("123"); - rtkConfig.setPhone("2019101500000001"); - rtkConfig.setPort(12125); - rtkConfig.setProvince(23); - rtkConfig.setSn("2019101500000001"); +// rtkConfig = new RTKConfig(); +// rtkConfig.setCity(12); +// rtkConfig.setImei("460123874561"); +// rtkConfig.setInterval(1); +// rtkConfig.setIp("47.93.80.84"); +// rtkConfig.setModel("123"); +// rtkConfig.setPhone("2019101500000001"); +// rtkConfig.setPort(12125); +// rtkConfig.setProvince(23); +// rtkConfig.setSn("2019101500000001"); //鏁版嵁搴撴搷浣� MyLog.i(TAG, "onCreate111"); failedProjRepository = new FailedProjRepository(this); + rtkWorkRepository = new RTKWorkRepository(this); } } @@ -106,7 +106,10 @@ Toast.makeText(this, "NDK start", Toast.LENGTH_SHORT).show(); break; case Constant.RTK_PLATFORM_REGISTER_STATUS: - failedProjRepository.insert(new FailedProj(Constant.SUBJECT_I, cmd + random.nextInt(30), Constant.TEST_STU_ID)); + + failedProjRepository.insert(new FailedProj(Constant.SUBJECT_I, cmd + random.nextInt(26), Constant.TEST_STU_ID)); + rtkConfig = rtkWorkRepository.getRTKConfigNoLive(); + try { JSONObject jsonObject = new JSONObject(json); String rtkLoginPwd = jsonObject.getString("password"); @@ -116,19 +119,49 @@ } catch (JSONException e) { e.printStackTrace(); } + rtkWorkRepository.insertRTKConfig(rtkConfig); break; case Constant.RTK_PLATFORM_REGISTER_RESULT: - failedProjRepository.insert(new FailedProj(Constant.SUBJECT_I, cmd + random.nextInt(30), Constant.TEST_STU_ID)); + failedProjRepository.insert(new FailedProj(Constant.SUBJECT_I, cmd + random.nextInt(26), Constant.TEST_STU_ID)); + + try { + JSONObject jsonObject = new JSONObject(json); + int rtklogincode = jsonObject.getInt("login_code"); + rtkConfig.setRegistered(rtklogincode); + } catch (JSONException e) { + e.printStackTrace(); + } break; case Constant.FETCH_RTK_PLATFORM_INFO: + rtkConfig = rtkWorkRepository.getRTKConfigNoLive(); if (gson == null) { gson = new Gson(); } - MyLog.i(TAG, "RTK閰嶇疆淇℃伅锛�" + gson.toJson(rtkConfig)); - AYSdk.getInstance().sendCmd(Constant.PUSH_RTK_PLATFORM_INFO, gson.toJson(rtkConfig)); + if (rtkConfig==null){ + + rtkConfig = rtkWorkRepository.getRTKConfigNoLive(); + } + if (rtkConfig != null){ + String rtkjson = gson.toJson(rtkConfig); + MyLog.i(TAG, "RTK閰嶇疆淇℃伅锛�" + rtkjson); + + //鍘婚櫎id瀛楁 + JSONObject jsonObject = null; + try { + jsonObject = new JSONObject(rtkjson); + } catch (JSONException e) { + e.printStackTrace(); + } + jsonObject.remove("_id"); + rtkjson = null; + rtkjson = jsonObject.toString(); + MyLog.i(TAG, "RTK閰嶇疆淇℃伅锛�" + rtkjson); + AYSdk.getInstance().sendCmd(Constant.PUSH_RTK_PLATFORM_INFO, rtkjson); + } + break; case Constant.JUDGE_INFO: @@ -140,6 +173,22 @@ MyLog.d(TAG, "鑰冭瘯寮�濮嬶紝闇�瑕佸垹闄や笂涓�涓�冭瘯瀛﹀憳鐨勬暟鎹簱澶辫触椤圭洰琛�"); failedProjRepository.deleteAll(); break; + case Constant.RTK_PLATFORM_CONNECT_STATUS: + rtkConfig = rtkWorkRepository.getRTKConfigNoLive(); + + try { + JSONObject jsonObject3 = new JSONObject(json); + String ip = jsonObject3.getString("ip"); + int port = jsonObject3.getInt("port"); + int reg_code = jsonObject3.getInt("connected"); + rtkConfig.setRegistered(reg_code); + rtkConfig.setIp(ip); + rtkConfig.setPort(port); + } catch (JSONException e) { + e.printStackTrace(); + } + rtkWorkRepository.insertRTKConfig(rtkConfig); + break; } } diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/RTKConfigFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/RTKConfigFragment.java index 2988784..e6506df 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/RTKConfigFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/RTKConfigFragment.java @@ -3,6 +3,10 @@ import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProviders; + +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -11,8 +15,9 @@ import com.google.gson.Gson; import me.yokeyword.fragmentation.SupportFragment; +import safeluck.drive.evaluation.DB.rtktb.RTKConfigViewModel; import safeluck.drive.evaluation.R; -import safeluck.drive.evaluation.bean.RTKConfig; +import safeluck.drive.evaluation.DB.rtktb.RTKConfig; /**FTP閰嶇疆UI * MyApplication2 @@ -25,6 +30,8 @@ private static final String TAG = "RTKConfigFragment"; private EditText et_ip,et_port,et_city_id,et_city_province,et_phone; + private RTKConfigViewModel rtkConfigViewModel; + private RTKConfig mRtkConfig; public static SupportFragment newInstance(){ return new RTKConfigFragment(); @@ -37,19 +44,43 @@ View view = inflater.inflate(R.layout.layout_rtk_setting,container,false); initView(view); + rtkConfigViewModel= ViewModelProviders.of(this).get(RTKConfigViewModel.class); + rtkConfigViewModel.getRTKConfig().observe(this, new Observer<RTKConfig>() { + @Override + public void onChanged(RTKConfig rtkConfig) { + Log.i(TAG, "RTKConfig Changed: "+rtkConfig.toString()); + mRtkConfig = rtkConfig; + et_ip.setText(rtkConfig.getIp()); + et_city_id.setText(String.valueOf(rtkConfig.getCity())); + et_city_province.setText(String.valueOf(rtkConfig.getProvince())); + et_port.setText(String.valueOf(rtkConfig.getPort())); + et_phone.setText(rtkConfig.getPhone()); + } + }); return view; } private void initView(View view) { view.findViewById(R.id.btn_save_rtk).setOnClickListener(this); + et_ip = view.findViewById(R.id.rtk_addr_ip); + et_city_id = view.findViewById(R.id.et_city_id); + et_city_province = view.findViewById(R.id.et_provice_id); + et_phone = view.findViewById(R.id.et_phone); + et_port = view.findViewById(R.id.rtk_addr_port); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_save_rtk: - Gson gson = new Gson(); - String rtkConfigjson = gson.toJson(RTKConfig.class); + if (mRtkConfig != null){ + mRtkConfig.setPort(Integer.parseInt(et_port.getText().toString().trim())); + mRtkConfig.setCity(Integer.parseInt(et_city_id.getText().toString().trim())); + mRtkConfig.setProvince(Integer.parseInt(et_city_province.getText().toString().trim())); + mRtkConfig.setIp(et_ip.getText().toString().trim()); + mRtkConfig.setPhone(et_phone.getText().toString().trim()); + rtkConfigViewModel.insertRTKConfig(mRtkConfig); + } break; } } -- Gitblit v1.8.0