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.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.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.MCU_SN){ final MCUInfo mcuInfo = gson.fromJson((String)obj, MCUInfo.class); if (mcuInfo != null){ gpios.clear(); for (int i = 0; i < 16; i++) { gpios.add( ByteUtil.getBitStatus(mcuInfo.getGpio(),i)); } MyLog.i("mcu info gpio"+mcuInfo.getGpio()); handler.post(new Runnable() { @Override public void run() { bingding.roatespeed.updateStr(String.valueOf(mcuInfo.getEngine())); bingding.myspeed.updateStr(String.valueOf(mcuInfo.getSpeed()/10.0)); for (int i = 0; i < gpios.size(); i++) { MyLog.i(TAG, "run: gpio["+i+"]="+gpios.get(i)); } MyLog.i("gpios.size="+gpios.size()); fun_id = 0; //安全带 bingding.inpsetSignalSlice.tvSeatBelt.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); Log.i(TAG,"安全带之后,Fun_ID="+fun_id); //左转 bingding.inpsetSignalSlice.tvTrunLeft.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); //右转 bingding.inpsetSignalSlice.tvTurnRight.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvParkingBrake.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvFootBrake.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvLowLamp.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvHighBeam.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvGateLock.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvNullEngine.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvGearOne.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvGearTwo.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvGearThree.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvGearFour.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvGearFive.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvReverseGear.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); Log.i(TAG,"三挡之后,Fun_ID="+fun_id); //副刹 bingding.inpsetSignalSlice.tvSecondaryBrake.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);//副刹 bingding.inpsetSignalSlice.tvWindingOne.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvWindingTwo.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvWindingThree.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvWindingFour.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); bingding.inpsetSignalSlice.tvFoglight.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); //示宽灯 bingding.inpsetSignalSlice.tvWidthLamp.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null); } }); } } } } }; private int getGpioBitValue(){ int index = singalConfigList.get(fun_id++).getIndex(); Log.i(TAG,"fun_id"+(fun_id-1)+"对应index="+index); if (index 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(); SignalConfigViewModel signalConfigViewModel = ViewModelProviders.of(this).get(SignalConfigViewModel.class); signalConfigViewModel.getSignalConfigs().observe(this, singalConfigs -> { if (singalConfigs != null && singalConfigs.size()>0){ singalConfigList.clear(); singalConfigList = singalConfigs; sortSigalConfigList(); } }); 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); } }