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