From 1b8164d97200ce08486b48ba179b83c5d70bd97b Mon Sep 17 00:00:00 2001 From: lizhanwei <Dana_Lee1016@126.com> Date: 星期二, 18 二月 2020 21:05:55 +0800 Subject: [PATCH] app启动发送信号配置 --- app/src/main/java/safeluck/drive/evaluation/MainActivity.java | 68 +++++++++++++++++++++++++++++++++ 1 files changed, 67 insertions(+), 1 deletions(-) diff --git a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java index afb7b18..edac8ba 100644 --- a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java +++ b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java @@ -5,6 +5,7 @@ import android.app.AlertDialog; import android.content.DialogInterface; +import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; @@ -21,6 +22,9 @@ import safeluck.drive.evaluation.DB.WokViewModel; import safeluck.drive.evaluation.DB.rtktb.RTKConfig; import safeluck.drive.evaluation.DB.rtktb.RTKConfigViewModel; +import safeluck.drive.evaluation.DB.signalConfigdb.SignalConfigViewModel; +import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig; +import safeluck.drive.evaluation.bean.SignalConfigRemote; import safeluck.drive.evaluation.cEventCenter.CEventCenter; import safeluck.drive.evaluation.cEventCenter.ICEventListener; import safeluck.drive.evaluation.fragment.HomeFragment; @@ -35,7 +39,9 @@ import java.io.IOException; import java.nio.charset.Charset; +import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ArrayBlockingQueue; import safeluck.drive.evaluation.util.CThreadPoolExecutor; import safeluck.drive.evaluation.util.FileUtil; @@ -48,7 +54,7 @@ private static final int PERMISSIONS_REQUEST_CODE = 1001; private String TAG = MainActivity.class.getCanonicalName(); - + SignalConfigViewModel signalConfigViewModel; private PermissionManager mPermissionsManager; private RTKConfig mRTKConfig;//RTK閰嶇疆淇℃伅 private Gson gson = new Gson(); @@ -81,10 +87,12 @@ } if (msgCode == Constant.NDK_START){ sendRtkConfigInfo(); + sendSignalConfigsToRemote(); sendMcuUprgrade(); } } }; + private List<SignalConfigRemote> signalConfiglist = new ArrayList<>(); private void sendMcuUprgrade() { CThreadPoolExecutor.runInBackground(new Runnable() { @@ -166,7 +174,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(); + } + }); mPermissionsManager = new PermissionManager(this) { @Override @@ -215,6 +239,32 @@ CEventCenter.onBindEvent(false, icEventListener, Constant.BIND_CONNECT_RTK_TOPIC); Log.i(TAG, "onDestroy: "); } + private void sendSignalConfigsToRemote() { + if (signalConfiglist.size()>0){ + new AsyncTask<Void, Void, List<Integer>>( + + ) { + @Override + protected List<Integer> doInBackground(Void... voids) { + return signalConfigViewModel.getAllIndexs(); + } + + @Override + protected void onPostExecute(List<Integer> indexs) { + if (listContainsSameValue(indexs)){ + Log.i(TAG, "sendSignalConfigsToRemote: 鏈夌浉鍚岀殑index锛屼笉鑳藉彂閫�"+gson.toJson(signalConfiglist)); + Toast.makeText(getApplicationContext(), "涓嶈兘鏈夌浉鍚岀殑鐗╃悊鎵�寮曪紒", Toast.LENGTH_SHORT).show(); + }else{ + AYSdk.getInstance().sendCmd(Constant.SEND_CONFIG_SIGNAL,gson.toJson(signalConfiglist)); + } + } + }.execute(); + + } + + + + } @Override protected void onResume() { @@ -227,4 +277,20 @@ super.onRequestPermissionsResult(requestCode, permissions, grantResults); mPermissionsManager.recheckPermissions(PERMISSIONS_REQUEST_CODE, permissions, grantResults); } + private boolean listContainsSameValue(List<Integer> indexs) { + for (int i = 0; i < indexs.size(); i++) { + //鍙互榛樿鏄�0 0涓嶅垽鏂槸鍚︽湁鐩稿悓鐨刬ndex + if (indexs.get(i) == 0){ + continue; + } + for (int j=i+1;j<indexs.size();j++){ + + if (indexs.get(i) == indexs.get(j)){ + return true; + } + } + } + return false; + } + } -- Gitblit v1.8.0