From c125fc0a5ee47ef32db587899d972491231167ee Mon Sep 17 00:00:00 2001 From: yy1717 <fctom1215@outlook.com> Date: 星期四, 12 三月 2020 17:40:09 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- app/src/main/java/safeluck/drive/evaluation/Constant.java | 7 app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java | 7 app/src/main/assets/map.json | 8 app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt | 44 + app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWoker.java | 3 app/src/main/java/safeluck/drive/evaluation/worker/TimeWorker.kt | 21 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java | 523 +++++++++++++++++++---- app/src/main/java/safeluck/drive/evaluation/util/Utils.java | 56 ++ app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusInitWorker.java | 7 app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java | 372 +++++++++++++++- app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigDao.java | 2 app/src/main/java/safeluck/drive/evaluation/app.java | 4 app/src/main/java/safeluck/drive/evaluation/MainActivity.java | 37 app/src/main/java/safeluck/drive/evaluation/customview/MyDialogFragment.java | 1 app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusViewModel.java | 9 app/src/main/res/layout/layout_net_train.xml | 2 app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigViewModel.java | 2 app/src/main/java/safeluck/drive/evaluation/DB/Constant.java | 7 app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java | 163 ++++++ app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java | 14 app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusDao.java | 6 app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWorkRepo.java | 10 22 files changed, 1,117 insertions(+), 188 deletions(-) diff --git a/app/src/main/assets/map.json b/app/src/main/assets/map.json index 705fd4d..8d37d90 100644 --- a/app/src/main/assets/map.json +++ b/app/src/main/assets/map.json @@ -2,7 +2,7 @@ "id": 863, "item": 1, "point": [{ - "x-y": [-5.3706, 30.3648, -4.9011, 29.4905, -4.1911, 29.8586, -3.7009, 28.7631, -2.5941, 29.2631, -3.0647, 30.3601, -2.3782, 30.7019, -2.9159, 31.6925] + "x-y": [-9.3806, 37.3791, -8.9130, 36.4974, -8.1991, 36.8640, -7.6962, 35.7786, -6.6023, 36.2578, -7.0759, 37.3599, -6.4065, 37.7090, -6.8984, 38.6962] } ] }, @@ -10,7 +10,7 @@ "id": 864, "item": 3, "point": [{ - "x-y": [-5.3806, 30.3791, -4.9130, 29.4974, -4.1991, 29.8640, -3.6962, 28.7786, -2.6023, 29.2578, -3.0759, 30.3599, -2.4065, 30.7090, -2.8984, 31.6962] + "x-y": [-5.3806, 37.3791, -4.9130, 36.4974, -4.1991, 36.8640, -3.6962, 35.7786, -2.6023, 36.2578, -3.0759, 37.3599, -2.4065, 37.7090, -2.8984, 38.6962] } ] }, @@ -18,7 +18,7 @@ "id": 865, "item": 2, "point": [{ - "x-y": [-2.4065,30.709,-3.0759,30.3599,-2.6023,29.2578,-2.9669,29.0981,-3.4503,30.1946,-3.8247,30.0293,-3.3316,28.9383,-3.6962,28.7786,-4.1991,29.864] + "x-y": [-1.9065, 30.7090, -2.5759, 30.3599, -2.1023, 29.2578, -2.4669, 29.0981, -2.9503, 30.1946, -3.3247, 30.0293, -2.8316, 28.9383, -3.1962, 28.7786, -3.6991, 29.8640] } ] }, @@ -26,7 +26,7 @@ "id": 866, "item": 5, "point": [{ - "x-y": [-2.8984, 31.6962, -2.4065, 30.7090, -3.0759, 30.3599, -2.6023, 29.2578, -3.6962, 28.7786,-4.6667 ,30.7457] + "x-y": [1.1016, 31.6962, 1.5935, 30.7090, 0.9241, 30.3599, 1.3977, 29.2578, 0.3038, 28.7786, -0.6667, 30.7457] } ] }, diff --git a/app/src/main/java/safeluck/drive/evaluation/Constant.java b/app/src/main/java/safeluck/drive/evaluation/Constant.java index fcafc77..9e6c2d5 100644 --- a/app/src/main/java/safeluck/drive/evaluation/Constant.java +++ b/app/src/main/java/safeluck/drive/evaluation/Constant.java @@ -1,5 +1,7 @@ package safeluck.drive.evaluation; +import org.jetbrains.annotations.NotNull; + /** * MyApplication2 * Created by lzw on 2020/1/7. 18:01:40 @@ -84,4 +86,9 @@ public static final String BIND_RTK_SPEED_TOPIC = "BIND_RTK_SPEED_TOPIC"; public static final int EXIT_CURRENT_ITEM = 0;//閫�鍑烘煇鍦哄湴 public static String exam_enter_exitdata="exam_enter_exitdata"; + public static int Chang_di = 2; + public static int DaoLu_night = 3; + public static int DaoLu = 4; + @NotNull + public static final String TIME_MINUTE = "show_time_minute"; } diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/Constant.java b/app/src/main/java/safeluck/drive/evaluation/DB/Constant.java index 4295bbc..deb55f5 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/Constant.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/Constant.java @@ -18,4 +18,11 @@ public static final String RTK_CONFIG_SN = "sn"; @NotNull public static final String EXAM_STATUS_TYPE = "exam_status_type"; + public static final int EXAM_MAP_TYPE_REVERSE = 1; + public static final int EXAM_MAP_TYPE_RAMP = 2; + public static final int EXAM_MAP_TYPE_PARK = 3; + public static final int EXAM_MAP_TYPE_CURVE = 4; + public static final int EXAM_MAP_TYPE_ANGLE = 5; + public static final int FINISH_ITEM = 0;//璇ラ」鍦哄湴鑰冭瘯缁撴潫锛堝嚭鍦哄湴锛� + public static final int BEGIN_ITEM = 1;//璇ラ」鑰冭瘯寮�濮嬭繘鍏ュ満鍦� } diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java index 81da498..31bb742 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java @@ -26,6 +26,16 @@ //1 杩涘叆锛堟鍦ㄨ繘琛岃�冭瘯锛� 2-寰呰�� private int enter; + public ExamStatus(int map_id) { + this.map_id = map_id; + } + + public void setResult(int result) { + this.result = result; + } + + private int result=-1;//璇ラ」鑰冭瘯缁撴灉 榛樿-1 娌℃湁缁撴灉锛� 0-鎴愬姛 1-澶辫触 + //琛ㄧず宸茬粡鐐瑰嚮浜嗗紑濮嬭�冭瘯锛屽苟涓旀敹鍒颁簡鑰冭瘯搴旂瓟 0-鏈�冭瘯 2-鍦哄湴 3-妯℃嫙鐏厜锛岃矾鑰冿紝 4-璺�� private int startExam; @@ -78,4 +88,8 @@ ", startExam=" + startExam + '}'; } + + public int getResult() { + return result; + } } diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusDao.java index 7a8227f..d6f81e8 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusDao.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusDao.java @@ -2,6 +2,7 @@ import androidx.lifecycle.LiveData; import androidx.room.Dao; +import androidx.room.Delete; import androidx.room.Insert; import androidx.room.OnConflictStrategy; import androidx.room.Query; @@ -18,6 +19,8 @@ @Query("update exam_status set enter =:enter where map_id =:mapid") void updateEnter(int enter,int mapid); + @Query("update exam_status set result =:result where map_id =:mapid") + void updateItemResult(int result,int mapid); @Query("update exam_status set startExam =:startexam") void updateStartExam(int startexam); @@ -25,4 +28,7 @@ LiveData<Integer> getStartExam(); @Query("select startExam from exam_status where map_id=1") int getStartExamInt(); + + @Query("delete from exam_status") + void deleteAll(); } diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusInitWorker.java b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusInitWorker.java index 3527b3b..0376acb 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusInitWorker.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusInitWorker.java @@ -26,11 +26,12 @@ @NonNull @Override public Result doWork() { - MyLog.i(TAG,"exam_status琛╮eset 鍒濆鍖�"); - for (int i = 0; i < 5; i++) { + MyLog.i("exam_status琛╮eset 鍒濆鍖�"); + WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getExamStatusDao().deleteAll(); + for (int i = 0; i < 1; i++) { examStatus.setEnter(2);//榛樿寰呰�冮」鐩� examStatus.setStartExam(0);//榛樿娌℃湁寮�濮嬭�冭瘯 - examStatus.setMap_id(i+1); + examStatus.setMap_id(1); WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getExamStatusDao().insert(examStatus); } diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt index 66cc9f5..9e20043 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt +++ b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt @@ -2,20 +2,38 @@ import android.content.Context import android.util.Log +import android.widget.Toast import androidx.work.Data import androidx.work.Worker import androidx.work.WorkerParameters import com.anyun.exam.lib.AYSdk +import com.anyun.exam.lib.MyLog +import com.google.gson.Gson import org.json.JSONException import org.json.JSONObject import safeluck.drive.evaluation.DB.Constant import safeluck.drive.evaluation.DB.WorkRoomDataBase +import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig +import safeluck.drive.evaluation.bean.SignalConfigRemote class ExamStatusOutWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) { val TAG:String = "ExamStatusOutWorker" + private var signalConfiglist: MutableList<SignalConfigRemote> = ArrayList() + private val gson = Gson() + private var singalConfigs :List<SingalConfig> = ArrayList() override fun doWork(): Result { val examType =WorkRoomDataBase.getWorkRoomDataBase(applicationContext).examStatusDao.startExamInt; - Log.i(TAG,"鏌ュ埌鐨勮�冭瘯type="+examType) + singalConfigs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao._getSignalConfigs() + for (i in singalConfigs.indices) { + val signalConfigRemote = SignalConfigRemote() + signalConfigRemote.func_id = i + signalConfigRemote.gpio_num = singalConfigs.get(i).getIndex() + signalConfigRemote.level = singalConfigs.get(i).getHighLevel() + signalConfiglist.add(signalConfigRemote) + } + var indexs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao.allIndexs + sendSignalConfigsToRemote(indexs) + MyLog.i("鏌ュ埌鐨勮�冭瘯type="+examType) val data = Data.Builder().putInt(Constant.EXAM_STATUS_TYPE,examType).build() if (examType != safeluck.drive.evaluation.Constant.NONE_BEEN_START_EXAM) { try { @@ -31,4 +49,28 @@ return Result.success(data) } + private fun sendSignalConfigsToRemote(indexs: List<Int>) { + if (signalConfiglist.size > 0) { + if (listContainsSameValue(indexs)) { + Log.i(TAG, "sendSignalConfigsToRemote: 鏈夌浉鍚岀殑index锛屼笉鑳藉彂閫�" + gson.toJson(signalConfiglist)) + } else { + AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.SEND_CONFIG_SIGNAL, gson.toJson(signalConfiglist)) + } + } + } + + private fun listContainsSameValue(indexs: List<Int>): Boolean { + for (i in indexs.indices) { //鍙互榛樿鏄�0 0涓嶅垽鏂槸鍚︽湁鐩稿悓鐨刬ndex + if (indexs[i] == 0) { + continue + } + for (j in i + 1 until indexs.size) { + if (indexs[i] === indexs[j]) { + return true + } + } + } + return false + } + } \ No newline at end of file diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusViewModel.java b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusViewModel.java index 1ef2a68..fd52cf7 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusViewModel.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusViewModel.java @@ -46,4 +46,13 @@ ", startExam=" + startExam + '}'; } + + /** + * 鏇存柊Exam_status琛ㄧ殑result + * @param i result 1=鎴愬姛锛�0-澶辫触 + * @param map_id + */ + public void updateItemExamResult(int i, int map_id) { + examStatusWorkRepo.updateItemResult(i,map_id); + } } diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWoker.java b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWoker.java index 78458d5..b840c2e 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWoker.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWoker.java @@ -32,10 +32,11 @@ jsonObject = new JSONObject(str); int mapId = jsonObject.getInt("map_id"); int enter = jsonObject.getInt("enter"); + int type = jsonObject.getInt("type"); ExamStatus examStatus = new ExamStatus(); examStatus.setEnter(enter); examStatus.setMap_id(mapId); - examStatus.setMap_item(1); + examStatus.setMap_item(type); WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getExamStatusDao().insert(examStatus); return Result.success(); } catch (JSONException e) { diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWorkRepo.java b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWorkRepo.java index a3b467b..2199a40 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWorkRepo.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWorkRepo.java @@ -40,6 +40,7 @@ WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { @Override public void run() { + examStatusDao.updateStartExam(startex); } }); @@ -52,4 +53,13 @@ public LiveData<Integer> getStartExam() { return startExam; } + + public void updateItemResult(final int i, final int map_id) { + WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { + @Override + public void run() { + examStatusDao.updateItemResult(i,map_id); + } + }); + } } diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigDao.java index 1f3cabf..52f779d 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigDao.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigDao.java @@ -26,6 +26,8 @@ List<Integer> getAllIndexs(); @Query("select * from signal_config") + List<SingalConfig> _getSignalConfigs(); + @Query("select * from signal_config") LiveData<List<SingalConfig>> getSignalConfigs(); @Insert(onConflict = OnConflictStrategy.REPLACE) diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigViewModel.java b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigViewModel.java index cccb148..b58f86b 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigViewModel.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigViewModel.java @@ -22,6 +22,8 @@ workRepo.insertSignalConig(singalConfig); } + + public LiveData<List<SingalConfig>> getSignalConfigs(){ return signalConfigs; } diff --git a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java index 0cda1f6..3eca6b0 100644 --- a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java +++ b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java @@ -104,7 +104,6 @@ if (msgCode == Constant.NDK_START){ MyLog.i(TAG,"NDK_start,鍙戦�丷TK閰嶇疆"); sendRtkConfigInfo(); - sendSignalConfigsToRemote(); sendMcuUprgrade(); } } @@ -165,7 +164,7 @@ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_main); //鍒濆鍖杢ts - ExamPlatformData.getInstance().initTTS(this); + ExamPlatformData.getInstance().initTTS(getApplicationContext()); // TODO // 杩涜tcp杩炴帴 final String userId = "100002"; @@ -214,23 +213,23 @@ }); - signalConfigViewModel = ViewModelProviders.of(this).get(SignalConfigViewModel.class); - signalConfigViewModel.getSignalConfigs().observe(this, new Observer<List<SingalConfig>>() { - @Override - public void onChanged(List<SingalConfig> singalConfigs) { - signalConfiglist.clear(); - MyLog.i(TAG, "淇″彿閰嶇疆鍙戠敓鍙樺寲"); - - for (int i = 0; i < singalConfigs.size(); i++) { - SignalConfigRemote signalConfigRemote = new SignalConfigRemote(); - signalConfigRemote.setFunc_id(i); - signalConfigRemote.setGpio_num(singalConfigs.get(i).getIndex()); - signalConfigRemote.setLevel(singalConfigs.get(i).getHighLevel()); - signalConfiglist.add(signalConfigRemote); - } - sendSignalConfigsToRemote(); - } - }); +// signalConfigViewModel = ViewModelProviders.of(this).get(SignalConfigViewModel.class); +// signalConfigViewModel.getSignalConfigs().observe(this, new Observer<List<SingalConfig>>() { +// @Override +// public void onChanged(List<SingalConfig> singalConfigs) { +// signalConfiglist.clear(); +// MyLog.i(TAG, "淇″彿閰嶇疆鍙戠敓鍙樺寲"); +// +// for (int i = 0; i < singalConfigs.size(); i++) { +// SignalConfigRemote signalConfigRemote = new SignalConfigRemote(); +// signalConfigRemote.setFunc_id(i); +// signalConfigRemote.setGpio_num(singalConfigs.get(i).getIndex()); +// signalConfigRemote.setLevel(singalConfigs.get(i).getHighLevel()); +// signalConfiglist.add(signalConfigRemote); +// } +// sendSignalConfigsToRemote(); +// } +// }); mPermissionsManager = new PermissionManager(this) { @Override diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java index ed04816..db36839 100644 --- a/app/src/main/java/safeluck/drive/evaluation/app.java +++ b/app/src/main/java/safeluck/drive/evaluation/app.java @@ -329,7 +329,9 @@ jkMessage0206.speed = speed; jkMessage0206.fangXiang = (int)track_ture; jkMessage0206.rf = qf; - utc =utc.substring(0,15); + if (utc.length()>16){ + utc = utc.substring(0,16); + } jkMessage0206.timeBCD = utc; jkMessage0206.json =json; jkMessage0206.length = jkMessage0206.json.length(); 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 69cc989..0b425f3 100644 --- a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java +++ b/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java @@ -42,9 +42,9 @@ private static List<SimulateNightBean.QuestionBean> simulate_light_tips = new ArrayList<>(); static { examPlatformStrs.put(TCP_DISCONNECT,"鏈繛鎺�"); - examPlatformStrs.put(TCP_CONNECTED,"宸茶繛鎺�"); + examPlatformStrs.put(TCP_CONNECTED,"鏈櫥褰�"); examPlatformStrs.put(DEV_NOT_REGISTERED,"鏈敞鍐�"); - examPlatformStrs.put(DEV_REGISTERED,"宸叉敞鍐�"); + examPlatformStrs.put(DEV_REGISTERED,"鏈櫥褰�"); examPlatformStrs.put(DEV_NOT_LOGIN,"鏈櫥褰�"); examPlatformStrs.put(DEV_LOGIN,"宸茬櫥褰�"); @@ -69,7 +69,8 @@ simulate_light_tips.add(new SimulateNightBean.QuestionBean(6,"闆惧ぉ琛岄┒")); simulate_light_tips.add(new SimulateNightBean.QuestionBean(7,"鎷辨ˉ銆佷汉琛岄亾")); simulate_light_tips.add(new SimulateNightBean.QuestionBean(8,"澶滈棿鍦ㄩ亾璺笂鍙戠敓鏁呴殰锛屽Θ纰嶄氦閫氬張闅句互绉诲姩")); - simulate_light_tips.add(new SimulateNightBean.QuestionBean(9," 澶滈棿閫氳繃鎬ュ集銆佸潯璺�佹嫳妗ャ�佷汉琛屾í閬撱�佹垨鑰呮病鏈変氦閫氫俊鍙风伅鎺у埗鐨勮矾鍙�")); + //銆佹嫳妗ャ�佷汉琛屾í閬撱�佹垨鑰呮病鏈変氦閫氫俊鍙风伅鎺у埗鐨勮矾鍙� + simulate_light_tips.add(new SimulateNightBean.QuestionBean(9," 澶滈棿閫氳繃鎬ュ集銆佸潯璺�")); simulate_light_tips.add(new SimulateNightBean.QuestionBean(10,"娌℃湁浜ら�氭帶鍒剁伅涔嬭矾鍙�")); simulate_light_tips.add(new SimulateNightBean.QuestionBean(11,"涓存椂鍋滆溅")); simulate_light_tips.add(new SimulateNightBean.QuestionBean(12,"瓒呰溅")); diff --git a/app/src/main/java/safeluck/drive/evaluation/customview/MyDialogFragment.java b/app/src/main/java/safeluck/drive/evaluation/customview/MyDialogFragment.java index b1452c4..5b0b0ba 100644 --- a/app/src/main/java/safeluck/drive/evaluation/customview/MyDialogFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/customview/MyDialogFragment.java @@ -42,6 +42,7 @@ } } }).create(); + dialog.setCancelable(false); return dialog; } private Callback callback; 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 a58a499..3b3d097 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java @@ -8,6 +8,7 @@ import android.graphics.Path; import android.os.Bundle; import android.os.Handler; +import android.text.LoginFilter; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; @@ -124,7 +125,7 @@ private int map_id; private double gpsSpeed = 0; -// double map[][] = {{1, 1}, {10, 1}, {10, 10}, {1, 10}}; + double allMap[][][]; double map[][] = {{-2.4065, 30.7090}, {-3.0759, 30.3599}, { -2.6023, 29.2578}, {-3.3316,28.9383},{-3.8247,30.0293}, {-3.4503,30.1946}, {-2.9669,29.0981}, { -3.6962, 28.7786}, {-4.1991, 29.8640}}; double map_other[][] = {{-2.4065, 30.7090}, {-3.0759, 30.3599}, { -2.6023, 29.2578}, {-3.3316,28.9383},{-3.8247,30.0293}, @@ -208,7 +209,8 @@ }); } - public void DrawMap(List<Double> mainAnt, final double[][] map, final double[][] car, List<Integer>body, List<Integer> tire) { + public void DrawMap(List<Double> mainAnt, final double[][] map, final double[][] car, + List<Integer>body, List<Integer> tire) { if (canvas2 == null || bmp == null) { return; } @@ -416,10 +418,252 @@ // } // }); } + public void DrawMapAll(List<Double> mainAnt, final double[][][] map, final double[][] car, + List<Integer>body, List<Integer> tire) { + if (canvas2 == null || bmp == null) { + return; + } + long scale_x,scale_y; +// _mActivity.runOnUiThread(new Runnable() { +// @Override +// public void run() { + double base_x = 300, base_y = 20; + double max_x = 0, min_x = 0, max_y = 0, min_y = 0; + +// Log.d(TAG, "DrawMap map size " + map.length + " car size " + car.length); + + + for (int x = 0; x < map.length; x++) { + for (int j = 0; j < map[x].length; j++) { + if (x == 0&&j==0) { + max_x = map[0][0][0]; + min_x = map[0][0][0]; + max_y = map[0][0][1]; + min_y = map[0][0][1]; + } else { +// Log.i(TAG,String.format("map[%d][%d][0]=%f",x,j,map[x][j][0])); +// Log.i(TAG,String.format("map[%d][%d][1]=%f",x,j,map[x][j][1])); +// Log.i(TAG,String.format("max_x=%f,max_y=%f,min_x=%f,min_y=%f",max_x,max_y,min_x,min_y)); + if (max_x < map[x][j][0]) { + + max_x = map[x][j][0]; + } + if (min_x > map[x][j][0]) { + min_x = map[x][j][0]; + } + if (max_y < map[x][j][1]) { + max_y = map[x][j][1]; + } + if (min_y > map[x][j][1]) { + min_y = map[x][j][1]; + } + } + } + } + +// Log.d(TAG, "all 鍦板浘DrawMap max_x " + max_x + " max_y " + max_y + " min_x " + min_x + " min_y " + min_y); + if (map_other.length>9){ + for (int i = 0; i < map_other.length; i++) { + + if (max_x < map_other[i][0]) { + max_x = map_other[i][0]; + } + if (min_x > map_other[i][0]) { + min_x = map_other[i][0]; + } + if (max_y < map_other[i][1]) { + max_y = map_other[i][1]; + } + if (min_y > map_other[i][1]) { + min_y = map_other[i][1]; + } + } + } + + +// Log.d(TAG, "DrawMap鍙﹀涓�鏉℃洸绾� max_x " + max_x + " max_y " + max_y + " min_x " + min_x + " min_y " + min_y); + + for (int i = 0; i < car.length; i++) { + if (max_x < car[i][0]) { + max_x = car[i][0]; + } + if (min_x > car[i][0]) { + min_x = car[i][0]; + } + if (max_y < car[i][1]) { + max_y = car[i][1]; + } + if (min_y > car[i][1]) { + min_y = car[i][1]; + } + } + +// Log.d(TAG, "DrawMapAll 鍜岃溅姣攎ax_x " + max_x + " max_y " + max_y + " min_x " + min_x + " min_y " + min_y); + + scale_x = Math.round((screen_width - base_x - 10) / (max_x - min_x)); + scale_y = Math.round((screen_height - base_y - 10) / (max_y - min_y)); + + if (scale_x >= scale_y) { + scale_x = scale_y; + } else { + scale_y = scale_x; + } + +// Log.d(TAG, "DrawMapAll scale_x " + scale_x + " scale_y " + scale_y); + + + canvas2.drawColor(Color.WHITE); + + if (paint == null || canvas2==null){ + return; + } + paint.setStyle(Paint.Style.FILL_AND_STROKE); + paint.setColor(Color.BLUE); + + canvas2.drawCircle((float) (base_x + (mainAnt.get(0) - min_x) * scale_x), (float) (base_y + (0 - mainAnt.get(1) - min_y) * scale_y), 2, paint); + + paint.setColor(Color.RED); + canvas2.drawCircle((float) (base_x + (car[tire.get(0)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(0)][1] - min_y) * scale_y), 2.5f, paint); + canvas2.drawCircle((float) (base_x + (car[tire.get(1)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(1)][1] - min_y) * scale_y), 2.5f, paint); + canvas2.drawCircle((float) (base_x + (car[tire.get(2)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(2)][1] - min_y) * scale_y), 2.5f, paint); + canvas2.drawCircle((float) (base_x + (car[tire.get(3)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(3)][1] - min_y) * scale_y), 2.5f, paint); + + + + paint.setStyle(Paint.Style.STROKE); + paint.setColor(Color.BLACK); + + + + + + Path path = new Path(); + + for (int k = 0; k < map.length; k++) { + + + + + Log.i(TAG, String.format("all DrawMap: map[%d].length=[%d]",k,map[k].length)); + if (map[k].length < 9) { +// Log.d(TAG, String.format("map[%d][0][0]=%f,X=%f",k,map[k][0][0], (float) (base_x + (map[k][0][0] - min_x) * scale_x)) + String.format("map[%d][0][1]=%f,Y=%f",k,map[k][0][1], (float) (base_y + (map[k][0][1] - min_y) * scale_y))); + path.moveTo((float) (base_x + (map[k][0][0] - min_x) * scale_x), (float) (base_y + (map[k][0][1] - min_y) * scale_y)); + for (int i = 1; i < map[k].length; i++) { +// Log.i(TAG,String.format("map[%d][%d][0]=%f,to X=%f",k,i,map[k][i][0],(float) (base_x + (map[k][i][0] - min_x) * scale_x))); +// Log.i(TAG,String.format("map[%d][%d][1]=%f,to Y=%f",k,i,map[k][i][1],(float) (base_y + (map[k][i][1] - min_y) * scale_y))); + path.lineTo((float) (base_x + (map[k][i][0] - min_x) * scale_x), (float) (base_y + (map[k][i][1] - min_y) * scale_y)); + } + path.close(); + } else if (map[k].length == 9) { + path.moveTo((float) (base_x + (map[k][0][0] - min_x) * scale_x), (float) (base_y + (map[k][0][1] - min_y) * scale_y)); + path.lineTo((float) (base_x + (map[k][8][0] - min_x) * scale_x), (float) (base_y + (map[k][8][1] - min_y) * scale_y)); + + path.moveTo((float) (base_x + (map[k][2][0] - min_x) * scale_x), (float) (base_y + (map[k][2][1] - min_y) * scale_y)); + path.lineTo((float) (base_x + (map[k][1][0] - min_x) * scale_x), (float) (base_y + (map[k][1][1] - min_y) * scale_y)); + + path.moveTo((float) (base_x + (map[k][3][0] - min_x) * scale_x), (float) (base_y + (map[k][3][1] - min_y) * scale_y)); + path.lineTo((float) (base_x + (map[k][4][0] - min_x) * scale_x), (float) (base_y + (map[k][4][1] - min_y) * scale_y)); + + path.moveTo((float) (base_x + (map[k][6][0] - min_x) * scale_x), (float) (base_y + (map[k][6][1] - min_y) * scale_y)); + path.lineTo((float) (base_x + (map[k][5][0] - min_x) * scale_x), (float) (base_y + (map[k][5][1] - min_y) * scale_y)); + + path.moveTo((float) (base_x + (map[k][7][0] - min_x) * scale_x), (float) (base_y + (map[k][7][1] - min_y) * scale_y)); + path.lineTo((float) (base_x + (map[k][8][0] - min_x) * scale_x), (float) (base_y + (map[k][8][1] - min_y) * scale_y)); + } else { + path.moveTo((float) (base_x + (map[k][0][0] - min_x) * scale_x), (float) (base_y + (map[k][0][1] - min_y) * scale_y)); + for (int i = 1; i < map[k].length; i++) { + path.lineTo((float) (base_x + (map[k][i][0] - min_x) * scale_x), (float) (base_y + (map[k][i][1] - min_y) * scale_y)); + } + + if (map_other.length>9){ + path.moveTo((float) (base_x + (map_other[0][0] - min_x) * scale_x), (float) (base_y + (map_other[0][1] - min_y) * scale_y)); + for (int i = 1; i < map[k].length; i++) { + path.lineTo((float) (base_x + (map_other[i][0] - min_x) * scale_x), (float) (base_y + (map_other[i][1] - min_y) * scale_y)); + } + } + + for (int i = 0, j = 0; i < map[k].length && j < map_other.length; i++, j++) { + path.moveTo((float) (base_x + (map[k][i][0] - min_x) * scale_x), (float) (base_y + (map[k][i][1] - min_y) * scale_y)); + path.lineTo((float) (base_x + (map_other[j][0] - min_x) * scale_x), (float) (base_y + (map_other[j][1] - min_y) * scale_y)); + } + + } + + + } + + canvas2.drawPath(path, paint); + + path.moveTo((float) (base_x + (car[body.get(0)][0] - min_x) * scale_x), (float) (base_y + (car[body.get(0)][1] - min_y) * scale_y)); + for (int i = 1; i < body.size(); i++){ +// Log.d(TAG, "for 寰幆 DrawMap to X = " + (float) (base_x + (car[body.get(i)][0] - min_x) * scale_x)+ " Y = " + (float) (base_y + (car[body.get(i)][1] - min_y) * scale_y)); + Log.i(TAG,String.format("car[%d][0]=%f,to X =%f,car[%d][1]=%f,to Y=%f",i,car[body.get(i)][0], + (float) (base_x + (car[body.get(i)][0] - min_x) * scale_x),i,car[body.get(i)][1],(float) (base_y + (car[body.get(i)][1] - min_y) * scale_y))); + path.lineTo((float) (base_x + (car[body.get(i)][0] - min_x) * scale_x), (float) (base_y + (car[body.get(i)][1] - min_y) * scale_y)); + } + + path.close(); + + canvas2.drawPath(path, paint); + + + paint.setStyle(Paint.Style.FILL_AND_STROKE); + + if (osdHeading != null) { + Path pathText = new Path(); + pathText.moveTo(10, 170); + pathText.lineTo(700, 170); + canvas2.drawTextOnPath(osdHeading, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴� + } + + if (osdMoveDirect != null) { + Path pathText = new Path(); + pathText.moveTo(10, 30); + pathText.lineTo(700, 30); + canvas2.drawTextOnPath(osdMoveDirect, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴� + } + + if (osdRtkSpeed != null) { + Path pathText = new Path(); + pathText.moveTo(10, 240); + pathText.lineTo(700, 240); + canvas2.drawTextOnPath(osdRtkSpeed, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴� + } + + if (osdQf != null) { + Path pathText = new Path(); + pathText.moveTo(10, 120); + pathText.lineTo(700, 120); + canvas2.drawTextOnPath(osdQf, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴� + } + + { + BigDecimal bd = new BigDecimal(gpsSpeed); + bd = bd.setScale(3, BigDecimal.ROUND_HALF_UP); + + Path pathText = new Path(); + pathText.moveTo(10, 70); + pathText.lineTo(700, 70); + + canvas2.drawTextOnPath("GPS閫熷害:" + bd, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴� + } + + + // 鎻愪氦鐢诲竷 + Canvas canvas = holder.lockCanvas(); + if (canvas != null){ + + canvas.drawBitmap(bmp, 0, 0, paint); + holder.unlockCanvasAndPost(canvas); + } +// } +// }); + } int line = 0; int map_line = 0; int map_line_other = 0; + int sanwei = 0; private StringBuffer stringBuffer = new StringBuffer(); class MessageRemoteService{ public int msgCode; @@ -493,6 +737,7 @@ line = 0; map_line = 0; map_line_other = 0; + sanwei = 0; car = new double[points.size()/2][2]; @@ -553,52 +798,101 @@ examMaps = gson.fromJson(newmap.trim(),type); } + if (map_id == -1){ + allMap =new double[examMaps.size()][][]; + for (int i = 0; i < examMaps.size(); i++) { + ExamMap examMap = examMaps.get(i); + List<ExamMap.PointBean> pointBeanList = examMap.getPoint(); - for (int i = 0; i < examMaps.size(); i++) { - ExamMap examMap = examMaps.get(i); - if (map_id == examMap.getId()){ - List<ExamMap.PointBean> pointBeanList = examMap.getPoint(); - - for(int j=0; j<pointBeanList.size();j++){ - List<Double> xys = pointBeanList.get(j).getXy(); - if(j==0){ - map = new double[xys.size()/2][2]; - - for (int k=0; k<xys.size();k++){ - if ((k % 2) == 0) { - map[map_line][0] = xys.get(k); - } else { - double value = 0 - xys.get(k); - Log.i(TAG, "onCEvent: map鏂板��=" + value + " 浣嶇疆锛�" + k); - map[map_line][1] = value; - map_line++; - } - } - }else{ - MyLog.i(TAG,"鏆傛椂鏀寔鏇茬嚎"); - map_other = new double[xys.size()/2][2]; - for (int k=0; k<xys.size();k++){ - if ((k % 2) == 0) { - map_other[map_line_other][0] = xys.get(k); - } else { - double value = 0 - xys.get(k); - map_other[map_line_other][1] = value; - map_line_other++; - } - } - break; + for(int j=0; j<pointBeanList.size();j++){ + List<Double> xys = pointBeanList.get(j).getXy(); + if(j==0){ + map = new double[xys.size()/2][2]; + allMap[sanwei] = new double[xys.size()/2][2]; + map_line = 0; + for (int k=0; k<xys.size();k++){ + if ((k % 2) == 0) { + map[map_line][0] = xys.get(k); + } else { + double value = 0 - xys.get(k); + map[map_line][1] = value; + map_line++; } - - - } - break; + allMap[sanwei] = map.clone(); + sanwei++; + + }else{ +// MyLog.i(TAG,"all鏀寔鏇茬嚎"); + map_other = new double[xys.size()/2][2]; + for (int k=0; k<xys.size();k++){ + if ((k % 2) == 0) { + map_other[map_line_other][0] = xys.get(k); + } else { + double value = 0 - xys.get(k); + map_other[map_line_other][1] = value; + map_line_other++; + } + } } + + + } + + } + DrawMapAll(mainAnt,allMap,car,body,tire); + }else{ + for (int i = 0; i < examMaps.size(); i++) { + ExamMap examMap = examMaps.get(i); + if (map_id == examMap.getId()){ + List<ExamMap.PointBean> pointBeanList = examMap.getPoint(); + + for(int j=0; j<pointBeanList.size();j++){ + List<Double> xys = pointBeanList.get(j).getXy(); + if(j==0){ + map = new double[xys.size()/2][2]; + + + + for (int k=0; k<xys.size();k++){ + if ((k % 2) == 0) { + map[map_line][0] = xys.get(k); + } else { + double value = 0 - xys.get(k); + Log.i(TAG, "onCEvent: map鏂板��=" + value + " 浣嶇疆锛�" + k); + map[map_line][1] = value; + map_line++; + } + } + }else{ + MyLog.i(TAG,"鏆傛椂鏀寔鏇茬嚎"); + map_other = new double[xys.size()/2][2]; + for (int k=0; k<xys.size();k++){ + if ((k % 2) == 0) { + map_other[map_line_other][0] = xys.get(k); + } else { + double value = 0 - xys.get(k); + map_other[map_line_other][1] = value; + map_line_other++; + } + } + break; + } + + + + } + break; + } + } + DrawMap(mainAnt, map, car, body, tire); } + + } } } } 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 edbca12..21612d1 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java @@ -23,6 +23,8 @@ import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders; import androidx.work.OneTimeWorkRequest; +import androidx.work.PeriodicWorkRequest; +import androidx.work.WorkInfo; import androidx.work.WorkManager; import com.anyun.exam.lib.AYSdk; @@ -37,6 +39,7 @@ import java.util.Date; import java.util.List; import java.util.Random; +import java.util.concurrent.TimeUnit; import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.Constant; @@ -65,6 +68,9 @@ import safeluck.drive.evaluation.platformMessage.JKMessage0203; import safeluck.drive.evaluation.platformMessage.JKMessage0204; import safeluck.drive.evaluation.util.Utils; +import safeluck.drive.evaluation.worker.TimeWorker; + +import static androidx.work.PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS; /** * 鑱旂綉璁粌UI @@ -91,7 +97,7 @@ private int item_id;//鎵e垎鍒嗘暟鎬诲拰 private ExamStatusViewModel examStatusViewModel; private static final int ADD_DATA = 1; - private TextView tv_speed,tv_total_score,tv_sat_num,tv_name,tv_id,tv_work_platform; + private TextView tv_speed,tv_total_score,tv_sat_num,tv_name,tv_id,tv_work_platform,tv_network_time; private double speed=0.0; private ImageView iv_rtk_status,iv_head; @@ -112,12 +118,13 @@ @Override public boolean handleMessage(Message msg) { if (msg.what == ADD_DATA){ + MyLog.i("handler add_data totalScore="+currTotalScore); tv_total_score.setText(getResources().getString(R.string.total_score,currTotalScore)); - houseView.setColor(whatPaintColor(examStatusList.get(0))); - av_podao.setColor(whatPaintColor(examStatusList.get(1))); - av_park.setColor(whatPaintColor(examStatusList.get(2))); - av_curve.setColor(whatPaintColor(examStatusList.get(3))); - av_zhijiao.setColor(whatPaintColor(examStatusList.get(4))); + houseView.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_REVERSE));//鍊掕溅鍏ュ簱 type =1 + av_podao.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_RAMP)); + av_park.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_PARK)); + av_curve.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_CURVE)); + av_zhijiao.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_ANGLE)); } if (msg.what == SPEED_DATA){ tv_speed.setText(getResources().getString(R.string.speed,speed)); @@ -130,7 +137,12 @@ if (result == 0) { JKMessage0201 jkMessage0201 = new JKMessage0201(); jkMessage0201.phone = ExamPlatformData.getInstance().getPhone(); - jkMessage0201.currentExam = 0; + if (exam_type==Constant.Chang_di){ + jkMessage0201.currentExam = 0; + }else{ + jkMessage0201.currentExam = 1; + } + jkMessage0201.id = icStr; MessageProcessor.getInstance().sendMessage(jkMessage0201); } @@ -143,6 +155,87 @@ return false; } }); + + private int aaa(int type) { + if (examStatusList!=null &&examStatusList.size()>0){ + for (ExamStatus examStatus: + examStatusList) { + if (type == examStatus.getMap_item()){ + if (examStatus.getEnter() == safeluck.drive.evaluation.DB.Constant.BEGIN_ITEM){ + //杩涘叆鑰冨満 + if (examStatusList.get(0).getStartExam() == Constant.NONE_BEEN_START_EXAM){ + //缁撴潫鑰冭瘯浜� + MyLog.i("杩涘叆鑰冨満缁撴潫鑰冭瘯锛宻tartexam="+examStatus.getStartExam()); + return getResources().getColor(R.color.colorAccent); + }else{ + MyLog.i("杩涘叆鑰冨満锛宼ype="+type); + return getResources().getColor(R.color.pink); + } + + + }else if (examStatus.getEnter() == safeluck.drive.evaluation.DB.Constant.FINISH_ITEM){ + + if (examStatusList.get(0).getStartExam()==Constant.NONE_BEEN_START_EXAM){ + return getResources().getColor(R.color.examing); + } + + switch (type) { + case 1://鍊掑簱 + if (item_conents.contains("鍊掕溅鍏ュ簱")) { + MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); + + return getResources().getColor(R.color.colorAccent); + }else{ + ExamPlatformData.getInstance().getTTS().speak("鍊掕溅鍏ュ簱鍚堟牸"); + return getResources().getColor(R.color.train_btn_return); + } + case 2: + if (item_conents.contains("鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝�")) { + MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); + return getResources().getColor(R.color.colorAccent); + }else{ + ExamPlatformData.getInstance().getTTS().speak("鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝ュ悎鏍�"); + return getResources().getColor(R.color.train_btn_return); + } + case 3: + if (item_conents.contains("渚ф柟鍋滆溅")) { + MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); + return getResources().getColor(R.color.colorAccent); + }else{ + ExamPlatformData.getInstance().getTTS().speak("渚ф柟鍋滆溅鍚堟牸"); + return getResources().getColor(R.color.train_btn_return); + } + case 4: + if (item_conents.contains("鏇茬嚎琛岄┒")) { + MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); + return getResources().getColor(R.color.colorAccent); + }else{ + ExamPlatformData.getInstance().getTTS().speak("鏇茬嚎琛岄┒鍚堟牸"); + examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); + return getResources().getColor(R.color.train_btn_return); + } + case 5: + if (item_conents.contains("鐩磋杞集")) { + MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); + return getResources().getColor(R.color.colorAccent); + }else{ + MyLog.i("璇ラ」鑰冭瘯鎴愬姛锛宼ype="+type); + ExamPlatformData.getInstance().getTTS().speak("鐩磋杞集鍚堟牸"); + return getResources().getColor(R.color.train_btn_return); + } + + + + } + + }else{ + return getResources().getColor(R.color.examing); + } + } + } + } + return getResources().getColor(R.color.examing); + } @Nullable @Override @@ -157,6 +250,7 @@ if (failedProj_selects != null && failedProj_selects.size()>0){ item_id = 0; + currTotalScore = 100; mArrayList.clear(); item_conents.clear(); for (FailedProj_select f : @@ -171,14 +265,15 @@ } //TODO 鍙戦�丣KMessage0203 缁欏钩鍙帮紝杩欏効鏈夌偣澶嶆潅锛岀湅鎬庝箞澶勭悊 sendJKMessage0203(failedProj_selects); + MyLog.i("娌℃墸鍒嗕箣鍓嶅緱鍒嗭細"+currTotalScore); currTotalScore -=item_id; MyLog.i("褰撳墠寰楀垎锛�"+currTotalScore); if (currTotalScore < Constant.PASSING_SCORE){ - MyLog.i(TAG,"浣庝簬80锛屼笉鍚堟牸"+currTotalScore); + MyLog.i("浣庝簬80锛屼笉鍚堟牸"+currTotalScore); ExamPlatformData.getInstance().getTTS().speak("鑰冭瘯涓嶅悎鏍�"); - stopExam(); +// stopExam(); } - MyLog.i(TAG,"鐩戞祴鍒版湁澶辫触椤圭洰鍔犲叆锛岄�氱煡UI鏇存柊棰滆壊"); + MyLog.i("鐩戞祴鍒版湁澶辫触椤圭洰鍔犲叆锛岄�氱煡UI鏇存柊棰滆壊"); mHandler.obtainMessage(ADD_DATA).sendToTarget(); }else{ MyLog.i(TAG,"澶辫触椤圭洰鏁版嵁琛ㄨ娓呯┖鏇存柊UI"); @@ -267,7 +362,12 @@ failedProj_selects.get(i).getScore_deducting()+"鍒�")); MyLog.i("娌℃湁鐩稿悓鐨剆n锛屽彂閫�"+failedProj_selects.get(i).getSn()); sns.add(failedProj_selects.get(i).getSn()); - jkMessage0203.timeBCD = failedProj_selects.get(i).getUtc(); + String utc = failedProj_selects.get(i).getUtc(); + if (!TextUtils.isEmpty(utc)&&utc.length()>12){ + utc =utc.substring(0,12); + } + jkMessage0203.timeBCD = utc ; + jkMessage0203.fail_item_id = failedProj_selects.get(i).getEmp_id(); jkMessage0203.fail_score = failedProj_selects.get(i).getScore_deducting(); jkMessage0203.fail_reason = failedProj_selects.get(i).getDeducting_reason(); @@ -308,7 +408,7 @@ switch (status) { case 0://鑰冭瘯瀹屾垚 switch (map_id) { - case 863://鍊掑簱 + case 1://鍊掑簱 if (item_conents.contains("鍊掕溅鍏ュ簱")) { return getResources().getColor(R.color.colorAccent); }else{ @@ -366,6 +466,25 @@ tv_sat_num = view.findViewById(R.id.tv_sat_num); tv_speed = view.findViewById(R.id.tv_speed); tv_total_score = view.findViewById(R.id.tv_total_score); + tv_network_time = view.findViewById(R.id.network_time); + + + PeriodicWorkRequest periodicWorkRequest = new PeriodicWorkRequest.Builder(TimeWorker.class,MIN_PERIODIC_INTERVAL_MILLIS, TimeUnit.MICROSECONDS).build(); + WorkManager.getInstance(getContext().getApplicationContext()).enqueue(periodicWorkRequest); + WorkManager.getInstance(getContext().getApplicationContext()).getWorkInfoByIdLiveData(periodicWorkRequest.getId()) + .observe(this, new Observer<WorkInfo>() { + @Override + public void onChanged(WorkInfo workInfo) { + if (workInfo!= null&&workInfo.getState().isFinished()){ + String time = workInfo.getOutputData().getString(Constant.TIME_MINUTE); + MyLog.i("Time="+time); + tv_network_time.setText(time); + } + + } + }); + tv_network_time.setText(Utils.getHHmm()); + tv_speed.setText(getResources().getString(R.string.speed,speed)); view.findViewById(R.id.btn_return).setOnClickListener(this); @@ -406,6 +525,10 @@ public void onClick(View v) { switch (v.getId()) { case R.id.btn_start: + OneTimeWorkRequest examStatusInitWork = OneTimeWorkRequest.from(ExamStatusInitWorker.class); + WorkManager.getInstance(_mActivity).enqueue(examStatusInitWork); + item_id = 0; + currTotalScore = 100; //TODO 鍙戦�丣KMessage0202 缁欏钩鍙帮紝寮�濮嬭�冭瘯 final JKMessage0202 jkMessage0202 = new JKMessage0202(); jkMessage0202.phone = ExamPlatformData.getInstance().getPhone(); @@ -423,6 +546,7 @@ @Override public void changKao() { exam_type = 2; + examStatusViewModel.updateStartExam(exam_type); sendExamJson(1,exam_type); ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭�冭瘯"); jkMessage0202.curr_exam = 0; @@ -433,6 +557,7 @@ @Override public void luKao() { exam_type = 3; + examStatusViewModel.updateStartExam(exam_type); sendExamJson(1,exam_type); if (simulateNightBean == null){ simulateNightBean = new SimulateNightBean(); @@ -498,7 +623,7 @@ private void sendExamJson(int i,int type) { try { - examStatusViewModel.updateStartExam(type); + JSONObject jsonObject = new JSONObject(); jsonObject.put("exam", i); jsonObject.put("type", type); @@ -512,16 +637,14 @@ private void stopExam() { MyLog.i(TAG,"缁撴潫鑰冭瘯"); - //娓呯┖宸茬粡瀛樺湪鐨剆ns - sns.clear(); - item_id = 0; - currTotalScore = 100; + + tv_total_score.setText(String.valueOf(currTotalScore)); iv_head.getDrawable().setLevel(0); - OneTimeWorkRequest examStatusInitWork = OneTimeWorkRequest.from(ExamStatusInitWorker.class); - WorkManager.getInstance(_mActivity).enqueue(examStatusInitWork); + ExamPlatformData.getInstance().getTTS().speak("缁撴潫鑰冭瘯"); - sendExamJson(0,exam_type); + examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM); + sendExamJson(0,0);//缁撴潫鑰冭瘯 exstart=0 //TODO 鍙戦�丣KMessage0204缁欏钩鍙� 缁撴潫鑰冭瘯 JKMessage0204 jkMessage0204 = new JKMessage0204(); jkMessage0204.phone = ExamPlatformData.getInstance().getPhone(); 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 95e0c0c..e0031b7 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java @@ -1,10 +1,14 @@ package safeluck.drive.evaluation.fragment; +import android.app.AlarmManager; +import android.app.PendingIntent; import android.content.Context; +import android.content.Intent; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.app.AlarmManagerCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders; import androidx.work.OneTimeWorkRequest; @@ -12,8 +16,11 @@ import android.os.Handler; import android.os.Message; +import android.os.SystemClock; +import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.Button; @@ -24,15 +31,21 @@ import com.anyun.exam.lib.AYSdk; import com.anyun.exam.lib.MyLog; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; import java.util.List; +import java.util.Random; import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.Constant; +import safeluck.drive.evaluation.DB.Student; +import safeluck.drive.evaluation.DB.WokViewModel; import safeluck.drive.evaluation.DB.appstatusdb.AppStatus; import safeluck.drive.evaluation.DB.appstatusdb.AppStatusViewModel; import safeluck.drive.evaluation.DB.exam_status.ExamStatus; @@ -42,11 +55,20 @@ import safeluck.drive.evaluation.DB.failitems.FailedProj_select; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.adapter.ScoreAdapter; +import safeluck.drive.evaluation.bean.ExamPlatformData; import safeluck.drive.evaluation.bean.ScoreBean; +import safeluck.drive.evaluation.bean.SimulateNightBean; import safeluck.drive.evaluation.cEventCenter.CEventCenter; import safeluck.drive.evaluation.cEventCenter.ICEventListener; import safeluck.drive.evaluation.customview.ArrowView; import safeluck.drive.evaluation.customview.HouseView; +import safeluck.drive.evaluation.customview.MyDialogFragment; +import safeluck.drive.evaluation.im.MessageProcessor; +import safeluck.drive.evaluation.platformMessage.JKMessage0201; +import safeluck.drive.evaluation.platformMessage.JKMessage0202; +import safeluck.drive.evaluation.platformMessage.JKMessage0203; +import safeluck.drive.evaluation.platformMessage.JKMessage0204; +import safeluck.drive.evaluation.util.Utils; /**鍗曟満璁粌UI * MyApplication2 @@ -57,66 +79,178 @@ public class TrainFragment extends SupportFragment implements View.OnClickListener { private static final String TAG = TrainFragment.class.getSimpleName(); - private ListView mListView ; - private Button btn_train; - private ScoreAdapter mScoreAdapter; + private static final int REQUEST_CODE = 1000; + private static final String ALARM_ACTION_CODE = "com.anyun.alermbroadcast"; - private int item_id;//鎵e垎鍒嗘暟鎬诲拰 + public static SupportFragment newInstance() { + return new TrainFragment(); + } + + private int exam_type = 2;//2 鍦哄湴锛�3 閬撹矾锛屾ā鎷熷鑰冿紱4 閬撹矾锛屽疄闄呭鑰冿紱 + private ListView mListView; + private Button btn_start_exam; + private TextView tv_stop;//鍛煎彨璇锋眰锛堢粨鏉熻�冭瘯锛� + private Gson gson = new Gson(); + private ScoreAdapter mScoreAdapter; private ArrowView av_zhijiao, av_curve, av_park, av_podao; private HouseView houseView; private List<ExamStatus> examStatusList = new ArrayList<>(); private List<String> item_conents = new ArrayList<>();//鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝� + private int item_id;//鎵e垎鍒嗘暟鎬诲拰 private ExamStatusViewModel examStatusViewModel; private static final int ADD_DATA = 1; - private static final int SPEED_DATA = 2; + private TextView tv_speed,tv_total_score,tv_sat_num,tv_name,tv_id,tv_work_platform; + private double speed=0.0; private ImageView iv_rtk_status,iv_head; - private List<ScoreBean> mArrayList = new ArrayList<>(); - private View tv_stop; - private TextView tv_speed,tv_total_score,tv_sat_num; private int currTotalScore = 100; - private double speed=0.0; + private List<ScoreBean> mArrayList = new ArrayList<>(); + private static final int SPEED_DATA = 2; + private FailedProjViewModel failedProjViewModel; + String icson;//杩斿洖鐨刬c鍗′俊鎭� json + private Random random = new Random(); + private List<SimulateNightBean.QuestionBean> tempQs= new ArrayList<>(); + + + private Handler mHandler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if (msg.what == ADD_DATA){ + MyLog.i("handler add_data totalScore="+currTotalScore); tv_total_score.setText(getResources().getString(R.string.total_score,currTotalScore)); - houseView.setColor(whatPaintColor(examStatusList.get(0))); - av_podao.setColor(whatPaintColor(examStatusList.get(1))); - av_park.setColor(whatPaintColor(examStatusList.get(2))); - av_curve.setColor(whatPaintColor(examStatusList.get(3))); - av_zhijiao.setColor(whatPaintColor(examStatusList.get(4))); + houseView.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_REVERSE));//鍊掕溅鍏ュ簱 type =1 + av_podao.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_RAMP)); + av_park.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_PARK)); + av_curve.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_CURVE)); + av_zhijiao.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_ANGLE)); } if (msg.what == SPEED_DATA){ tv_speed.setText(getResources().getString(R.string.speed,speed)); + } + if (msg.what == Constant.IC_ID){ + try { + JSONObject jsSpeed = new JSONObject(icson); + int result = jsSpeed.getInt("result"); + String icStr = jsSpeed.getString("serialno"); + if (result == 0) { + JKMessage0201 jkMessage0201 = new JKMessage0201(); + jkMessage0201.phone = ExamPlatformData.getInstance().getPhone(); + if (exam_type==Constant.Chang_di){ + jkMessage0201.currentExam = 0; + }else{ + jkMessage0201.currentExam = 1; + } + + jkMessage0201.id = icStr; + MessageProcessor.getInstance().sendMessage(jkMessage0201); + } + + }catch (JSONException e){ + + } + } return false; } }); + private int aaa(int type) { + if (examStatusList!=null &&examStatusList.size()>0){ + for (ExamStatus examStatus: + examStatusList) { + if (type == examStatus.getMap_item()){ + if (examStatus.getEnter() == safeluck.drive.evaluation.DB.Constant.BEGIN_ITEM){ + //杩涘叆鑰冨満 + if (examStatusList.get(0).getStartExam() == Constant.NONE_BEEN_START_EXAM){ + //缁撴潫鑰冭瘯浜� + MyLog.i("杩涘叆鑰冨満缁撴潫鑰冭瘯锛宻tartexam="+examStatus.getStartExam()); + return getResources().getColor(R.color.colorAccent); + }else{ + MyLog.i("杩涘叆鑰冨満锛宼ype="+type); + return getResources().getColor(R.color.pink); + } - public static SupportFragment newInstance(){ - return new TrainFragment(); + }else if (examStatus.getEnter() == safeluck.drive.evaluation.DB.Constant.FINISH_ITEM){ + + if (examStatusList.get(0).getStartExam()==Constant.NONE_BEEN_START_EXAM){ + return getResources().getColor(R.color.examing); + } + + switch (type) { + case 1://鍊掑簱 + if (item_conents.contains("鍊掕溅鍏ュ簱")) { + MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); + + return getResources().getColor(R.color.colorAccent); + }else{ + ExamPlatformData.getInstance().getTTS().speak("鍊掕溅鍏ュ簱鍚堟牸"); + return getResources().getColor(R.color.train_btn_return); + } + case 2: + if (item_conents.contains("鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝�")) { + MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); + return getResources().getColor(R.color.colorAccent); + }else{ + ExamPlatformData.getInstance().getTTS().speak("鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝ュ悎鏍�"); + return getResources().getColor(R.color.train_btn_return); + } + case 3: + if (item_conents.contains("渚ф柟鍋滆溅")) { + MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); + return getResources().getColor(R.color.colorAccent); + }else{ + ExamPlatformData.getInstance().getTTS().speak("渚ф柟鍋滆溅鍚堟牸"); + return getResources().getColor(R.color.train_btn_return); + } + case 4: + if (item_conents.contains("鏇茬嚎琛岄┒")) { + MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); + return getResources().getColor(R.color.colorAccent); + }else{ + ExamPlatformData.getInstance().getTTS().speak("鏇茬嚎琛岄┒鍚堟牸"); + return getResources().getColor(R.color.train_btn_return); + } + case 5: + if (item_conents.contains("鐩磋杞集")) { + MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); + return getResources().getColor(R.color.colorAccent); + }else{ + MyLog.i("璇ラ」鑰冭瘯鎴愬姛锛宼ype="+type); + ExamPlatformData.getInstance().getTTS().speak("鐩磋杞集鍚堟牸"); + return getResources().getColor(R.color.train_btn_return); + } + + + + } + + }else{ + return getResources().getColor(R.color.examing); + } + } + } + } + return getResources().getColor(R.color.examing); } @Nullable @Override - public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.layout_train_fragment,container,false); + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.layout_train_fragment, container, false); initView(view); - - - FailedProjViewModel failedProjViewModel =ViewModelProviders.of(this).get(FailedProjViewModel.class); + failedProjViewModel = ViewModelProviders.of(this).get(FailedProjViewModel.class); failedProjViewModel.getFailedProjectsForI(Constant.TEST_STU_ID).observe(this, new Observer<List<FailedProj_select>>() { @Override public void onChanged(List<FailedProj_select> failedProj_selects) { if (failedProj_selects != null && failedProj_selects.size()>0){ item_id = 0; + currTotalScore = 100; mArrayList.clear(); item_conents.clear(); for (FailedProj_select f : @@ -125,22 +259,28 @@ Log.i(TAG, "onChanged: " + f.toString()); mArrayList.add(new ScoreBean(f.getScore_deducting(), f.getItem_content(), f.getDeducting_reason())); item_conents.add(f.getItem_content()); + Collections.reverse(mArrayList); mScoreAdapter.addDatas(mArrayList); + MyLog.i("item_score="+item_id); } + //TODO 鍙戦�丣KMessage0203 缁欏钩鍙帮紝杩欏効鏈夌偣澶嶆潅锛岀湅鎬庝箞澶勭悊 + sendJKMessage0203(failedProj_selects); + MyLog.i("娌℃墸鍒嗕箣鍓嶅緱鍒嗭細"+currTotalScore); currTotalScore -=item_id; + MyLog.i("褰撳墠寰楀垎锛�"+currTotalScore); if (currTotalScore < Constant.PASSING_SCORE){ - MyLog.i(TAG,"浣庝簬80锛屼笉鍚堟牸"); + MyLog.i("浣庝簬80锛屼笉鍚堟牸"+currTotalScore); + ExamPlatformData.getInstance().getTTS().speak("鑰冭瘯涓嶅悎鏍�"); stopExam(); } - - MyLog.i(TAG,"鐩戞祴鍒版湁澶辫触椤圭洰鍔犲叆锛岄�氱煡UI鏇存柊棰滆壊"); + MyLog.i("鐩戞祴鍒版湁澶辫触椤圭洰鍔犲叆锛岄�氱煡UI鏇存柊棰滆壊"); mHandler.obtainMessage(ADD_DATA).sendToTarget(); - }else{ MyLog.i(TAG,"澶辫触椤圭洰鏁版嵁琛ㄨ娓呯┖鏇存柊UI"); item_id = 0; mArrayList.clear(); item_conents.clear(); + Collections.reverse(mArrayList); mScoreAdapter.addDatas(mArrayList); mHandler.obtainMessage(ADD_DATA).sendToTarget(); } @@ -153,26 +293,43 @@ @Override public void onChanged(List<ExamStatus> examStatus) { - for (ExamStatus e : - examStatus) { - Log.i(TAG, "onChanged: e="+e.toString()); + + + Log.i(TAG, "ExamStatus onChanged: "); + if (examStatus!=null && examStatus.size()>0){ + MyLog.i(TAG,"鑰冭瘯鐘舵�佹洿鏂�"); + examStatusList.clear(); + examStatusList.addAll(examStatus); + mHandler.obtainMessage(ADD_DATA).sendToTarget(); + if (examStatus.get(0).getStartExam() != Constant.NONE_BEEN_START_EXAM){ + btn_start_exam.setEnabled(false); + tv_stop.setEnabled(true); + }else{ + btn_start_exam.setEnabled(true); + tv_stop.setEnabled(false); + } + exam_type = examStatus.get(0).getStartExam(); } - Log.i(TAG, "onChanged: "); - examStatusList.clear(); - examStatusList.addAll(examStatus); - mHandler.obtainMessage(ADD_DATA).sendToTarget(); - if (examStatus.get(0).getStartExam() == Constant.NONE_BEEN_START_EXAM){ - btn_train.setEnabled(false); - tv_stop.setEnabled(true); - }else{ - btn_train.setEnabled(true); - tv_stop.setEnabled(false); - } + } }); + WokViewModel wokViewModel = ViewModelProviders.of(this).get(WokViewModel.class); + wokViewModel.getStudents().observe(this, new Observer<List<Student>>() { + @Override + public void onChanged(List<Student> students) { + for (Student student : + students) { + MyLog.i(TAG, "onChanged: " + student.toString()); + if (!TextUtils.isEmpty(student.getName())){ - + tv_name.setText(getString(R.string.name)+student.getName()); + tv_id.setText(getString(R.string.user_id)+student.getID()); + ExamPlatformData.getInstance().setId(student.getID()); + } + } + } + }); AppStatusViewModel appStatusViewModel = ViewModelProviders.of(this).get(AppStatusViewModel.class); appStatusViewModel.getAppStatus().observe(this, new Observer<AppStatus>() { @@ -181,6 +338,7 @@ if (appStatus != null){ Log.i(TAG, "onChanged: "+appStatus.toString()); iv_rtk_status.getDrawable().setLevel(appStatus.getRtk_connect_status()); + tv_work_platform.setText(getString(R.string.platform_status,ExamPlatformData.getInstance().getExamplatformStatusStr(appStatus.getWork_platform()))); tv_sat_num.setText(String.valueOf(appStatus.getDefault_observe1()).length()==1?"0"+appStatus.getDefault_observe1():String.valueOf(appStatus.getDefault_observe1())); } } @@ -188,43 +346,65 @@ return view; } - private void initView(View view) { + private List<Integer> sns =new ArrayList<>(); + private void sendJKMessage0203(List<FailedProj_select> failedProj_selects) { + JKMessage0203 jkMessage0203 = new JKMessage0203(); + jkMessage0203.phone = ExamPlatformData.getInstance().getPhone(); + jkMessage0203.ID = ExamPlatformData.getInstance().getID(); + jkMessage0203.exam_id = ExamPlatformData.getInstance().getExam_id(); - av_curve = view.findViewById(R.id.av3); - av_park = view.findViewById(R.id.av2); - av_podao = view.findViewById(R.id.av1); - av_zhijiao = view.findViewById(R.id.av4); - houseView = view.findViewById(R.id.hv); + for (int i = 0; i < failedProj_selects.size(); i++) { + if (hasSnEqulas(failedProj_selects.get(i).getSn())){ + MyLog.i("sn鐩稿悓"+failedProj_selects.get(i).getSn()); + }else{ + ExamPlatformData.getInstance().getTTS().speak(failedProj_selects.get(i).getDeducting_reason()+( + failedProj_selects.get(i).getScore_deducting()==100?"涓嶅悎鏍�":"鎵�"+ + failedProj_selects.get(i).getScore_deducting()+"鍒�")); + MyLog.i("娌℃湁鐩稿悓鐨剆n锛屽彂閫�"+failedProj_selects.get(i).getSn()); + sns.add(failedProj_selects.get(i).getSn()); + String utc = failedProj_selects.get(i).getUtc(); + if (!TextUtils.isEmpty(utc)&&utc.length()>12){ + utc =utc.substring(0,12); + } + jkMessage0203.timeBCD = utc ; - tv_speed = view.findViewById(R.id.tv_speed); - iv_rtk_status = view.findViewById(R.id.iv_rtk_connect); - iv_head = view.findViewById(R.id.iv_head); - tv_sat_num = view.findViewById(R.id.tv_sat_num); + jkMessage0203.fail_item_id = failedProj_selects.get(i).getEmp_id(); + jkMessage0203.fail_score = failedProj_selects.get(i).getScore_deducting(); + jkMessage0203.fail_reason = failedProj_selects.get(i).getDeducting_reason(); + } - tv_total_score = view.findViewById(R.id.tv_total_score); - tv_speed.setText(getResources().getString(R.string.speed,speed)); - view.findViewById(R.id.btn_return).setOnClickListener(this); - mListView = view.findViewById(R.id.lv); - tv_stop = view.findViewById(R.id.tv_stop); - tv_stop.setOnClickListener(this); - mListView.setFocusable(false);//listview涓嶈幏鍙栫劍鐐癸紝涓嶇劧鐨勮瘽scrollview浼氶《鍒板簳閮� - view.findViewById(R.id.view_map).setOnClickListener(this); - btn_train = view.findViewById(R.id.btn_start); - btn_train.setOnClickListener(this); - btn_train.setText("寮�濮嬭缁�"); - mScoreAdapter = new ScoreAdapter(_mActivity); - mListView.setAdapter(mScoreAdapter); - - mListView.addHeaderView(LayoutInflater.from(_mActivity).inflate(R.layout.layout_score_item,null)); + } + + + + + + MessageProcessor.getInstance().sendMessage(jkMessage0203); + } + + private boolean hasSnEqulas(int failedProjSn){ + if (sns.size() > 0){ + for (int j = 0; j < sns.size(); j++) { + MyLog.i("宸插瓨鍦ㄧ殑sn"+sns.get(j)); + if (sns.get(j) == failedProjSn){ + MyLog.i("sn鐩稿悓锛屼笉鍙�"+sns.get(j)); + return true; + }else{ + continue; + } + } + + } + return false; } private int whatPaintColor(ExamStatus examStat) { int map_id = examStat.getMap_id(); int status = examStat.getEnter(); - Log.i(TAG, "whatPaintColor: map_id="+map_id+" status="+status); + MyLog.i(TAG, "whatPaintColor: map_id="+map_id+" status="+status); switch (status) { case 0://鑰冭瘯瀹屾垚 switch (map_id) { @@ -261,57 +441,181 @@ } case 1://杩涘叆鑰冨満椤圭洰 + MyLog.i("pink 杩涘叆鏌愪釜鑰冨満椤圭洰"); return getResources().getColor(R.color.pink); case 2://寰呰�� return getResources().getColor(R.color.examing); } return getResources().getColor(R.color.examing); } + + private void initView(View view) { + + Intent intent = new Intent(ALARM_ACTION_CODE); + PendingIntent pendingIntent = PendingIntent.getBroadcast(_mActivity.getApplicationContext(), + REQUEST_CODE, intent, + PendingIntent.FLAG_CANCEL_CURRENT); + AlarmManager alarmManager = (AlarmManager) _mActivity.getApplicationContext().getSystemService(Context.ALARM_SERVICE); + alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(),pendingIntent); + + + view.findViewById(R.id.iv_head).setOnClickListener(this); + av_curve = view.findViewById(R.id.av3); + av_park = view.findViewById(R.id.av2); + av_podao = view.findViewById(R.id.av1); + av_zhijiao = view.findViewById(R.id.av4); + houseView = view.findViewById(R.id.hv); + tv_name = view.findViewById(R.id.tv_name); + tv_id = view.findViewById(R.id.tv_ID); + tv_work_platform = view.findViewById(R.id.platform); + + iv_rtk_status = view.findViewById(R.id.iv_rtk_connect); + iv_head = view.findViewById(R.id.iv_head); + tv_sat_num = view.findViewById(R.id.tv_sat_num); + tv_speed = view.findViewById(R.id.tv_speed); + tv_total_score = view.findViewById(R.id.tv_total_score); + tv_speed.setText(getResources().getString(R.string.speed,speed)); + + 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; + } + }); + + view.findViewById(R.id.view_map).setOnClickListener(this); + mScoreAdapter = new ScoreAdapter(_mActivity); + mListView.setAdapter(mScoreAdapter); + btn_start_exam = view.findViewById(R.id.btn_start); + btn_start_exam.setOnClickListener(this); + tv_stop = view.findViewById(R.id.tv_stop); + tv_stop.setOnClickListener(this); + mListView.addHeaderView(LayoutInflater.from(_mActivity).inflate(R.layout.layout_score_item, null)); + + } + + + MyDialogFragment myDialogFragment; + SimulateNightBean simulateNightBean = null; @Override public void onClick(View v) { - switch (v.getId()){ - case R.id.view_map: - TcpFragment passwordFragment = findFragment(TcpFragment.class); - if (passwordFragment == null) { - passwordFragment = (TcpFragment) TcpFragment.newInstance(); - start(passwordFragment); - } else { - start(passwordFragment); - } - break; + switch (v.getId()) { case R.id.btn_start: - examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM); - try { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("exam", 1); - String examJson = jsonObject.toString(); - Log.i(TAG, "onClick: " + examJson); - AYSdk.getInstance().sendCmd(Constant.EXAM_STATUS, examJson); - } catch (JSONException e) { - e.printStackTrace(); + OneTimeWorkRequest examStatusInitWork = OneTimeWorkRequest.from(ExamStatusInitWorker.class); + WorkManager.getInstance(_mActivity).enqueue(examStatusInitWork); + item_id = 0; + currTotalScore = 100; + //TODO 鍙戦�丣KMessage0202 缁欏钩鍙帮紝寮�濮嬭�冭瘯 + final JKMessage0202 jkMessage0202 = new JKMessage0202(); + jkMessage0202.phone = ExamPlatformData.getInstance().getPhone(); + jkMessage0202.timeBCD = new Date(); + jkMessage0202.ID = ExamPlatformData.getInstance().getID(); + + jkMessage0202.exam_id = ExamPlatformData.getInstance().getExam_id(); + failedProjViewModel.deleteAll(); + + if (myDialogFragment == null){ + myDialogFragment = new MyDialogFragment(); } + myDialogFragment.show(getFragmentManager(),"dialog"); + myDialogFragment.setCallback(new MyDialogFragment.Callback() { + @Override + public void changKao() { + exam_type = 2; + examStatusViewModel.updateStartExam(exam_type); + sendExamJson(1,exam_type); + ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭�冭瘯"); + jkMessage0202.curr_exam = 0; + + MessageProcessor.getInstance().sendMessage(jkMessage0202); + } + + @Override + public void luKao() { + exam_type = 3; + examStatusViewModel.updateStartExam(exam_type); + sendExamJson(1,exam_type); + if (simulateNightBean == null){ + simulateNightBean = new SimulateNightBean(); + } + simulateNightBean.setExam(0); + + final List<SimulateNightBean.QuestionBean> list = ExamPlatformData.getInstance().getSimulate_light_tips(); + simulateNightBean.setQuestion(list.subList(list.size()-2,list.size()-1)); + AYSdk.getInstance().sendCmd(0x8012,gson.toJson(simulateNightBean)); + jkMessage0202.curr_exam = 1; + + MessageProcessor.getInstance().sendMessage(jkMessage0202); + + tempQs.add(list.get(0)); + int [] a = Utils.getRandomInts(4,12); + for (int i = 0; i < a.length; i++) { + tempQs.add(list.get(a[i])); + } + + simulateNightBean.setQuestion(tempQs); + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + AYSdk.getInstance().sendCmd(0x8012,gson.toJson(simulateNightBean)); + tempQs.clear(); + } + },10*1000); + + } + }); + + iv_head.getDrawable().setLevel(1); + //娓呯┖sns + sns.clear(); + + + break; case R.id.tv_stop: Toast.makeText(_mActivity, "缁撴潫鑰冭瘯", Toast.LENGTH_SHORT).show(); stopExam(); + + break; + case R.id.view_map: + MapFragment mapFragment = findFragment(MapFragment.class); + MyLog.i(TAG,"鏌ョ湅鍦板浘"); + if (mapFragment == null) { + mapFragment = (MapFragment) MapFragment.newInstance(); + } + start(mapFragment); break; case R.id.btn_return: _mActivity.onBackPressed(); break; + case R.id.iv_head: + MyLog.i(TAG,"绛惧埌锛岃幏鍙栬韩浠借瘉鐗╃悊鍗″彿"); + AYSdk.getInstance().sendCmd(Constant.READ_PHYSICAL_ID,""); + //TODO 鑾峰緱鐗╃悊鍗″彿 鍙戦�丣KMessage0201缁欏钩鍙帮紝鑾峰彇濮撳悕銆佽韩浠借瘉銆乭ead_url + + break; } } - private void stopExam() { - MyLog.i(TAG,"缁撴潫鑰冭瘯"); - item_id = 0; - currTotalScore = 100; - tv_total_score.setText(String.valueOf(currTotalScore)); - iv_head.getDrawable().setLevel(0); - OneTimeWorkRequest examStatusInitWork = OneTimeWorkRequest.from(ExamStatusInitWorker.class); - WorkManager.getInstance(_mActivity).enqueue(examStatusInitWork); + private void sendExamJson(int i,int type) { try { + JSONObject jsonObject = new JSONObject(); - jsonObject.put("exam", 0); + jsonObject.put("exam", i); + jsonObject.put("type", type); String examJson = jsonObject.toString(); Log.i(TAG, "onClick: " + examJson); AYSdk.getInstance().sendCmd(Constant.EXAM_STATUS, examJson); @@ -320,11 +624,38 @@ } } + private void stopExam() { + MyLog.i(TAG,"缁撴潫鑰冭瘯"); + + + tv_total_score.setText(String.valueOf(currTotalScore)); + iv_head.getDrawable().setLevel(0); + + ExamPlatformData.getInstance().getTTS().speak("缁撴潫鑰冭瘯"); + examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM); + sendExamJson(0,0);//缁撴潫鑰冭瘯 exstart=0 + //TODO 鍙戦�丣KMessage0204缁欏钩鍙� 缁撴潫鑰冭瘯 + JKMessage0204 jkMessage0204 = new JKMessage0204(); + jkMessage0204.phone = ExamPlatformData.getInstance().getPhone(); + jkMessage0204.timeBCD = new Date(); + jkMessage0204.score = 10; + jkMessage0204.stop = JKMessage0204.SUCC_STOP; + jkMessage0204.ID = ExamPlatformData.getInstance().getID(); + jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id(); + MessageProcessor.getInstance().sendMessage(jkMessage0204); + } + private ICEventListener icEventListener = new ICEventListener() { @Override public void onCEvent(String topic, int msgCode, int resultCode, Object obj) { - speed = (double)obj; - mHandler.obtainMessage(SPEED_DATA).sendToTarget(); + if (msgCode == Constant.IC_ID){ + icson = (String)obj; + mHandler.obtainMessage(msgCode).sendToTarget(); + }else{ + speed = (double)obj; + mHandler.obtainMessage(SPEED_DATA).sendToTarget(); + } + } }; @Override diff --git a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java index 79f7ee8..2daba11 100644 --- a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java +++ b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java @@ -8,6 +8,7 @@ import com.anyun.exam.lib.util.ByteUtil; import com.safeluck.aykj.utils.BytesUtils; +import java.util.Calendar; import java.util.Random; /** @@ -158,4 +159,59 @@ return false; } + + + public static String getHHmm(){ + String mMonth,mDay,mWay,mHours,mMinute; + StringBuffer stringBuffer = new StringBuffer(); + Calendar calendar = Calendar.getInstance(); + mMonth = String.valueOf(calendar.get(Calendar.MONTH) + 1); //鑾峰彇鏃ユ湡鐨勬湀 + mDay = String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)); //鑾峰彇鏃ユ湡鐨勫ぉ + mWay = String.valueOf(calendar.get(Calendar.DAY_OF_WEEK)); //鑾峰彇鏃ユ湡鐨勬槦鏈� + + /** + * 濡傛灉灏忔椂鏄釜浣嶆暟 + * + *鍒欏湪鍓嶉潰浠锋牸鈥�0鈥� + * */ + if (calendar.get(Calendar.HOUR) < 10) { + mHours = "0" + calendar.get(Calendar.HOUR); + + } else { + mHours = String.valueOf(calendar.get(Calendar.HOUR)); + } + stringBuffer.append(mHours); + stringBuffer.append(":"); + /** + * 濡傛灉鍒嗛挓鏄釜浣嶆暟 + * + *鍒欏湪鍓嶉潰浠锋牸鈥�0鈥� + * */ + if (calendar.get(Calendar.MINUTE) < 10) { + mMinute = "0" + calendar.get(Calendar.MINUTE); + } else { + mMinute = String.valueOf(calendar.get(Calendar.MINUTE)); + } + stringBuffer.append(mMinute); + /** + * 鑾峰彇鏄熸湡 + * 骞惰缃嚭鏉� + * */ + if ("1".equals(mWay)) { + mWay = "澶�"; + } else if ("2".equals(mWay)) { + mWay = "涓�"; + } else if ("3".equals(mWay)) { + mWay = "浜�"; + } else if ("4".equals(mWay)) { + mWay = "涓�"; + } else if ("5".equals(mWay)) { + mWay = "鍥�"; + } else if ("6".equals(mWay)) { + mWay = "浜�"; + } else if ("7".equals(mWay)) { + mWay = "鍏�"; + } + return stringBuffer.toString(); + } } diff --git a/app/src/main/java/safeluck/drive/evaluation/worker/TimeWorker.kt b/app/src/main/java/safeluck/drive/evaluation/worker/TimeWorker.kt new file mode 100644 index 0000000..768cc44 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/worker/TimeWorker.kt @@ -0,0 +1,21 @@ +package safeluck.drive.evaluation.worker + +import android.content.Context +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.work.Data +import androidx.work.Worker +import androidx.work.WorkerParameters +import com.anyun.exam.lib.MyLog +import safeluck.drive.evaluation.Constant +import safeluck.drive.evaluation.util.Utils + +class TimeWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) { + override fun doWork(): Result { + MyLog.i("鍛ㄦ湡鎬т换鍔�"+TimeWorker::class.java.simpleName) + var timeStr= Utils.getHHmm() + val data = Data.Builder().putString(Constant.TIME_MINUTE,timeStr).build() + return Result.success(data) + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/layout_net_train.xml b/app/src/main/res/layout/layout_net_train.xml index 4cf1317..dc13c9d 100644 --- a/app/src/main/res/layout/layout_net_train.xml +++ b/app/src/main/res/layout/layout_net_train.xml @@ -44,7 +44,7 @@ <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="鍛煎彨璇锋眰" + android:text="缁撴潫鑰冭瘯" android:id="@+id/tv_stop" android:textColor="@android:color/white" android:padding="10dp" -- Gitblit v1.8.0