app/src/main/java/safeluck/drive/evaluation/DB/Student.java
@@ -94,10 +94,12 @@ @Override public String toString() { return "Student{" + "stu_ID=" + stu_id + "stu_id=" + stu_id + ", name='" + name + '\'' + ", ID='" + ID + '\'' + ", sex=" + sex + ", head_url='" + head_url + '\'' + ", begin_time=" + begin_time + '}'; } } app/src/main/java/safeluck/drive/evaluation/DB/StudentInfoUpdateWork.java
@@ -8,6 +8,8 @@ import androidx.work.Worker; import androidx.work.WorkerParameters; import com.anyun.exam.lib.MyLog; import org.json.JSONException; import org.json.JSONObject; @@ -35,6 +37,7 @@ String name = jsonObject.getString("name"); Student student =new Student(1001,name,id,2); student.setHead_url(headUrl); MyLog.i("更新签到人员信息:"+student.toString()); WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getstudentDao().insert(student); return Result.success(); } catch (JSONException e) { app/src/main/java/safeluck/drive/evaluation/adapter/QuickAdapter.java
New file @@ -0,0 +1,72 @@ package safeluck.drive.evaluation.adapter; import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; import java.util.List; public abstract class QuickAdapter<T> extends RecyclerView.Adapter<QuickAdapter.VH>{ private List<T> mDatas; public QuickAdapter(List<T> datas){ this.mDatas = datas; } public abstract int getLayoutId(int viewType); @Override public VH onCreateViewHolder(ViewGroup parent, int viewType) { return VH.get(parent,getLayoutId(viewType)); } @Override public void onBindViewHolder(VH holder, int position) { convert(holder, mDatas.get(position), position); } @Override public int getItemCount() { return mDatas.size(); } public abstract void convert(VH holder, T data, int position); //更新数据 public void updateData(List<T> data) { this.mDatas = data; notifyDataSetChanged(); } public static class VH extends RecyclerView.ViewHolder{ private SparseArray<View> mViews; private View mConvertView; private VH(View v){ super(v); mConvertView = v; mViews = new SparseArray<>(); } public static VH get(ViewGroup parent, int layoutId){ View convertView = LayoutInflater.from(parent.getContext()).inflate(layoutId, parent, false); return new VH(convertView); } public <T extends View> T getView(int id){ View v = mViews.get(id); if(v == null){ v = mConvertView.findViewById(id); mViews.put(id, v); } return (T)v; } public void setText(int id, String value){ TextView view = getView(id); view.setText(value); } } } app/src/main/java/safeluck/drive/evaluation/adapter/SimpleFragmentAdapter.java
@@ -12,6 +12,7 @@ import safeluck.drive.evaluation.fragment.GpsInfoFragment; import safeluck.drive.evaluation.fragment.RTKConfigFragment; import safeluck.drive.evaluation.fragment.JiaXiaoFragment; import safeluck.drive.evaluation.fragment.SetArgumentsFragment; /** @@ -21,7 +22,7 @@ * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class SimpleFragmentAdapter extends FragmentPagerAdapter { private String[] mTitles = new String[]{"基础数据","RTK配置","GNSS信息"}; private String[] mTitles = new String[]{"基础数据","GNSS信息"}; public SimpleFragmentAdapter(FragmentManager fm) { super(fm); } @@ -34,15 +35,15 @@ //基本数据 supportFragment = BaseDatasFragment.newInstance(); break; case 1: supportFragment = RTKConfigFragment.newInstance(); //ftp break; // case 1: // supportFragment = RTKConfigFragment.newInstance(); // //ftp // break; // case 2: // supportFragment = JiaXiaoFragment.newInstance(); // //驾校信息 // break; case 2: case 1: supportFragment = GpsInfoFragment.newInstance(); break; default:break; app/src/main/java/safeluck/drive/evaluation/adapter/WrapContentLinearLayoutManager.java
New file @@ -0,0 +1,38 @@ package safeluck.drive.evaluation.adapter; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.anyun.exam.lib.MyLog; import safeluck.drive.evaluation.fragment.BaseDatasFragment; public class WrapContentLinearLayoutManager extends LinearLayoutManager { private static final String TAG = "WrapContentLinearLayoutManager"; public WrapContentLinearLayoutManager(Context context) { super(context); } public WrapContentLinearLayoutManager(Context context, int orientation, boolean reverseLayout) { super(context, orientation, reverseLayout); } public WrapContentLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) { // 在这里通过try来捕获这个异常即可 try { super.onLayoutChildren(recycler, state); } catch (IndexOutOfBoundsException e) { MyLog.i(TAG, "onLayoutChildren: "+e.getLocalizedMessage()+" : "+e.getMessage()); e.printStackTrace(); } } } app/src/main/java/safeluck/drive/evaluation/app.java
@@ -82,7 +82,7 @@ super.onCreate(); //初始化Fragment 建议在Application onCreate里面初始化 if (SystemUtil.compareProcessName(this)) { Fragmentation.builder().stackViewMode(Fragmentation.BUBBLE).debug(true) Fragmentation.builder().stackViewMode(Fragmentation.BUBBLE).debug(false) .handleException(new ExceptionHandler() { @Override public void onException(@NonNull Exception e) { app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java
@@ -8,6 +8,8 @@ import androidx.annotation.Nullable; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; @@ -15,6 +17,7 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; @@ -28,6 +31,8 @@ import java.io.UnsupportedEncodingException; import java.lang.reflect.Field; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.Constant; @@ -37,6 +42,9 @@ import safeluck.drive.evaluation.DB.rtktb.RTKConfigViewModel; import safeluck.drive.evaluation.MainActivity; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.adapter.GpsInfoAdapter; import safeluck.drive.evaluation.adapter.QuickAdapter; import safeluck.drive.evaluation.adapter.WrapContentLinearLayoutManager; import safeluck.drive.evaluation.bean.ExamPlatformData; import safeluck.drive.evaluation.bean.MCUInfo; import safeluck.drive.evaluation.cEventCenter.CEventCenter; @@ -52,24 +60,12 @@ * 邮箱:632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class BaseDatasFragment extends SupportFragment implements View.OnClickListener { public class BaseDatasFragment extends SupportFragment { private static final String TAG = BaseDatasFragment.class.getSimpleName(); private static final int REQUEST_CODE_MAP = 100; private static final int REQUEST_CODE_CAR = 101; private int request_code = REQUEST_CODE_MAP; private Button btn_inspect_signal; private Button btn_config_signal; private Button btn_mcu_upgrade,btn_map_select; private EditText et_ip,et_port; private Gson gson; StringBuffer stringBuffer = new StringBuffer(); private EditText et_ip_rtk,et_port_rtk,et_city_id,et_city_province,et_phone; private TextView tv_mcu; // RTK注册状态、RTK连接状态、 // private TextView tv_reg,tv_connect,tv_model,tv_sn,tv_imei,tv_login; private RTKConfigViewModel rtkConfigViewModel; private Gson gson = new Gson(); private RTKConfig mRtkConfig; private AppStatus appStatus; private AppStatusViewModel appStatusViewModel; private ICEventListener icEventListener = new ICEventListener() { @Override @@ -78,30 +74,49 @@ String mcuinfoStr = (String)obj; if (gson != null){ final MCUInfo mcuInfo=gson.fromJson(mcuinfoStr, MCUInfo.class); stringBuffer.delete(0,stringBuffer.toString().length()); Field [] fields = mcuInfo.getClass().getDeclaredFields(); datas.clear(); for (int i = 0; i < fields.length; i++) { fields[i].setAccessible(true); try { if (fields[i].getName().equalsIgnoreCase("version")){ String version = (String) fields[i].get(mcuInfo); version = new String(BytesUtils.hexStringToBytes(version),"GBK"); stringBuffer.append(" "+fields[i].getName() + ":" + version); Log.i(TAG, "onCEvent: "+version); datas.add(fields[i].getName() + ":" + version); }else stringBuffer.append(" "+fields[i].getName() + ":" + fields[i].get(mcuInfo)); datas.add(fields[i].getName() + ":" + fields[i].get(mcuInfo)); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } tv_mcu.post(new Runnable() { lv.post(new Runnable() { @Override public void run() { tv_mcu.setText(getString(R.string.mcu_info)+stringBuffer.toString()); if (mRtkConfig != null){ datas.add("省ID:"+mRtkConfig.getProvince()); datas.add("市ID:"+mRtkConfig.getCity()); datas.add("电话:"+mRtkConfig.getPhone()); datas.add("RTK平台地址:"+mRtkConfig.getIp()); datas.add("RTK平台端口:"+mRtkConfig.getPort()); datas.add("考试平台地址:"+ExamPlatformData.getInstance().getPlatformIP()); datas.add("考试平台端口:"+ExamPlatformData.getInstance().getPlatformPort()); } if (appStatus != null){ datas.add("RTK平台连接状态:"+appStatus.getRtk_connect_status()); datas.add("RTK平台登录状态:"+appStatus.getRtk_login_code()); datas.add("考试平台连接状态:"+appStatus.getRtk_connect_status()); datas.add("考试平台登录状态:"+appStatus.getRtk_login_code()); } gpsInfoAdapter.addAll(datas); } }); } } } @@ -111,194 +126,75 @@ return new BaseDatasFragment(); } private List<String> datas = new ArrayList<>(); private RecyclerView recyclerView; private ListView lv; private GpsInfoAdapter gpsInfoAdapter; private List<String> gpsinfos = new ArrayList<>(); @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.layout_base_datas, container, false); View view = inflater.inflate(R.layout.layout_gps_info, container, false); initView(view); rtkConfigViewModel= ViewModelProviders.of(this).get(RTKConfigViewModel.class); View footView = inflater.inflate(R.layout.gps_info_item_rightarrow,null); View headView = inflater.inflate(R.layout.inspect_signal_head,null); lv.addFooterView(footView); lv.addHeaderView(headView); footView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // SetArgumentsFragment setArgumentsFragment = findFragment(SetArgumentsFragment.class); // if (setArgumentsFragment == null){ // setArgumentsFragment = SetArgumentsFragment.newInstance(); // } ((BaseSettingFragment)getParentFragment()).startBrotherFragment(SetArgumentsFragment.newInstance()); } }); headView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ((BaseSettingFragment)getParentFragment()).startBrotherFragment(InspectSignalFragment.newInstance()); } }); RTKConfigViewModel rtkConfigViewModel= ViewModelProviders.of(this).get(RTKConfigViewModel.class); rtkConfigViewModel.getRTKConfig().observe(this, new Observer<RTKConfig>() { @Override public void onChanged(RTKConfig rtkConfig) { if (rtkConfig != null){ Log.i(TAG, "RTKConfig Changed: "+rtkConfig.toString()); mRtkConfig = rtkConfig; et_ip_rtk.setText(rtkConfig.getIp()); et_city_id.setText(String.valueOf(rtkConfig.getCity())); et_city_province.setText(String.valueOf(rtkConfig.getProvince())); et_port_rtk.setText(String.valueOf(rtkConfig.getPort())); et_phone.setText(rtkConfig.getPhone()); // tv_sn.setText(getResources().getString(R.string.rtk_config_sn,rtkConfig.getSn())); // tv_model.setText(getResources().getString(R.string.rtk_config_model,rtkConfig.getModel())); // tv_imei.setText(getResources().getString(R.string.rtk_config_imei,rtkConfig.getImei())); // tv_reg.setText(getResources().getString(R.string.rtk_register_status,rtkConfig.getRegistered())); } } }); appStatusViewModel = ViewModelProviders.of(this).get(AppStatusViewModel.class); appStatusViewModel = ViewModelProviders.of(this).get(AppStatusViewModel.class); appStatusViewModel.getAppStatus().observe(this, new Observer<AppStatus>() { @Override public void onChanged(AppStatus appStatus) { if (appStatus != null){ // tv_login.setText(getResources().getString(R.string.rtk_config_login,appStatus.getRtk_login_code())); // tv_connect.setText(getResources().getString(R.string.rtk_connect_status,appStatus.getRtk_connect_status())); public void onChanged(AppStatus ppStatus) { if (ppStatus != null){ appStatus = ppStatus; } } }); return view; } private void initView(View view) { gson = new Gson(); view.findViewById(R.id.btn_save_platform).setOnClickListener(this); et_ip = view.findViewById(R.id.et_platform_ip); et_port = view.findViewById(R.id.et_platform_port); et_ip.setText(ExamPlatformData.getInstance().getPlatformIP()); et_port.setText(ExamPlatformData.getInstance().getPlatformPort()+""); btn_inspect_signal = view.findViewById(R.id.btn_inpsect_signal); btn_mcu_upgrade = view.findViewById(R.id.btn_mcu_upgrade); btn_map_select = view.findViewById(R.id.btn_map_select); view.findViewById(R.id.btn_car_select).setOnClickListener(this); btn_mcu_upgrade.setOnClickListener(this); btn_map_select.setOnClickListener(this); btn_inspect_signal.setOnClickListener(this); btn_config_signal = view.findViewById(R.id.btn_signal_conf); btn_config_signal.setOnClickListener(this); lv = view.findViewById(R.id.lv_gpsinfo); gpsInfoAdapter = new GpsInfoAdapter(_mActivity); lv.setAdapter(gpsInfoAdapter); et_ip_rtk = view.findViewById(R.id.rtk_addr_ip); et_city_id = view.findViewById(R.id.et_city_id); et_city_province = view.findViewById(R.id.et_provice_id); et_phone = view.findViewById(R.id.et_phone); et_port_rtk = view.findViewById(R.id.rtk_addr_port); tv_mcu = view.findViewById(R.id.tv_mcu_info); // tv_connect = view.findViewById(R.id.tv_rtk_connect);//RTK平台连接状态 // tv_imei = view.findViewById(R.id.tv_rtk_imei); // tv_login = view.findViewById(R.id.tv_rtk_login);//RTK平台登录结果 // tv_model = view.findViewById(R.id.tv_rtk_model); // tv_reg = view.findViewById(R.id.tv_rtk_reg);//RTK平台注册状态 // tv_sn = view.findViewById(R.id.tv_rtk_sn); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_inpsect_signal: ((BaseSettingFragment)getParentFragment()).startBrotherFragment(InspectSignalFragment.newInstance()); break; case R.id.btn_signal_conf: ((BaseSettingFragment)getParentFragment()).startBrotherFragment(SignalConfigFragment.newInstance()); break; case R.id.btn_mcu_upgrade: try { byte[] datas =FileUtil.readLocalFile(getActivity(),"dfu.bin"); if (datas != null){ Log.i(TAG,ByteUtil.byte2hex(datas)); String strs = new String(datas, Charset.forName("ISO-8859-1")); Log.i(TAG, "onClick: datas.legnth=="+strs.getBytes("ISO-8859-1").length); AYSdk.getInstance().sendCmd(Constant.UPGRADE_MCU_CONTENT_FILE, strs); }else{ MyLog.i(TAG,"mcu升级文件不存在"); } } catch (IOException e) { e.printStackTrace(); } break; case R.id.btn_save_platform: if(ExamPlatformData.getInstance().compareIPandPort(et_ip.getText().toString().trim(),Integer.parseInt(et_port.getText().toString().trim()))){ ((MainActivity)getActivity()).examPlatformModel.getDataChange().postValue(1); ExamPlatformData.getInstance().insertPlatformIp(et_ip.getText().toString().trim()); ExamPlatformData.getInstance().insertPlatformPort(Integer.parseInt(et_port.getText().toString().trim())); } if (mRtkConfig != null){ mRtkConfig.setPort(Integer.parseInt(et_port_rtk.getText().toString().trim())); mRtkConfig.setCity(Integer.parseInt(et_city_id.getText().toString().trim())); mRtkConfig.setProvince(Integer.parseInt(et_city_province.getText().toString().trim())); mRtkConfig.setIp(et_ip_rtk.getText().toString().trim()); mRtkConfig.setPhone(et_phone.getText().toString().trim()); rtkConfigViewModel.insertRTKConfig(mRtkConfig); } break; case R.id.btn_car_select://车辆模型和地图公用一套代码 区别在于REQUEST_CODE request_code = REQUEST_CODE_CAR; openFileMgr(); break; case R.id.btn_map_select: request_code = REQUEST_CODE_MAP; openFileMgr(); break; default: break; } } private void openFileMgr() { Intent intent = new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT); intent.setType("*/*"); intent.addCategory(Intent.CATEGORY_OPENABLE); try { startActivityForResult(intent, request_code); } catch (android.content.ActivityNotFoundException e) { e.printStackTrace(); Toast.makeText(_mActivity, "请安装文件管理器", Toast.LENGTH_SHORT).show(); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (REQUEST_CODE_MAP == requestCode){ if (data != null){ final Uri uri= data.getData(); Log.i(TAG, "onActivityResult: "+uri.getPath()); ExamPlatformData.getInstance().setNewMapPath(uri.getPath()); CThreadPoolExecutor.runInBackground(new Runnable() { @Override public void run() { byte[] fileContent = FileUtil.readFile(uri.getPath()); if (fileContent != null){ String str = new String(fileContent); Log.i(TAG, "文件内容:"+str); AYSdk.getInstance().sendCmd(Constant.PUSH_MAP_INFO,str); } } }); } }else if (requestCode == REQUEST_CODE_CAR){ if (data != null){ final Uri uri= data.getData(); Log.i(TAG, "onActivityResult: "+uri.getPath()); ExamPlatformData.getInstance().setCarModelPath(uri.getPath()); CThreadPoolExecutor.runInBackground(new Runnable() { @Override public void run() { byte[] fileContent = FileUtil.readFile(uri.getPath()); if (fileContent != null){ String str = new String(fileContent); Log.i(TAG, "文件内容:"+str); AYSdk.getInstance().sendCmd(Constant.PUSH_VECHILE_PROFILE,str); } } }); } } } @Override public void onAttach(Context context) { super.onAttach(context); app/src/main/java/safeluck/drive/evaluation/fragment/BaseSettingFragment.java
@@ -51,7 +51,6 @@ public void startBrotherFragment(SupportFragment targetFragment) { start(targetFragment); } private void initView(View view) { tabLayout = view.findViewById(R.id.tab_base_set); viewPager = view.findViewById(R.id.vp_base_set); app/src/main/java/safeluck/drive/evaluation/fragment/GpsInfoFragment.java
@@ -41,7 +41,7 @@ */ public class GpsInfoFragment extends SupportFragment { private static final String TAG = "RTKConfigFragment"; private static final String TAG = "GpsInfoFragment"; private ListView lv; private GpsInfoAdapter gpsInfoAdapter; app/src/main/java/safeluck/drive/evaluation/fragment/InspectSignalFragment.java
@@ -1,5 +1,6 @@ package safeluck.drive.evaluation.fragment; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; @@ -13,8 +14,14 @@ import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import com.google.gson.Gson; import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.Constant; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.bean.MCUInfo; import safeluck.drive.evaluation.cEventCenter.CEventCenter; import safeluck.drive.evaluation.cEventCenter.ICEventListener; /** * MyApplication2 @@ -24,8 +31,26 @@ */ public class InspectSignalFragment extends SupportFragment { private TextView textView_turnLight; private TextView textView_turnLight,tv_speed,tv_engine; private Toolbar toolbar; private Gson gson= new Gson(); private ICEventListener icEventListener = new ICEventListener() { @Override public void onCEvent(String topic, int msgCode, int resultCode, Object obj) { if (msgCode==Constant.MCU_SN){ final MCUInfo mcuInfo = gson.fromJson((String)obj, MCUInfo.class); if (mcuInfo != null){ tv_engine.post(new Runnable() { @Override public void run() { tv_engine.setText(String.valueOf(mcuInfo.getEngine())); tv_speed.setText(String.valueOf(mcuInfo.getSpeed())); } }); } } } }; public static SupportFragment newInstance(){ return new InspectSignalFragment(); @@ -41,6 +66,8 @@ } private void initView(View view) { tv_engine = view.findViewById(R.id.tv_roate_speed); tv_speed = view.findViewById(R.id.tv_dangwei_num); toolbar =view.findViewById(R.id.toolbar); toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_white_24dp,null)); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @@ -58,5 +85,17 @@ textView_turnLight.setCompoundDrawablesWithIntrinsicBounds(left,null,null,null); } },5*1000); } @Override public void onAttach(Context context) { super.onAttach(context); CEventCenter.onBindEvent(true,icEventListener, Constant.BIND_MCUINFO_TOPIC); } @Override public void onDetach() { super.onDetach(); CEventCenter.onBindEvent(true,icEventListener,Constant.BIND_MCUINFO_TOPIC); } } app/src/main/java/safeluck/drive/evaluation/fragment/SetArgumentsFragment.java
New file @@ -0,0 +1,270 @@ package safeluck.drive.evaluation.fragment; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; 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 androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.anyun.exam.lib.AYSdk; import com.anyun.exam.lib.MyLog; import com.anyun.exam.lib.util.ByteUtil; import com.google.gson.Gson; import com.safeluck.aykj.utils.BytesUtils; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.lang.reflect.Field; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.Constant; import safeluck.drive.evaluation.DB.appstatusdb.AppStatus; import safeluck.drive.evaluation.DB.appstatusdb.AppStatusViewModel; import safeluck.drive.evaluation.DB.rtktb.RTKConfig; import safeluck.drive.evaluation.DB.rtktb.RTKConfigViewModel; import safeluck.drive.evaluation.MainActivity; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.adapter.GpsInfoAdapter; import safeluck.drive.evaluation.adapter.QuickAdapter; import safeluck.drive.evaluation.adapter.WrapContentLinearLayoutManager; import safeluck.drive.evaluation.bean.ExamPlatformData; import safeluck.drive.evaluation.bean.MCUInfo; import safeluck.drive.evaluation.cEventCenter.CEventCenter; import safeluck.drive.evaluation.cEventCenter.ICEventListener; import safeluck.drive.evaluation.util.CThreadPoolExecutor; import safeluck.drive.evaluation.util.FileUtil; /** * 设置所有参数 * 通过设置IP和port,与驾考辅助软件通过tcp传输GPS报文给评判软件 * MyApplication2 * Created by lzw on 2019/3/20. 11:22:39 * 邮箱:632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class SetArgumentsFragment extends SupportFragment implements View.OnClickListener { private static final String TAG = SetArgumentsFragment.class.getSimpleName(); private static final int REQUEST_CODE_MAP = 100; private static final int REQUEST_CODE_CAR = 101; private int request_code = REQUEST_CODE_MAP; private Button btn_config_signal; private Button btn_mcu_upgrade,btn_map_select; private EditText et_ip,et_port; private Gson gson = new Gson(); private EditText et_ip_rtk,et_port_rtk,et_city_id,et_city_province,et_phone; private RTKConfigViewModel rtkConfigViewModel; private RTKConfig mRtkConfig; private Toolbar toolbar; public static SetArgumentsFragment newInstance() { return new SetArgumentsFragment(); } // @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.layout_base_datas, container, false); initView(view); rtkConfigViewModel= ViewModelProviders.of(this).get(RTKConfigViewModel.class); rtkConfigViewModel.getRTKConfig().observe(this, new Observer<RTKConfig>() { @Override public void onChanged(RTKConfig rtkConfig) { if (rtkConfig != null){ Log.i(TAG, "RTKConfig Changed: "+rtkConfig.toString()); mRtkConfig = rtkConfig; et_ip_rtk.setText(rtkConfig.getIp()); et_city_id.setText(String.valueOf(rtkConfig.getCity())); et_city_province.setText(String.valueOf(rtkConfig.getProvince())); et_port_rtk.setText(String.valueOf(rtkConfig.getPort())); et_phone.setText(rtkConfig.getPhone()); } } }); return view; } private void initView(View view) { // toolbar =view.findViewById(R.id.toolbar); // toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_white_24dp,null)); // toolbar.setNavigationOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // _mActivity.onBackPressed(); // } // }); // toolbar.setTitle("设置参数"); view.findViewById(R.id.btn_save_platform).setOnClickListener(this); et_ip = view.findViewById(R.id.et_platform_ip); et_port = view.findViewById(R.id.et_platform_port); et_ip.setText(ExamPlatformData.getInstance().getPlatformIP()); et_port.setText(ExamPlatformData.getInstance().getPlatformPort()+""); btn_mcu_upgrade = view.findViewById(R.id.btn_mcu_upgrade); btn_map_select = view.findViewById(R.id.btn_map_select); view.findViewById(R.id.btn_car_select).setOnClickListener(this); btn_mcu_upgrade.setOnClickListener(this); btn_map_select.setOnClickListener(this); btn_config_signal = view.findViewById(R.id.btn_signal_conf); btn_config_signal.setOnClickListener(this); et_ip_rtk = view.findViewById(R.id.rtk_addr_ip); et_city_id = view.findViewById(R.id.et_city_id); et_city_province = view.findViewById(R.id.et_provice_id); et_phone = view.findViewById(R.id.et_phone); et_port_rtk = view.findViewById(R.id.rtk_addr_port); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_inpsect_signal: break; case R.id.btn_signal_conf: SupportFragment signalFragment = findChildFragment(SignalConfigFragment.class); if (signalFragment == null){ signalFragment= SignalConfigFragment.newInstance(); } start(signalFragment); // ((BaseSettingFragment)getParentFragment()).startBrotherFragment(SignalConfigFragment.newInstance()); break; case R.id.btn_mcu_upgrade: try { byte[] datas = FileUtil.readLocalFile(getActivity(),"dfu.bin"); if (datas != null){ Log.i(TAG, ByteUtil.byte2hex(datas)); String strs = new String(datas, Charset.forName("ISO-8859-1")); Log.i(TAG, "onClick: datas.legnth=="+strs.getBytes("ISO-8859-1").length); AYSdk.getInstance().sendCmd(Constant.UPGRADE_MCU_CONTENT_FILE, strs); }else{ MyLog.i(TAG,"mcu升级文件不存在"); } } catch (IOException e) { e.printStackTrace(); } break; case R.id.btn_save_platform: Toast.makeText(_mActivity, "保存成功", Toast.LENGTH_SHORT).show(); if(ExamPlatformData.getInstance().compareIPandPort(et_ip.getText().toString().trim(),Integer.parseInt(et_port.getText().toString().trim()))){ ((MainActivity)getActivity()).examPlatformModel.getDataChange().postValue(1); ExamPlatformData.getInstance().insertPlatformIp(et_ip.getText().toString().trim()); ExamPlatformData.getInstance().insertPlatformPort(Integer.parseInt(et_port.getText().toString().trim())); } if (mRtkConfig != null){ mRtkConfig.setPort(Integer.parseInt(et_port_rtk.getText().toString().trim())); mRtkConfig.setCity(Integer.parseInt(et_city_id.getText().toString().trim())); mRtkConfig.setProvince(Integer.parseInt(et_city_province.getText().toString().trim())); mRtkConfig.setIp(et_ip_rtk.getText().toString().trim()); mRtkConfig.setPhone(et_phone.getText().toString().trim()); rtkConfigViewModel.insertRTKConfig(mRtkConfig); } _mActivity.onBackPressed(); break; case R.id.btn_car_select://车辆模型和地图公用一套代码 区别在于REQUEST_CODE request_code = REQUEST_CODE_CAR; openFileMgr(); break; case R.id.btn_map_select: request_code = REQUEST_CODE_MAP; openFileMgr(); break; default: break; } } private void openFileMgr() { Intent intent = new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT); intent.setType("*/*"); intent.addCategory(Intent.CATEGORY_OPENABLE); try { startActivityForResult(intent, request_code); } catch (android.content.ActivityNotFoundException e) { e.printStackTrace(); Toast.makeText(_mActivity, "请安装文件管理器", Toast.LENGTH_SHORT).show(); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (REQUEST_CODE_MAP == requestCode){ if (data != null){ final Uri uri= data.getData(); Log.i(TAG, "onActivityResult: "+uri.getPath()); ExamPlatformData.getInstance().setNewMapPath(uri.getPath()); CThreadPoolExecutor.runInBackground(new Runnable() { @Override public void run() { byte[] fileContent = FileUtil.readFile(uri.getPath()); if (fileContent != null){ String str = new String(fileContent); Log.i(TAG, "文件内容:"+str); AYSdk.getInstance().sendCmd(Constant.PUSH_MAP_INFO,str); } } }); } }else if (requestCode == REQUEST_CODE_CAR){ if (data != null){ final Uri uri= data.getData(); Log.i(TAG, "onActivityResult: "+uri.getPath()); ExamPlatformData.getInstance().setCarModelPath(uri.getPath()); CThreadPoolExecutor.runInBackground(new Runnable() { @Override public void run() { byte[] fileContent = FileUtil.readFile(uri.getPath()); if (fileContent != null){ String str = new String(fileContent); Log.i(TAG, "文件内容:"+str); AYSdk.getInstance().sendCmd(Constant.PUSH_VECHILE_PROFILE,str); } } }); } } } @Override public void onAttach(Context context) { super.onAttach(context); } @Override public void onDetach() { super.onDetach(); } } app/src/main/res/drawable/right_arrow.png
app/src/main/res/layout/basedata_item_normal.xml
New file @@ -0,0 +1,12 @@ <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tv_base_data_normal" android:padding="10dp" android:text="456" android:textColor="@android:color/black" android:textSize="25sp" android:gravity="center_vertical" android:layout_width="match_parent" android:layout_height="60dp"> </TextView> app/src/main/res/layout/gps_info_item_rightarrow.xml
New file @@ -0,0 +1,12 @@ <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text_check_info" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceListItemSmall" android:gravity="center_vertical" android:text="设置参数" android:drawableRight="@drawable/right_arrow" android:paddingStart="?android:attr/listPreferredItemPaddingStart" android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" android:minHeight="?android:attr/listPreferredItemHeightSmall" /> app/src/main/res/layout/inspect_signal_head.xml
New file @@ -0,0 +1,12 @@ <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text_check_info" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceListItemSmall" android:gravity="center_vertical" android:text="车载信号" android:drawableRight="@drawable/right_arrow" android:paddingStart="?android:attr/listPreferredItemPaddingStart" android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" android:minHeight="?android:attr/listPreferredItemHeightSmall" /> app/src/main/res/layout/layout_base_datas.xml
@@ -1,12 +1,23 @@ <?xml version="1.0" encoding="utf-8"?> <ScrollView android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- <include layout="@layout/toolbar"/>--> <!-- <ScrollView--> <!-- android:layout_height="match_parent" android:layout_width="match_parent"--> <!-- >--> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="10dp" android:gravity="center_horizontal" android:background="@color/train_bg" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -122,12 +133,14 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:visibility="gone" android:text="电话:"/> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/et_phone" android:text="19234567894" android:visibility="gone" android:inputType="numberDecimal" android:background="@android:drawable/editbox_background_normal"/> </LinearLayout> @@ -146,7 +159,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@android:color/black" android:text="车载信号输入:"/> android:text="车载信号配置:"/> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -231,6 +244,7 @@ <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="查看信号" android:visibility="gone" android:id="@+id/btn_inpsect_signal" android:padding="5dp" android:background="@drawable/btn_bg_baseset"/> @@ -293,27 +307,7 @@ </TableRow> </TableLayout> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1px" android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:background="@color/colorAccent" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:textColor="@android:color/black" android:layout_width="0dp" android:layout_height="wrap_content" android:id="@+id/tv_mcu_info" android:text="@string/mcu_info" android:layout_weight="1"/> </LinearLayout> <View android:layout_width="match_parent" @@ -328,5 +322,6 @@ android:id="@+id/btn_save_platform" android:text="保存"/> </LinearLayout> <!-- </ScrollView>--> </LinearLayout> </ScrollView> app/src/main/res/layout/layout_basedata.xml
New file @@ -0,0 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/recyclerview"/> </LinearLayout> app/src/main/res/layout/layout_check_signal.xml
@@ -22,7 +22,7 @@ android:id="@+id/tv_dangwei" android:gravity="center" android:text="档位:"/> android:text="@string/chesu"/> <TextView android:layout_width="35dp" android:layout_height="25dp" @@ -35,18 +35,19 @@ android:layout_width="70dp" android:layout_height="25dp" android:textColor="@android:color/black" android:id="@+id/tv_roate_speed" android:gravity="center" android:layout_marginTop="15dp" android:layout_below="@+id/tv_dangwei" android:text="转速:"/> android:text="@string/engine"/> <TextView android:layout_width="70dp" android:layout_height="25dp" android:gravity="center" android:layout_marginTop="15dp" android:text="-1.32332" android:id="@+id/tv_roate_speed" android:layout_toRightOf="@id/tv_dangwei" android:layout_below="@+id/tv_dangwei_num" android:background="@drawable/dangwei_bg"/> app/src/main/res/values/strings.xml
@@ -32,4 +32,6 @@ <string name="sex">性别:</string> <string name="begin_time">开始时间:</string> <string name="mcu_info">协处理器信息:</string> <string name="chesu">车速:</string> <string name="engine">转速:</string> </resources>