package safeluck.drive.evaluation.fragment; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.appcompat.widget.Toolbar; import androidx.databinding.DataBindingUtil; import androidx.lifecycle.ViewModelProviders; import com.anyun.basecommonlib.MyLog; import com.anyun.im_lib.util.ByteUtil; import com.google.gson.Gson; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; 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.MainActivity; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.bean.CarSignal; import safeluck.drive.evaluation.bean.MCUInfo; import safeluck.drive.evaluation.cEventCenter.CEventCenter; import safeluck.drive.evaluation.cEventCenter.ICEventListener; import safeluck.drive.evaluation.databinding.LayoutCheckSignalBinding; import safeluck.drive.evaluation.databinding.LayoutSignalSliceBinding; /** * MyApplication2 * Created by lzw on 2019/3/22. 11:07:11 * 邮箱:632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class InspectSignalFragment extends SupportFragment { private static final String TAG = "InspectSignalFragment"; private static final int VALIAD_NUM = 1;//1高电平有效 private Gson gson= new Gson(); private Handler handler = new Handler(); private LayoutCheckSignalBinding bingding; private List gpios = new ArrayList<>(); Drawable leftGreen ; Drawable leftGray ; private int index =0 ; private Object object = new Object(); private int fun_id = 0; private ICEventListener icEventListener = new ICEventListener() { @Override public void onCEvent(String topic, int msgCode, int resultCode, Object obj) { synchronized (object){ if (msgCode==Constant.ID_SM_CARSENSOR){ final CarSignal mcuInfo = gson.fromJson((String)obj, CarSignal.class); Log.i(TAG,mcuInfo.toString()); if (mcuInfo != null){ handler.post(new Runnable() { @Override public void run() { bingding.roatespeed.updateStr(String.valueOf(mcuInfo.getEngine())); bingding.myspeed.updateStr(String.valueOf(mcuInfo.getSpeed())); bingding.dagnwei.updateStr(gearStr(mcuInfo.getGear())); bingding.odo.updateStr(String.valueOf(mcuInfo.getOdo())); bingding.trip.updateStr(String.valueOf(mcuInfo.getTrip())); bingding.tripTime.updateStr(String.valueOf(mcuInfo.getTrip_time())); bingding.cellVolt.updateStr(String.valueOf(mcuInfo.getCell_volt())); String keystr=""; switch (mcuInfo.getKey()){ case 0: keystr = "OFF"; break; case 1: keystr = "ACC"; break; case 2: keystr = "ON"; break; case 3: keystr = "START"; break; default: keystr = "不支持"; break; } bingding.keystatus.updateStr(keystr); bingding.accelerator.updateStr(String.valueOf(mcuInfo.getAps())+"%"); //安全带 bingding.inpsetSignalSlice.tvSeatBelt.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getSeat_belt()==VALIAD_NUM?leftGreen:leftGray,null,null,null); // Log.i(TAG,"安全带之后,Fun_ID="+fun_id); //左转 bingding.inpsetSignalSlice.tvTrunLeft.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getLeft_turn_lamp()==VALIAD_NUM?leftGreen:leftGray,null,null,null); //右转 bingding.inpsetSignalSlice.tvTurnRight.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getRight_turn_lamp()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvParkingBrake.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getHand_break()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvFootBrake.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getMain_break()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvLowLamp.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getDipped_beam_lamp()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvHighBeam.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getMain_beam_lamp()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvGateLock.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getLock()==VALIAD_NUM?leftGreen:leftGray,null,null,null); //副刹 bingding.inpsetSignalSlice.tvSecondaryBrake.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getAssist_break()==VALIAD_NUM?leftGreen:leftGray,null,null,null);//副刹 bingding.inpsetSignalSlice.tvWindingOne.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getSurround1()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvWindingTwo.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getSurround2()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvWindingThree.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getSurround3()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvWindingFour.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getSurround4()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvFoglight.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getFog_lamp()==VALIAD_NUM?leftGreen:leftGray,null,null,null); //示宽灯 bingding.inpsetSignalSlice.tvWidthLamp.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getClearance_lamp()==VALIAD_NUM?leftGreen:leftGray,null,null,null); } }); } } } } }; private String gearStr(int gear) { switch (gear){ case 0: return "空"; case 6: return "倒"; default: return String.valueOf(gear); } } public static SupportFragment newInstance(){ return new InspectSignalFragment(); } private List singalConfigList = new ArrayList<>(); @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { bingding = DataBindingUtil.inflate(inflater,R.layout.layout_check_signal,container,false); initView(); leftGreen = getResources().getDrawable(R.drawable.green_light,null); leftGray = getResources().getDrawable(R.drawable.gray_light,null); return bingding.getRoot(); } private void sortSigalConfigList() { Collections.sort(singalConfigList, new Comparator() { @Override public int compare(SingalConfig o1, SingalConfig o2) { return o1.getFunc_id()-o2.getFunc_id(); } }); Log.i(TAG,"根据fun_id 升序排列"); for (int j = 0; j < singalConfigList.size(); j++) { Log.i(TAG,singalConfigList.get(j).toString()); } } private void initView() { Log.i(TAG,"currTopFragment="+getTopFragment().getClass().getSimpleName()); if (HomeFragment.class.getSimpleName().equals(getTopFragment().getClass().getSimpleName())){ ((MainActivity)_mActivity).viewtitle.setVisibility(View.GONE); ((MainActivity)_mActivity).btn_return.setVisibility(View.GONE); }else{ ((MainActivity)_mActivity).viewtitle.setVisibility(View.VISIBLE); ((MainActivity)_mActivity).btn_return.setVisibility(View.VISIBLE); } } @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(false,icEventListener,Constant.BIND_MCUINFO_TOPIC); } }