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/fragment/SignalConfigFragment.java | 269 +++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 215 insertions(+), 54 deletions(-)
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: ");
+ }
}
--
Gitblit v1.8.0