From 43b244f4c5450ce650190ec5f6e4c54b43d11acb Mon Sep 17 00:00:00 2001 From: lizhanwei <Dana_Lee1016@126.com> Date: 星期日, 16 二月 2020 16:58:48 +0800 Subject: [PATCH] 1.增减Sharedpreference文件读写封装类;2.增加信号配置数据库(需要卸载重新安装app);3.增加发送信号配置命令(0x8008) --- app/src/main/java/safeluck/drive/evaluation/Constant.java | 2 app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java | 196 ++++++++++++ app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigWorkRepo.java | 66 ++++ app/src/main/java/safeluck/drive/evaluation/util/Utils.java | 5 app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java | 49 +++ app/src/main/assets/signal_config_file.json | 115 +++++++ app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigDao.java | 33 ++ app/src/main/java/safeluck/drive/evaluation/app.java | 3 app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SingalConfig.java | 56 +++ app/src/main/java/safeluck/drive/evaluation/bean/SignalConfigRemote.java | 41 ++ app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java | 269 +++++++++++++--- app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java | 9 app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigViewModel.java | 43 ++ app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java | 14 14 files changed, 843 insertions(+), 58 deletions(-) diff --git a/app/src/main/assets/signal_config_file.json b/app/src/main/assets/signal_config_file.json new file mode 100644 index 0000000..0e54036 --- /dev/null +++ b/app/src/main/assets/signal_config_file.json @@ -0,0 +1,115 @@ +[ + + { + "signalName": "瀹夊叏甯�", + "index":1, + "id":0, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "宸﹁浆鍚�", + "index":2, + "id":1, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "鍙宠浆鍚�", + "index":3, + "id":2, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "鎵嬪埞", + "index":4, + "id":3, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "鑴氬埞", + "index":5, + "id":4, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "杩戝厜鐏�", + "index":6, + "id":5, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "杩滃厜鐏�", + "index":7, + "id":6, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "闂ㄩ攣", + "index":8, + "id":7, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "绌烘尅", + "index":9, + "id":8, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "1妗�", + "index":10, + "id":9, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "2妗�", + "index":11, + "id":10, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "3妗�", + "index":12, + "id":11, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "4妗�", + "index":13, + "id":12, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "5妗�", + "index":14, + "id":13, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "鍊掓。", + "index":15, + "id":14, + "highLevel":2, + "mainBoard":2 + }, + { + "signalName": "START浣�", + "index":1, + "id":15, + "highLevel":0, + "mainBoard":2 + } +] \ No newline at end of file diff --git a/app/src/main/java/safeluck/drive/evaluation/Constant.java b/app/src/main/java/safeluck/drive/evaluation/Constant.java index 9679ed8..cfd1242 100644 --- a/app/src/main/java/safeluck/drive/evaluation/Constant.java +++ b/app/src/main/java/safeluck/drive/evaluation/Constant.java @@ -73,5 +73,7 @@ public static final String BIND_DEBUG_TXT = "BIND_DEBUG_TXT"; public static final int UPGRADE_MCU_CONTENT_FILE = 0x8100; public static final String MCU_FILE_NAME = "dfu.bin"; + public static final int MCU_SN = 8; + public static final int SEND_CONFIG_SIGNAL = 0x8008; public static String exam_enter_exitdata="exam_enter_exitdata"; } 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 e7893da..82e3040 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java @@ -35,6 +35,9 @@ import safeluck.drive.evaluation.DB.rtktb.RTKConfig; import safeluck.drive.evaluation.DB.rtktb.RTKConfigDao; import safeluck.drive.evaluation.DB.rtktb.RTKConfigWork; +import safeluck.drive.evaluation.DB.signalConfigdb.SignalConfigDao; +import safeluck.drive.evaluation.DB.signalConfigdb.SignalConfigInitWorker; +import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig; /** @@ -43,7 +46,7 @@ * 閭锛�632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ -@Database(entities = {Student.class, CriteriaForI.class, FailedProj.class, CriteriaForII.class, RTKConfig.class, GPSInfo.class, AppStatus.class, ExamStatus.class},version = 1,exportSchema = false) +@Database(entities = {Student.class, CriteriaForI.class, FailedProj.class, CriteriaForII.class, RTKConfig.class, GPSInfo.class, AppStatus.class, ExamStatus.class, SingalConfig.class},version = 1,exportSchema = false) public abstract class WorkRoomDataBase extends RoomDatabase { private static final String TAG = "WorkRoomDataBase"; public abstract StudentDao getstudentDao(); @@ -86,6 +89,7 @@ OneTimeWorkRequest RTKConfigWorkRequest = OneTimeWorkRequest.from(RTKConfigWork.class); OneTimeWorkRequest appStatusInitWork = OneTimeWorkRequest.from(AppStatusInitWork.class); OneTimeWorkRequest examStatusInitWorker = OneTimeWorkRequest.from(ExamStatusInitWorker.class); + OneTimeWorkRequest signalConigInitWorker = OneTimeWorkRequest.from(SignalConfigInitWorker.class); Log.i(TAG, "onCreate: 鍒涘缓鏁版嵁搴撳悗寤虹珛鏁版嵁琛ㄦ彃鍏ユ暟鎹�"); WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest); WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest1); @@ -94,6 +98,7 @@ WorkManager.getInstance(mContext).enqueue(RTKConfigWorkRequest); WorkManager.getInstance(mContext).enqueue(appStatusInitWork); WorkManager.getInstance(mContext).enqueue(examStatusInitWorker); + WorkManager.getInstance(mContext).enqueue(signalConigInitWorker); } @Override @@ -117,4 +122,6 @@ public abstract AppStatusDao getAppStatusDao(); public abstract ExamStatusDao getExamStatusDao(); + + public abstract SignalConfigDao getSignalConfigDao(); } 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 new file mode 100644 index 0000000..1f3cabf --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigDao.java @@ -0,0 +1,33 @@ +package safeluck.drive.evaluation.DB.signalConfigdb; + +import androidx.lifecycle.LiveData; +import androidx.room.Dao; +import androidx.room.Insert; +import androidx.room.OnConflictStrategy; +import androidx.room.Query; + +import java.util.List; +@Dao +public interface SignalConfigDao { + @Insert + void insert(SingalConfig singalConfig ); + //璁剧疆id淇″彿鐨勫搴旂殑鐗╃悊绱㈠紩 + @Query("update signal_config set `index`=:mindex where id =:id ") + void updateindex(int mindex,int id); + //璁剧疆id淇″彿鐨勫搴旂殑楂樼數骞虫湁鏃犳晥 + @Query("update signal_config set `highLevel`=:hightLevel where id =:id ") + void updateHightlevel(int hightLevel,int id); + //璁剧疆id淇″彿鐨勫搴旂殑涓绘澘鏈夋棤鏁� + @Query("update signal_config set `mainBoard`=:mainBoard where id =:id ") + void updateMainBoard(int mainBoard,int id); + + //鏌ヨ鎵�鏈変俊鍙峰搴旂殑鐗╃悊鎵�寮� + @Query("select `index` from signal_config") + List<Integer> getAllIndexs(); + + @Query("select * from signal_config") + LiveData<List<SingalConfig>> getSignalConfigs(); + + @Insert(onConflict = OnConflictStrategy.REPLACE) + void insertAll(List<SingalConfig> mstus); +} diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java new file mode 100644 index 0000000..63b07e4 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java @@ -0,0 +1,49 @@ +package safeluck.drive.evaluation.DB.signalConfigdb; + +import android.content.Context; + +import androidx.annotation.NonNull; +import androidx.work.Worker; +import androidx.work.WorkerParameters; + +import com.anyun.exam.lib.MyLog; +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.DB.WorkRoomDataBase; + +public class SignalConfigInitWorker extends Worker { + private static final String TAG = "SignalConfigInitWorker"; + public SignalConfigInitWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { + super(context, workerParams); + } + + @NonNull + @Override + public Result doWork() { + MyLog.i(TAG,"淇″彿閰嶇疆琛ㄥ垵濮嬪寲"); + + try { + InputStream inputStream = getApplicationContext().getAssets().open("signal_config_file.json"); + InputStreamReader inputStreamReader = new InputStreamReader(inputStream); + JsonReader jsonReader = new JsonReader(inputStreamReader); + + Gson gson = new Gson(); + Type type = new TypeToken<List<SingalConfig>>(){}.getType(); + + List<SingalConfig> mstus=gson.fromJson(jsonReader, type); + WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getSignalConfigDao().insertAll(mstus); + } catch (IOException e) { + e.printStackTrace(); + return Result.failure(); + } + return Result.success(); + } +} 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 new file mode 100644 index 0000000..cccb148 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigViewModel.java @@ -0,0 +1,43 @@ +package safeluck.drive.evaluation.DB.signalConfigdb; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; + +import java.util.List; + +public class SignalConfigViewModel extends AndroidViewModel { + private LiveData<List<SingalConfig>> signalConfigs; + private SignalConfigWorkRepo workRepo; + + public SignalConfigViewModel(@NonNull Application application) { + super(application); + workRepo = new SignalConfigWorkRepo(application); + signalConfigs = workRepo.getSignalConfigs(); + } + + public void insertSignalConfig(final SingalConfig singalConfig){ + workRepo.insertSignalConig(singalConfig); + } + + public LiveData<List<SingalConfig>> getSignalConfigs(){ + return signalConfigs; + } + + public void updateindex(final int index, final int id){ + workRepo.updateindex(index,id); + } + public void updateHightlevel(final int highLevel, final int id){ + workRepo.updateHightlevel(highLevel,id); + } + public void updateMainBoard(final int mainboard, final int id){ + workRepo.updateMainBoard(mainboard,id); + } + public List<Integer> getAllIndexs(){ + + return workRepo.getAllIndexs(); + } + +} diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigWorkRepo.java b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigWorkRepo.java new file mode 100644 index 0000000..6a9abaa --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigWorkRepo.java @@ -0,0 +1,66 @@ +package safeluck.drive.evaluation.DB.signalConfigdb; + +import android.app.Application; + +import androidx.lifecycle.LiveData; + +import java.util.List; + +import safeluck.drive.evaluation.DB.WorkRoomDataBase; + +public class SignalConfigWorkRepo { + private SignalConfigDao dao; + private LiveData<List<SingalConfig>> signalConfigs; + + protected SignalConfigWorkRepo(Application application) { + dao = WorkRoomDataBase.getWorkRoomDataBase(application).getSignalConfigDao(); + signalConfigs = dao.getSignalConfigs(); + + } + + protected void insertSignalConig(final SingalConfig singalConfig){ + WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { + @Override + public void run() { + dao.insert(singalConfig); + } + }); + } + + protected LiveData<List<SingalConfig>> getSignalConfigs(){ + return signalConfigs; + } + + protected void updateindex(final int index, final int id){ + WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { + @Override + public void run() { + dao.updateindex(index,id); + } + }); + } + protected void updateHightlevel(final int highLevel, final int id){ + WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { + @Override + public void run() { + dao.updateHightlevel(highLevel,id); + } + }); + } + protected void updateMainBoard(final int mainboard, final int id){ + WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { + @Override + public void run() { + dao.updateMainBoard(mainboard,id); + } + }); + } + + /** + * 鏌ヨ鎵�鏈変俊鍙峰搴旂殑鐗╃悊绱㈠紩 + * @return + */ + protected List<Integer> getAllIndexs(){ + return dao.getAllIndexs(); + } +} diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SingalConfig.java b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SingalConfig.java new file mode 100644 index 0000000..07143b5 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SingalConfig.java @@ -0,0 +1,56 @@ +package safeluck.drive.evaluation.DB.signalConfigdb; + +import androidx.room.Entity; +import androidx.room.PrimaryKey; + +@Entity(tableName = "signal_config") +public class SingalConfig { + private String signalName; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + @PrimaryKey + private int id; + private int index; + private int highLevel;//1-楂樼數骞虫湁鏁� + private int mainBoard;//1-涓绘澘鏈夋晥 + + + public String getSignalName() { + return signalName; + } + + public void setSignalName(String signalName) { + this.signalName = signalName; + } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public int getHighLevel() { + return highLevel; + } + + public void setHighLevel(int highLevel) { + this.highLevel = highLevel; + } + + public int getMainBoard() { + return mainBoard; + } + + public void setMainBoard(int mainBoard) { + this.mainBoard = mainBoard; + } +} diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java index 488a002..b1c19f2 100644 --- a/app/src/main/java/safeluck/drive/evaluation/app.java +++ b/app/src/main/java/safeluck/drive/evaluation/app.java @@ -3,6 +3,7 @@ import android.app.Application; import android.os.Environment; import android.text.TextUtils; +import android.util.Log; import android.widget.Toast; @@ -225,6 +226,8 @@ case Constant.DEBUG_TXT: CEventCenter.dispatchEvent(Constant.BIND_DEBUG_TXT,cmd,0,json); break; + case Constant.MCU_SN: + break; } diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/SignalConfigRemote.java b/app/src/main/java/safeluck/drive/evaluation/bean/SignalConfigRemote.java new file mode 100644 index 0000000..00a4c6d --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/bean/SignalConfigRemote.java @@ -0,0 +1,41 @@ +package safeluck.drive.evaluation.bean; + +public class SignalConfigRemote { + /** + * gpio_num : 0 + * level : 1 + * func_id : 2 + */ + + private int gpio_num; + private int level; + private int func_id; + + public int getGpio_num() { + return gpio_num; + } + + public void setGpio_num(int gpio_num) { + this.gpio_num = gpio_num; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public int getFunc_id() { + return func_id; + } + + public void setFunc_id(int func_id) { + this.func_id = func_id; + } + + + + +} diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java index 98b53e5..3261a80 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java @@ -1,14 +1,20 @@ package safeluck.drive.evaluation.fragment; import android.content.Context; +import android.os.AsyncTask; import android.os.Bundle; +import android.os.Handler; +import android.os.Message; import android.text.Editable; +import android.text.InputType; +import android.text.TextUtils; import android.text.TextWatcher; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; import android.widget.BaseAdapter; import android.widget.CheckBox; @@ -17,18 +23,33 @@ import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProviders; + +import com.anyun.exam.lib.AYSdk; +import com.anyun.exam.lib.MyLog; +import com.google.gson.Gson; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import java.util.List; +import java.util.Map; +import java.util.Set; import me.yokeyword.fragmentation.SupportFragment; +import safeluck.drive.evaluation.Constant; +import safeluck.drive.evaluation.DB.signalConfigdb.SignalConfigViewModel; +import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.bean.SignalConfigBean; +import safeluck.drive.evaluation.bean.SignalConfigRemote; +import safeluck.drive.evaluation.util.Utils; /** @@ -40,11 +61,35 @@ public class SignalConfigFragment extends SupportFragment { + private static final int INDEX = 1; + private static final int HIGHLEVEL = 2; + private static final int MAINBOARD = 3; + private Handler handler = new Handler(){ + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + int id = msg.arg1; + int sig = msg.arg2; + switch (msg.what){ + case INDEX: + signalConfigViewModel.updateindex(sig,id); + break; + case HIGHLEVEL: + break; + case MAINBOARD: + break; + } + } + }; + + private List<SignalConfigBean> signalConfiglist =new ArrayList<>(); + List<SignalConfigRemote> list = new ArrayList<>();//瑕佸彂閫佺粰remoteservice鐨勪俊鍙烽厤缃紝鏈夊彲鑳藉彂涓嶅嚭鍘� private Toolbar mToobar; private ListView listView; private LinearLayout linearLayout; private static final String TAG = SignalConfigFragment.class.getSimpleName(); + SignalConfigViewModel signalConfigViewModel; public static SupportFragment newInstance(){ return new SignalConfigFragment(); } @@ -73,24 +118,83 @@ listView.setLayoutParams(layoutParams); linearLayout.addView(listView); listView.setDivider(null); - MySignalsAdapter mySignalsAdapter = new MySignalsAdapter(_mActivity); - signalConfiglist .add(new SignalConfigBean("鍠囧彮","鍙岄棯",true,false,true,false,1,2)); - signalConfiglist .add(new SignalConfigBean("瀹夊叏甯�","鑴氬埞",false,true,true,false,3,4)); - signalConfiglist .add(new SignalConfigBean("鐔勭伀","缁曡溅1",false,true,true,false,5,6)); - signalConfiglist .add(new SignalConfigBean("闂ㄩ攣","缁曡溅2",false,true,true,false,7,8)); - signalConfiglist .add(new SignalConfigBean("鎵嬪埞","绂诲悎",true,false,true,false,9,10)); - signalConfiglist .add(new SignalConfigBean("宸﹁浆鍚�","1妗�",false,true,true,false,11,12)); - signalConfiglist .add(new SignalConfigBean("鍙宠浆鍚�","2妗�",false,true,true,false,13,14)); - signalConfiglist .add(new SignalConfigBean("杩戝厜鐏�","3妗�",false,true,true,false,15,16)); - signalConfiglist .add(new SignalConfigBean("杩滃厜鐏�","4妗�",false,true,true,false,17,18)); - signalConfiglist .add(new SignalConfigBean("闆剧伅","闆ㄥ埛",false,true,true,false,19,20)); - signalConfiglist .add(new SignalConfigBean("绀哄鐏�","鏃�",false,true,true,false,21,22)); + final MySignalsAdapter mySignalsAdapter = new MySignalsAdapter(_mActivity); + + signalConfigViewModel = ViewModelProviders.of(this).get(SignalConfigViewModel.class); + signalConfigViewModel.getSignalConfigs().observe(this, new Observer<List<SingalConfig>>() { + @Override + public void onChanged(List<SingalConfig> singalConfigs) { + list.clear(); + 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()); + list.add(signalConfigRemote); + } + sendSignalConfigsToRemote(); + for (int i = 0; i < singalConfigs.size(); i++) { + + SingalConfig singalConfig = singalConfigs.get(i); + i++; + SingalConfig singalConfig1 = singalConfigs.get(i); + signalConfiglist .add(new SignalConfigBean(singalConfig.getSignalName(),singalConfig1.getSignalName(),singalConfig.getHighLevel()==1?true:false,singalConfig.getMainBoard()==1?true:false, + singalConfig1.getHighLevel()==1?true:false,singalConfig1.getMainBoard()==1?true:false,singalConfig.getIndex(),singalConfig1.getIndex())); + mySignalsAdapter.notifyDataSetChanged(); + } + } + }); + listView.setAdapter(mySignalsAdapter); - mySignalsAdapter.notifyDataSetChanged(); + } +private Gson gson = new Gson(); + private void sendSignalConfigsToRemote() { + 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(list)); + Toast.makeText(_mActivity, "涓嶈兘鏈夌浉鍚岀殑鐗╃悊鎵�寮曪紒", Toast.LENGTH_SHORT).show(); + }else{ + AYSdk.getInstance().sendCmd(Constant.SEND_CONFIG_SIGNAL,gson.toJson(list)); + } + } + }.execute(); + + + + } + + + + 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; } @@ -125,51 +229,15 @@ viewHolder = new ViewHolder(convertView); - viewHolder.editText1.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - Log.i(TAG, "et1 afterTextChanged: "+s.toString()); - String str = s.toString(); - int a = Integer.parseInt(str); - signalConfiglist.get(position).setPort_one(a); - } - }); - viewHolder.editText2.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - Log.i(TAG, "et2 afterTextChanged: "+s.toString()); - String str = s.toString(); - int a = Integer.parseInt(str); - signalConfiglist.get(position).setPort_two(a); - } - }); - viewHolder.checkBox3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { SignalConfigBean signalConfigBean = (SignalConfigBean) viewHolder.checkBox3.getTag(); + signalConfigBean.setThree(isChecked); + signalConfigViewModel.updateHightlevel(isChecked?1:0,position*2+1); + } }); viewHolder.checkBox4.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @@ -177,6 +245,7 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { SignalConfigBean signalConfigBean = (SignalConfigBean) viewHolder.checkBox4.getTag(); signalConfigBean.setFour(isChecked); + } });viewHolder.checkBox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override @@ -189,6 +258,8 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { SignalConfigBean signalConfigBean = (SignalConfigBean) viewHolder.checkBox1.getTag(); signalConfigBean.setOne(isChecked); + signalConfigViewModel.updateHightlevel(isChecked?1:0,position*2); + } }); convertView.setTag(viewHolder); @@ -203,8 +274,11 @@ viewHolder.checkBox3.setTag(signalConfiglist.get(position)); viewHolder.checkBox4.setTag(signalConfiglist.get(position)); } - viewHolder.editText1.setTag(position); - viewHolder.editText2.setTag(position); + viewHolder.editText1.setTag(position*2); + viewHolder.editText2.setTag((position*2+1)); + + + final SignalConfigBean signalConfigItem = getItem(position); viewHolder.textView1.setText(signalConfigItem.getSignal_name_first()); viewHolder.textView2.setText(signalConfigItem.getSignal_name_second()); @@ -240,6 +314,76 @@ editText1 = convertView.findViewById(R.id.et_signal1_port); editText2 = convertView.findViewById(R.id.et_signal2_port); + editText1.setInputType(EditorInfo.TYPE_CLASS_NUMBER); + editText2.setInputType(EditorInfo.TYPE_CLASS_NUMBER); + editText1.setImeOptions(EditorInfo.IME_ACTION_DONE); + editText2.setImeOptions(EditorInfo.IME_ACTION_DONE); + editText1.setSingleLine(); + editText2.setSingleLine(); + + + editText1.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + + } + + @Override + public void afterTextChanged(Editable s) { + int pos = (int) editText1.getTag(); + String str = s.toString(); + if (!TextUtils.isEmpty(str)&& Utils.isDigital(str)){ + int a = Integer.parseInt(str); + if (a== list.get(pos).getGpio_num()){ + + }else{ + handler.removeMessages(INDEX); + Message message = Message.obtain(); + message.what = INDEX; + message.arg1 = pos; + message.arg2 = a; + handler.sendMessageDelayed(message,1500); + } + } + } + }); + editText2.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + } + + @Override + public void afterTextChanged(Editable s) { + int pos = (int) editText2.getTag(); + String str = s.toString(); + if (!TextUtils.isEmpty(str)&& Utils.isDigital(str)){ + int a = Integer.parseInt(str); + if (a== list.get(pos).getGpio_num()){ + + }else{ + handler.removeMessages(INDEX); + Message message = Message.obtain(); + message.what = INDEX; + message.arg1 = pos; + message.arg2 = a; + handler.sendMessageDelayed(message,1500); + } + + } + } + }); + + textView1 = convertView.findViewById(R.id.tv_signal_1); textView2 = convertView.findViewById(R.id.tv_signal_2); @@ -247,6 +391,23 @@ } } + @Override + public void onResume() { + super.onResume(); + Log.i(TAG, "onResume: "); + } + @Override + public void onStop() { + super.onStop(); + Log.i(TAG, "onStop: "); + + } + + @Override + public void onPause() { + super.onPause(); + Log.i(TAG, "onPause: "); + } } diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java index 9fef302..0279ebc 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java @@ -21,6 +21,7 @@ import androidx.work.OneTimeWorkRequest; import androidx.work.WorkManager; +import com.anyun.exam.lib.util.ByteUtil; import com.anyun.exam.lib.util.Speaker; import com.google.android.material.textfield.TextInputEditText; @@ -42,9 +43,11 @@ import safeluck.drive.evaluation.DB.failitems.FailedProj_select; import safeluck.drive.evaluation.DB.gps.GpsInfoWorker; import safeluck.drive.evaluation.R; +import safeluck.drive.evaluation.bean.RegisterMessage; import safeluck.drive.evaluation.im.IMSClientBootstrap; import safeluck.drive.evaluation.im.MessageProcessor; import safeluck.drive.evaluation.tcp.ConnectThread; +import safeluck.drive.evaluation.util.Utils; /** * MyApplication2 @@ -124,7 +127,8 @@ String userId = "100002"; String token = "token_" + userId; - String hosts = "[{\"host\":\"192.168.10.234\", \"port\":8855}]"; + String hosts = "[{\"host\":\"47.93.80.84\", \"port\":12125}]"; +// String hosts = "[{\"host\":\"192.168.31.77\", \"port\":12125}]"; IMSClientBootstrap.getInstance().init(userId,token,hosts,1); break; @@ -142,8 +146,12 @@ //娓呴櫎app_status 琛� // OneTimeWorkRequest oneTimeWorkRequest = new OneTimeWorkRequest.Builder(AppStatusInitWork.class).build(); // WorkManager.getInstance(_mActivity).enqueue(oneTimeWorkRequest); - - + RegisterMessage registerMessage = new RegisterMessage((short)0x802); + registerMessage.setCityid((short) 1); + registerMessage.setProviceId((short)23); + registerMessage.setImei("460123874561"); + registerMessage.setModel("123"); + registerMessage.setSn("2019101500000001"); break; } } diff --git a/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java b/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java new file mode 100644 index 0000000..128f312 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java @@ -0,0 +1,196 @@ +package safeluck.drive.evaluation.util; + + + + import java.lang.reflect.InvocationTargetException; + import java.lang.reflect.Method; + import java.util.Map; + + import android.content.Context; + import android.content.SharedPreferences; + +public class SPUtils +{ + /** + * 淇濆瓨鍦ㄦ墜鏈洪噷闈㈢殑鏂囦欢鍚� + */ + public static final String FILE_NAME = "share_data"; + + /** + * 淇濆瓨鏁版嵁鐨勬柟娉曪紝鎴戜滑闇�瑕佹嬁鍒颁繚瀛樻暟鎹殑鍏蜂綋绫诲瀷锛岀劧鍚庢牴鎹被鍨嬭皟鐢ㄤ笉鍚岀殑淇濆瓨鏂规硶 + * + * @param context + * @param key + * @param object + */ + public static void put(Context context, String key, Object object) + { + + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + + if (object instanceof String) + { + editor.putString(key, (String) object); + } else if (object instanceof Integer) + { + editor.putInt(key, (Integer) object); + } else if (object instanceof Boolean) + { + editor.putBoolean(key, (Boolean) object); + } else if (object instanceof Float) + { + editor.putFloat(key, (Float) object); + } else if (object instanceof Long) + { + editor.putLong(key, (Long) object); + } else + { + editor.putString(key, object.toString()); + } + + SharedPreferencesCompat.apply(editor); + } + + /** + * 寰楀埌淇濆瓨鏁版嵁鐨勬柟娉曪紝鎴戜滑鏍规嵁榛樿鍊煎緱鍒颁繚瀛樼殑鏁版嵁鐨勫叿浣撶被鍨嬶紝鐒跺悗璋冪敤鐩稿浜庣殑鏂规硶鑾峰彇鍊� + * + * @param context + * @param key + * @param defaultObject + * @return + */ + public static Object get(Context context, String key, Object defaultObject) + { + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE); + + if (defaultObject instanceof String) + { + return sp.getString(key, (String) defaultObject); + } else if (defaultObject instanceof Integer) + { + return sp.getInt(key, (Integer) defaultObject); + } else if (defaultObject instanceof Boolean) + { + return sp.getBoolean(key, (Boolean) defaultObject); + } else if (defaultObject instanceof Float) + { + return sp.getFloat(key, (Float) defaultObject); + } else if (defaultObject instanceof Long) + { + return sp.getLong(key, (Long) defaultObject); + } + + return null; + } + + /** + * 绉婚櫎鏌愪釜key鍊煎凡缁忓搴旂殑鍊� + * @param context + * @param key + */ + public static void remove(Context context, String key) + { + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + editor.remove(key); + SharedPreferencesCompat.apply(editor); + } + + /** + * 娓呴櫎鎵�鏈夋暟鎹� + * @param context + */ + public static void clear(Context context) + { + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + editor.clear(); + SharedPreferencesCompat.apply(editor); + } + + /** + * 鏌ヨ鏌愪釜key鏄惁宸茬粡瀛樺湪 + * @param context + * @param key + * @return + */ + public static boolean contains(Context context, String key) + { + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE); + return sp.contains(key); + } + + /** + * 杩斿洖鎵�鏈夌殑閿�煎 + * + * @param context + * @return + */ + public static Map<String, ?> getAll(Context context) + { + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE); + return sp.getAll(); + } + + /** + * 鍒涘缓涓�涓В鍐砈haredPreferencesCompat.apply鏂规硶鐨勪竴涓吋瀹圭被 + * + * @author zhy + * + */ + private static class SharedPreferencesCompat + { + private static final Method sApplyMethod = findApplyMethod(); + + /** + * 鍙嶅皠鏌ユ壘apply鐨勬柟娉� + * + * @return + */ + @SuppressWarnings({ "unchecked", "rawtypes" }) + private static Method findApplyMethod() + { + try + { + Class clz = SharedPreferences.Editor.class; + return clz.getMethod("apply"); + } catch (NoSuchMethodException e) + { + } + + return null; + } + + /** + * 濡傛灉鎵惧埌鍒欎娇鐢╝pply鎵ц锛屽惁鍒欎娇鐢╟ommit + * + * @param editor + */ + public static void apply(SharedPreferences.Editor editor) + { + try + { + if (sApplyMethod != null) + { + sApplyMethod.invoke(editor); + return; + } + } catch (IllegalArgumentException e) + { + } catch (IllegalAccessException e) + { + } catch (InvocationTargetException e) + { + } + editor.commit(); + } + } + +} \ No newline at end of file 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 f6054f2..6231097 100644 --- a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java +++ b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java @@ -99,4 +99,9 @@ } return temp; } + + public static boolean isDigital(String str) { + String regx= "^\\d+"; + return str.matches(regx); + } } -- Gitblit v1.8.0