package com.doumee.keyCabinet.ui.keyCabinet; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.Observer; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.SpannableString; import android.text.Spanned; import android.text.style.TextAppearanceSpan; import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.doumee.keyCabinet.MApplication; import com.doumee.keyCabinet.R; import com.doumee.keyCabinet.base.MyBaseActivity; import com.doumee.keyCabinet.bean.KeyCabinetBean; import com.doumee.keyCabinet.databinding.KeyCabinetActivityBinding; import com.doumee.keyCabinet.event.KeyDoorEvent; import com.doumee.keyCabinet.event.KeyResultEvent; import com.doumee.keyCabinet.event.KeyStatusListener; import com.doumee.keyCabinet.event.OpenGridEvent; import com.doumee.keyCabinet.ui.face.adapter.ErrRcvAdapter; import com.doumee.keyCabinet.ui.keyCabinet.adapter.CabinetRcvAdapter; import com.doumee.lib_coremodel.base.BaseActivity; import com.doumee.lib_coremodel.bean.event.ActionEventData; import com.doumee.lib_coremodel.util.RecyclerHelp; import com.doumee.lib_coremodel.util.SpUtil; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import java.util.List; import java.util.Random; import dagger.hilt.android.AndroidEntryPoint; @AndroidEntryPoint public class KeyCabinetActivity extends MyBaseActivity { private CabinetRcvAdapter adapter; private KeyCabinetBean selectBean; //0=取 1=还 private int flag; //状态,0:待开门,1:待关门 private int status; private int ysDownCount = 10; private Handler handler = new Handler(){ @Override public void handleMessage(@NonNull Message msg) { switch (msg.what){ case 0: if (ysDownCount==4) { //领取钥匙倒计时 doRegister(7,null); ysDownCount--; handler.sendEmptyMessageDelayed(0,1000); }else if (ysDownCount==0) { //领取钥匙倒计时 doRegister(MApplication.nextBoolean()?5:6,null); }else { ysDownCount--; handler.sendEmptyMessageDelayed(0,1000); } break; case 1: break; default: break; } } }; @Override public int getLayoutId() { return R.layout.key_cabinet_activity; } @Override public void initView(@Nullable Bundle savedInstanceState) { normalConfig(); getDB().setModel(getVM()); flag = MApplication.getLoginBean().getFlag(); adapter = new CabinetRcvAdapter(this, R.layout.cabinet_rcv_item, new CabinetRcvAdapter.OnItemClick() { @Override public void onItemClick(KeyCabinetBean item) { selectBean = item; } }); RecyclerHelp.bindVG(this,getDB().rcvKm,3,30); getDB().rcvKm.setAdapter(adapter); } @Override public void initData(@Nullable Bundle savedInstanceState) { getVM().getDatasLD().observe(this, new Observer>() { @Override public void onChanged(List beans) { if(beans.size()>0){ beans.get(0).getIsSelected().set(true); beans.get(0).getText1Color().set(0xffffffff); beans.get(0).getText2Color().set(0xffffffff); selectBean = beans.get(0); changeBtBg(); adapter.refreshData(beans); getVM().emptyVisibility.set(View.GONE); }else { getVM().emptyVisibility.set(View.VISIBLE); } } }); getVM().getDatas(); } @Override protected void timeChange(String djs) { getDB().tvDjs.setText(djs); } @Override protected void doRegister(int type, ActionEventData data) { switch (type){ case 1: if(selectBean==null){ Toast.makeText(mContext, "请选择柜门", Toast.LENGTH_SHORT).show(); return; } //开启柜门 getVM().openGridDriver(selectBean); EventBus.getDefault().post(new OpenGridEvent(selectBean.getChannelCode(),selectBean.getBoardCode())); break; case 2: getDB().clTip1.setVisibility(View.GONE); if(status==0) { //重新开门 EventBus.getDefault().post(new OpenGridEvent(selectBean.getChannelCode(), selectBean.getBoardCode())); } break; case 3: //开启失败 getDB().btTip.setText("重新开门"); getDB().imgJg1.setImageResource(R.mipmap.ic_jjfail); getDB().tvJg1.setText("开门失败,请联系管理员"); getDB().tvJg2.setText(getErrPhoneText(),TextView.BufferType.SPANNABLE); getDB().btTip.setVisibility(View.VISIBLE); getDB().clTip1.setVisibility(View.VISIBLE); break; case 4: //开启成功 status=1; if("0".equals(flag)) { getDB().imgTip2.setImageResource(R.mipmap.ic_notclose_key); getDB().tvTip22.setText("请领取钥匙后关闭柜门"); }else { getDB().imgTip2.setImageResource(R.mipmap.ic_notclose); getDB().tvTip22.setText("请归还钥匙后关闭柜门"); } getDB().tvTip21.setText(getTipText(selectBean.getCabinetName(),"柜门打开成功"), TextView.BufferType.SPANNABLE); getDB().clTip2.setVisibility(View.VISIBLE); EventBus.getDefault().post(new KeyStatusListener(0)); ysDownCount = 8; handler.sendEmptyMessageDelayed(0,1000); break; case 7: //提醒关柜门 getDB().imgTip2.setImageResource(R.mipmap.ic_notclose); getDB().tvTip22.setText("请关闭柜门"); getDB().tvTip21.setText(getTipText(selectBean.getCabinetName(),"柜门未关闭"), TextView.BufferType.SPANNABLE); getDB().clTip2.setVisibility(View.VISIBLE); break; case 5: //关门-钥匙领取成功 status = 0; getDB().clTip2.setVisibility(View.GONE); getDB().imgJg1.setImageResource(R.mipmap.ic_success); getDB().tvJg1.setText(getTipText(selectBean.getCarCode(),"钥匙领取成功"), TextView.BufferType.SPANNABLE); getDB().tvJg2.setText("柜门已关闭"); getDB().btTip.setVisibility(View.GONE); getDB().clTip1.setVisibility(View.VISIBLE); break; case 6: //关门-钥匙领取失败 status = 0; getDB().btTip.setText("重新开门"); getDB().imgJg1.setImageResource(R.mipmap.ic_jjfail); getDB().tvJg1.setText(getTipText(selectBean.getCarCode(),"钥匙未领取"), TextView.BufferType.SPANNABLE); getDB().tvJg2.setText("柜门已关闭"); getDB().btTip.setVisibility(View.VISIBLE); getDB().clTip1.setVisibility(View.VISIBLE); break; case 8: //关门-钥匙归还成功 status = 0; getDB().clTip2.setVisibility(View.GONE); getDB().imgJg1.setImageResource(R.mipmap.ic_success); getDB().tvJg1.setText(getTipText(selectBean.getCarCode(),"钥匙归还成功"), TextView.BufferType.SPANNABLE); getDB().tvJg2.setText("柜门已关闭"); getDB().btTip.setVisibility(View.GONE); getDB().clTip1.setVisibility(View.VISIBLE); break; case 9: //关门-钥匙归还失败 status = 0; getDB().btTip.setText("重新归还"); getDB().imgJg1.setImageResource(R.mipmap.ic_jjfail); getDB().tvJg1.setText("未识别到钥匙"); getDB().tvJg2.setText(getErrPhoneText(), TextView.BufferType.SPANNABLE); getDB().btTip.setVisibility(View.VISIBLE); getDB().clTip1.setVisibility(View.VISIBLE); break; default: break; } } private SpannableString getTipText(String name,String msg){ String text = name+msg; SpannableString styledText = new SpannableString(text); styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip1), 0, name.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); styledText.setSpan(new TextAppearanceSpan(this,R.style.style_tip2), name.length()+1, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); return styledText; } private SpannableString getErrPhoneText(){ String phone = "15899098765"; String text = "如有问题请联系管理员"+phone; SpannableString styledText = new SpannableString(text); styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip2), 0, text.length()-phone.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); styledText.setSpan(new TextAppearanceSpan(this,R.style.style_tip1), text.length()-phone.length()+1, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); return styledText; } private void changeBtBg(){ if(selectBean!=null){ getDB().tvKm.setBackgroundResource(R.drawable.shape_r25_blue_bg); }else { getDB().tvKm.setBackgroundResource(R.drawable.shape_mb_bt_faile); } } @Subscribe public void KeyDoorEvent(KeyDoorEvent e){ if(!isFinishing()){ if("0".equals(e.getResult())){ //开门成功 doRegister(4,null); }else { //失败 doRegister(3,null); } } } @Subscribe public void KeyResultEvent(KeyResultEvent e){ if(!isFinishing()){ if("0".equals(e.getResult())){ //成功 if("0".equals(flag)){ //钥匙拿走了 //doRegister(5,null); }else { //钥匙放入了 } }else { //失败 } } } @Override protected void onDestroy() { super.onDestroy(); handler.removeCallbacksAndMessages(null); handler = null; } }