app/src/main/assets/signal_config_file.json
@@ -4,7 +4,6 @@ "signalName": "雾灯", "index":1, "func_id":21, "id":0, "highLevel":1, "mainBoard":2 }, @@ -12,14 +11,12 @@ "signalName": "三档", "index":2, "func_id":11, "id":1, "highLevel":1, "mainBoard":2 }, { "signalName": "手刹", "index":3, "id":2, "func_id":3, "highLevel":1, "mainBoard":2 @@ -28,7 +25,6 @@ "signalName": "一档", "index":4, "func_id":9, "id":3, "highLevel":1, "mainBoard":2 }, @@ -36,14 +32,12 @@ "signalName": "副刹", "index":5, "func_id":16, "id":4, "highLevel":1, "mainBoard":2 }, { "signalName": "安全带", "index":6, "id":5, "func_id":0, "highLevel":1, "mainBoard":2 @@ -51,7 +45,6 @@ { "signalName": "二档", "index":7, "id":6, "func_id":10, "highLevel":1, "mainBoard":2 @@ -59,7 +52,6 @@ { "signalName": "脚刹", "index":8, "id":7, "func_id":4, "highLevel":1, "mainBoard":2 @@ -68,38 +60,33 @@ "signalName": "空挡", "index":9, "func_id":8, "id":8, "highLevel":1, "mainBoard":2 }, { "signalName": "门锁", "index":10, "func_id":7, "id":9, "index":10, "highLevel":1, "mainBoard":2 }, { "signalName": "START位", "index":11, "func_id":15, "id":10, "highLevel":1, "index":11, "mainBoard":2 }, { "signalName": "远光", "index":12, "func_id":6, "id":11, "highLevel":1, "mainBoard":2 }, { "signalName": "绕车一", "index":13, "id":12, "func_id":17, "highLevel":1, "mainBoard":2 @@ -108,7 +95,6 @@ "signalName": "近光", "index":14, "func_id":5, "id":13, "highLevel":1, "mainBoard":2 }, @@ -116,14 +102,12 @@ "signalName": "左转", "index":15, "func_id":1, "id":14, "highLevel":1, "mainBoard":2 }, { "signalName": "右转", "index":16, "id":15, "func_id":2, "highLevel":1, "mainBoard":2 @@ -139,7 +123,6 @@ { "signalName": "绕车三", "index":18, "id":17, "func_id":19, "highLevel":1, "mainBoard":2 @@ -147,9 +130,14 @@ { "signalName": "绕车四", "index":19, "id":17, "func_id":20, "highLevel":1, "mainBoard":2 } , { "signalName": "示廓灯", "index":20, "func_id":22, "highLevel":1, "mainBoard":2 } ] app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigDao.java
@@ -12,15 +12,19 @@ @Insert void insert(SingalConfig singalConfig ); //设置id信号的对应的物理索引 @Query("update signal_config set `index`=:mindex where id =:id ") @Query("update signal_config set `index`=:mindex where func_id =:id ") void updateindex(int mindex,int id); //设置id信号的对应的高电平有无效 @Query("update signal_config set `highLevel`=:hightLevel where id =:id ") @Query("update signal_config set `highLevel`=:hightLevel where func_id =:id ") void updateHightlevel(int hightLevel,int id); //设置id信号的对应的主板有无效 @Query("update signal_config set `mainBoard`=:mainBoard where id =:id ") @Query("update signal_config set `mainBoard`=:mainBoard where func_id =:id ") void updateMainBoard(int mainBoard,int id); @Query("select signalName from signal_config where `index`=:gpio") String getSignalName(int gpio); //查询所有信号对应的物理所引 @Query("select `index` from signal_config") List<Integer> getAllIndexs(); app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SingalConfig.java
@@ -7,19 +7,13 @@ 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-主板有效 @PrimaryKey private int func_id;//1gongneng public int getFunc_id() { app/src/main/java/safeluck/drive/evaluation/bean/SignalConfigBean.java
@@ -11,9 +11,7 @@ private String signal_name_first; private String signal_name_second; private boolean one; private boolean two; private boolean three; private boolean four; private int port_one; private int port_two; @@ -35,13 +33,6 @@ this.three = three; } public boolean isFour() { return four; } public void setFour(boolean four) { this.four = four; } public String getSignal_name_second() { return signal_name_second; @@ -59,13 +50,6 @@ this.one = one; } public boolean isTwo() { return two; } public void setTwo(boolean two) { this.two = two; } public int getPort_one() { return port_one; @@ -89,10 +73,20 @@ this.signal_name_first = signal_name_first; this.signal_name_second = signal_name_second; this.one = one; this.two = two; this.three = three; this.four = four; this.port_one = port_one; this.port_two = port_two; } @Override public String toString() { return "SignalConfigBean{" + "signal_name_first='" + signal_name_first + '\'' + ", signal_name_second='" + signal_name_second + '\'' + ", one=" + one + ", three=" + three + ", port_one=" + port_one + ", port_two=" + port_two + '}'; } } app/src/main/java/safeluck/drive/evaluation/bean/SignalConfigRemote.java
@@ -35,7 +35,12 @@ this.func_id = func_id; } @Override public String toString() { return "SignalConfigRemote{" + "gpio_num=" + gpio_num + ", level=" + level + ", func_id=" + func_id + '}'; } } app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java
@@ -15,6 +15,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.CheckBox; @@ -27,6 +28,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatSpinner; import androidx.appcompat.widget.Toolbar; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders; @@ -36,6 +38,7 @@ import com.google.gson.Gson; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -44,11 +47,13 @@ import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.Constant; import safeluck.drive.evaluation.DB.WorkRoomDataBase; 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.CThreadPoolExecutor; import safeluck.drive.evaluation.util.Utils; @@ -64,23 +69,9 @@ 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 String[] arr_strs; private List<SignalConfigBean> signalConfiglist =new ArrayList<>(); @@ -102,6 +93,7 @@ } private void initView(View view) { arr_strs = getResources().getStringArray(R.array.signals_name); mToobar = view.findViewById(R.id.toolbar); linearLayout = view.findViewById(R.id.ll_container); mToobar.setTitle("信号配置"); @@ -126,10 +118,13 @@ 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(); if (i<singalConfigs.size()){ 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(); } } }); @@ -139,7 +134,6 @@ } private Gson gson = new Gson(); @@ -202,18 +196,37 @@ viewHolder.checkBox1.setTag(signalConfiglist.get(position)); viewHolder.checkBox3.setTag(signalConfiglist.get(position)); } viewHolder.editText1.setTag(position*2); viewHolder.editText2.setTag((position*2+1)); viewHolder.editText1.setTag(position*2+1); viewHolder.editText2.setTag((2*(1+position))); final SignalConfigBean signalConfigItem = getItem(position); viewHolder.textView1.setText(signalConfigItem.getSignal_name_first()); viewHolder.textView2.setText(signalConfigItem.getSignal_name_second()); viewHolder.textView1.setText(String.valueOf(position*2+1)); viewHolder.textView2.setText(String.valueOf(2*(1+position))); viewHolder.editText1.setText(String.valueOf(signalConfigItem.getPort_one())); viewHolder.editText2.setText(String.valueOf(signalConfigItem.getPort_two())); CThreadPoolExecutor.runInBackground(new Runnable() { @Override public void run() { String signName1=WorkRoomDataBase.getWorkRoomDataBase(getActivity()).getSignalConfigDao().getSignalName(position*2+1); String s2=WorkRoomDataBase.getWorkRoomDataBase(getActivity()).getSignalConfigDao().getSignalName((position+1)*2); getActivity().runOnUiThread(new Runnable() { @Override public void run() { viewHolder.editText1.setSelection(getSigal2Pos(signName1)); viewHolder.editText2.setSelection(getSigal2Pos(s2)); } }); } }); viewHolder.checkBox1.setChecked(signalConfigItem.isOne()); viewHolder.checkBox3.setChecked(signalConfigItem.isThree()); @@ -224,8 +237,8 @@ class ViewHolder{ CheckBox checkBox1; CheckBox checkBox3; EditText editText1; EditText editText2; AppCompatSpinner editText1; AppCompatSpinner editText2; TextView textView1; TextView textView2; @@ -236,74 +249,37 @@ 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() { editText1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @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) { public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 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()){ Log.i(TAG,String.format("Spinner1 pos=%d,position=%d对应的信号名称=%s",pos,position ,arr_strs[position])); signalConfigViewModel.updateindex(pos,position); } }else{ handler.removeMessages(INDEX); Message message = Message.obtain(); message.what = INDEX; message.arg1 = pos; message.arg2 = a; handler.sendMessageDelayed(message,1500); } } @Override public void onNothingSelected(AdapterView<?> parent) { } }); editText2.addTextChangedListener(new TextWatcher() { editText2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @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) { public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 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()){ Log.i(TAG,String.format("Spinner2 pos=%d,position=%d对应的信号名称=%s",pos,position ,arr_strs[position])); signalConfigViewModel.updateindex(pos,position); } }else{ handler.removeMessages(INDEX); Message message = Message.obtain(); message.what = INDEX; message.arg1 = pos; message.arg2 = a; handler.sendMessageDelayed(message,1500); } @Override public void onNothingSelected(AdapterView<?> parent) { } } }); @@ -313,23 +289,16 @@ } } @Override public void onResume() { super.onResume(); Log.i(TAG, "onResume: "); private int getSigal2Pos(String signalConfigItem) { for (int i = 0; i < arr_strs.length; i++) { if (arr_strs[i].equals(signalConfigItem)){ // Log.i(TAG,"信号名称="+signalConfigItem+" i="+i); return i; }else{ continue; } } return -1; } @Override public void onStop() { super.onStop(); Log.i(TAG, "onStop: "); } @Override public void onPause() { super.onPause(); Log.i(TAG, "onPause: "); } } app/src/main/res/layout/layout_home_fragment.xml
@@ -4,13 +4,14 @@ android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <RelativeLayout android:layout_width="560dp" android:layout_height="254dp" android:layout_centerInParent="true"> android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" > <RelativeLayout android:layout_width="280dp" android:layout_height="122dp" android:background="@drawable/sys_home_part_bg" android:layout_width="558px" android:layout_height="244px" android:background="@mipmap/let_top" android:id="@+id/network_train" > <include @@ -20,56 +21,56 @@ layout="@layout/layout_sys_home_part"/> </RelativeLayout> <RelativeLayout android:layout_width="280dp" android:layout_height="122dp" android:background="@drawable/sys_home_part_bg" android:layout_width="512px" android:layout_height="244px" android:layout_marginLeft="-45px" android:background="@mipmap/right_top" android:layout_toRightOf="@+id/network_train" android:id="@+id/car_train" > <include android:layout_width="280dp" android:layout_height="122dp" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" layout="@layout/layout_sys_home_part_train"/> </RelativeLayout> <RelativeLayout android:layout_width="280dp" android:layout_height="122dp" android:layout_marginTop="7dp" android:background="@drawable/sys_home_part_bg" android:layout_width="512px" android:layout_height="244px" android:layout_marginTop="13px" android:background="@mipmap/left_bottom" android:id="@+id/system_setting" android:layout_below="@+id/network_train" > <include android:layout_width="280dp" android:layout_height="122dp" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" layout="@layout/layout_sys_home_part_set"/> </RelativeLayout> <RelativeLayout android:layout_width="280dp" android:layout_height="122dp" android:background="@drawable/sys_home_part_bg" android:layout_width="550px" android:layout_height="244px" android:background="@mipmap/right_bottom" android:id="@+id/exit_sys" android:layout_marginTop="7dp" android:layout_marginLeft="-37px" android:layout_marginTop="13px" android:layout_toRightOf="@+id/system_setting" android:layout_below="@+id/network_train" > <include android:layout_width="280dp" android:layout_height="122dp" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" layout="@layout/layout_sys_home_part_exit"/> </RelativeLayout> <safeluck.drive.evaluation.customview.CircleImageView android:layout_width="104dp" android:layout_height="104dp" android:layout_width="208px" android:layout_height="208px" android:layout_marginLeft="411px" android:layout_marginTop="147px" app:civ_fill_color="#2A303F" android:src="@drawable/home_circle" app:civ_fill_color="#2B3140" app:civ_border_width="10dp" android:layout_centerInParent="true" /> </RelativeLayout> app/src/main/res/layout/layout_signal_conf_item.xml
@@ -14,14 +14,15 @@ android:gravity="center_vertical" android:textSize="@dimen/network_train_textsize22px" android:text="喇叭"/> <EditText <androidx.appcompat.widget.AppCompatSpinner android:layout_width="0dp" android:layout_weight="1" android:textColor="@android:color/white" android:gravity="center" android:layout_height="32dp" android:id="@+id/et_signal1_port" android:background="@drawable/tv_des_bg" android:entries="@array/signals_name" android:textSize="@dimen/network_train_textsize22px" android:text="0"/> <safeluck.drive.evaluation.customview.MyCustomCheckbox @@ -44,15 +45,16 @@ android:id="@+id/tv_signal_2" android:layout_height="32dp" android:text="喇叭"/> <EditText <androidx.appcompat.widget.AppCompatSpinner android:layout_width="0dp" android:layout_weight="1" android:gravity="center" android:textColor="@android:color/white" android:textSize="@dimen/network_train_textsize22px" android:background="@drawable/tv_des_bg" android:spinnerMode="dropdown" android:id="@+id/et_signal2_port" android:layout_height="32dp" android:entries="@array/signals_name" android:text="0"/> <safeluck.drive.evaluation.customview.MyCustomCheckbox android:layout_width="wrap_content" app/src/main/res/layout/layout_signal_config.xml
@@ -51,7 +51,7 @@ android:gravity="center" android:textSize="15sp" android:textColor="#ff888995" android:text="信号名称"/> android:text="物理通道"/> <TextView android:layout_width="0dp" android:layout_weight="1" @@ -59,7 +59,7 @@ android:gravity="center" android:textSize="15sp" android:textColor="#ff888995" android:text="物理索引"/> android:text="信号名称"/> <TextView android:layout_width="0dp" android:layout_weight="1" app/src/main/res/layout/layout_sys_home_part.xml
@@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="280dp" android:orientation="vertical" android:layout_width="557px" android:gravity="center" android:layout_height="122dp" android:layout_height="244px" > @@ -16,12 +16,12 @@ android:layout_height="wrap_content" android:text="联网考试" android:textColor="#ffffffff" android:textSize="22sp" android:textSize="39sp" android:id="@+id/tv_des" android:layout_toRightOf="@+id/circle_1" /> <View android:layout_width="16dp" android:layout_width="26dp" android:layout_height="2dp" android:background="@drawable/sys_line_bg" android:layout_below="@+id/tv_des" @@ -35,7 +35,7 @@ android:text="lian wang kao shi" android:textColor="#ff64738e" android:id="@+id/tv_des_t" android:textSize="8sp" android:textSize="13sp" android:shadowDx="0" android:shadowDy="1" android:shadowRadius="3.0" app/src/main/res/layout/layout_sys_home_part_exit.xml
@@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="280dp" android:orientation="vertical" android:layout_width="match_parent" android:gravity="center" android:layout_height="122dp" android:layout_height="match_parent" > @@ -16,26 +16,26 @@ android:layout_height="wrap_content" android:text="退出" android:textColor="#ffffffff" android:textSize="22sp" android:textSize="39sp" android:id="@+id/tv_des" android:layout_toRightOf="@+id/circle_1" /> <View android:layout_width="16dp" android:layout_width="26dp" android:layout_height="2dp" android:background="@drawable/sys_line_bg" android:layout_below="@+id/tv_des" android:layout_toRightOf="@+id/circle_1" android:layout_marginTop="10dp" android:layout_marginTop="12dp" android:id="@+id/view_line" android:layout_marginBottom="10dp"/> android:layout_marginBottom="16dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="tui chu" android:textColor="#ff64738e" android:id="@+id/tv_des_t" android:textSize="8sp" android:textSize="13sp" android:shadowDx="0" android:shadowDy="1" android:shadowRadius="3.0" app/src/main/res/layout/layout_sys_home_part_set.xml
@@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="280dp" android:orientation="vertical" android:layout_width="match_parent" android:gravity="center" android:layout_height="122dp" android:layout_height="match_parent" > @@ -16,12 +16,12 @@ android:layout_height="wrap_content" android:text="设置" android:textColor="#ffffffff" android:textSize="22sp" android:textSize="39sp" android:id="@+id/tv_des" android:layout_toRightOf="@+id/circle_1" /> <View android:layout_width="16dp" android:layout_width="26dp" android:layout_height="2dp" android:background="@drawable/sys_line_bg" android:layout_below="@+id/tv_des" @@ -35,7 +35,7 @@ android:text="she zhi" android:textColor="#ff64738e" android:id="@+id/tv_des_t" android:textSize="8sp" android:textSize="13sp" android:shadowDx="0" android:shadowDy="1" android:shadowRadius="3.0" app/src/main/res/layout/layout_sys_home_part_train.xml
@@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="280dp" android:orientation="vertical" android:layout_width="512px" android:gravity="center" android:layout_height="122dp" android:layout_height="244px" > @@ -16,12 +16,12 @@ android:layout_height="wrap_content" android:text="单机训练" android:textColor="#ffffffff" android:textSize="22sp" android:textSize="39sp" android:id="@+id/tv_des" android:layout_toRightOf="@+id/circle_1" /> <View android:layout_width="16dp" android:layout_width="26dp" android:layout_height="2dp" android:background="@drawable/sys_line_bg" android:layout_below="@+id/tv_des" @@ -35,7 +35,7 @@ android:text="dan ji xun lian" android:textColor="#ff64738e" android:id="@+id/tv_des_t" android:textSize="8sp" android:textSize="13sp" android:shadowDx="0" android:shadowDy="1" android:shadowRadius="3.0" app/src/main/res/mipmap-xhdpi/left_bottom.png
app/src/main/res/mipmap-xhdpi/let_top.png
app/src/main/res/mipmap-xhdpi/right_bottom.png
app/src/main/res/mipmap-xhdpi/right_top.png
app/src/main/res/values/arrays.xml
@@ -11,4 +11,29 @@ <item>固定解</item> <item>浮动解</item> </string-array> <string-array name="signals_name"> <item>安全带</item> <item>左转</item> <item>右转</item> <item>手刹</item> <item>脚刹</item> <item>近光</item> <item>远光</item> <item>门锁</item> <item>空档</item> <item>一档</item> <item>二档</item> <item>三档</item> <item>四档</item> <item>五档</item> <item>倒档</item> <item>START位</item> <item>副刹</item> <item>绕车一</item> <item>绕车二</item> <item>绕车三</item> <item>绕车四</item> <item>雾灯</item> <item>示廓灯</item> </string-array> </resources> app/src/main/res/values/styles.xml
@@ -26,8 +26,8 @@ </style> <style name="home_fragment_icon"> <item name="android:layout_width">80dp</item> <item name="android:layout_height">80dp</item> <item name="android:layout_width">140px</item> <item name="android:layout_height">140px</item> <item name="android:gravity">center</item> <item name="android:layout_weight">1</item>