| | |
| | | import android.os.Bundle; |
| | | import android.os.Handler; |
| | | import android.os.Message; |
| | | import android.text.SpannableString; |
| | | import android.text.Spanned; |
| | | import android.text.TextUtils; |
| | | import android.text.style.TextAppearanceSpan; |
| | | import android.util.DisplayMetrics; |
| | | import android.view.Gravity; |
| | | import android.view.LayoutInflater; |
| | |
| | | import android.view.ViewGroup; |
| | | import android.widget.PopupWindow; |
| | | import android.widget.RelativeLayout; |
| | | import android.widget.TextView; |
| | | import android.widget.Toast; |
| | | |
| | | import androidx.annotation.NonNull; |
| | |
| | | import com.doumee.keyCabinet.BuildConfig; |
| | | import com.doumee.keyCabinet.base.BannerPicResponsePara; |
| | | import com.doumee.keyCabinet.bean.FaceUserBean; |
| | | import com.doumee.keyCabinet.bean.LoginBean; |
| | | import com.doumee.keyCabinet.databinding.MainActivityBinding; |
| | | import com.doumee.keyCabinet.event.GetFacesEvent; |
| | | import com.doumee.keyCabinet.event.HeartEvent; |
| | | 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.event.ReLoginEvent; |
| | | import com.doumee.keyCabinet.event.TimeClockEvent; |
| | | import com.doumee.keyCabinet.ui.face.ActivationActivity; |
| | | import com.doumee.keyCabinet.ui.face.FaceActivity; |
| | | import com.doumee.keyCabinet.ui.guide.GuideActivity; |
| | | import com.doumee.keyCabinet.ui.keyCabinet.ChangeUrlActivity; |
| | | import com.doumee.keyCabinet.ui.keyCabinet.KeyCabinetActivity; |
| | | import com.doumee.keyCabinet.ui.keyCabinet.ManageLoginActivity; |
| | | import com.doumee.keyCabinet.ui.service.FaceUpdateService; |
| | | import com.doumee.keyCabinet.ui.service.HeartbeatService; |
| | |
| | | import com.example.datalibrary.view.PreviewTexture; |
| | | import com.yanzhenjie.permission.runtime.Permission; |
| | | import org.greenrobot.eventbus.EventBus; |
| | | import org.greenrobot.eventbus.Logger; |
| | | import org.greenrobot.eventbus.Subscribe; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Random; |
| | | import java.util.Timer; |
| | | import java.util.TimerTask; |
| | | import java.util.concurrent.Executors; |
| | |
| | | if(!isFinishing()){ |
| | | switch (msg.what) { |
| | | case 0: |
| | | initM(); |
| | | //initM(); |
| | | TimeUtils.updateTimeUi(getVM().dayObs, getVM().timeObs); |
| | | handler.sendEmptyMessageDelayed(0, 1000); |
| | | EventBus.getDefault().post(new TimeClockEvent()); |
| | | if (isDBLoad && isNeedUpdateFace && !isUpdatingFace) { |
| | | /*if (isDBLoad && isNeedUpdateFace && !isUpdatingFace) { |
| | | isNeedUpdateFace = false; |
| | | getVM().getFaceLD(); |
| | | } |
| | | getVM().upBraceletLog(); |
| | | getVM().upBraceletLog();*/ |
| | | case 2: |
| | | getVM().resetReq(); |
| | | break; |
| | |
| | | |
| | | @Override |
| | | public void initView(@Nullable Bundle savedInstanceState) { |
| | | //isToGuild = true; |
| | | isAddCountTimer = false; |
| | | SpUtil.initWH(this); |
| | | normalConfig(); |
| | | getDB().setModel(getVM()); |
| | | //initRGBCheck(); |
| | | handler.sendEmptyMessageDelayed(0, 1000); |
| | | //启动心跳 |
| | | Intent intent = new Intent(MainActivity.this, HeartbeatService.class); |
| | | startService(intent); |
| | | //启动更新人脸 |
| | | Intent intent2 = new Intent(MainActivity.this, FaceUpdateService.class); |
| | | startService(intent2); |
| | | //getPermission(); |
| | | //getDB().tvName.setText(String.format(getString(R.string.main_name),MApplication.getConfigBean().getName(), LMobileInfo.getDeviceUniqueId())); |
| | | getPermission(); |
| | | Timber.tag("====>").d(LMobileInfo.getDeviceUniqueId()); |
| | | } |
| | | |
| | | private void initM(){ |
| | |
| | | } |
| | | } |
| | | }); |
| | | getDB().tv1.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | //管理员登录 |
| | | if(lastDownTime1!=null){ |
| | | if(System.currentTimeMillis()-lastDownTime1>1000){ |
| | | downCount1=0; |
| | | } |
| | | } |
| | | lastDownTime1 = System.currentTimeMillis(); |
| | | downCount1++; |
| | | System.out.println(); |
| | | Timber.tag("==>").d(""+downCount1); |
| | | if(downCount1>4) { |
| | | downCount1=0; |
| | | lastDownTime1=null; |
| | | startActivity(ManageLoginActivity.class); |
| | | } |
| | | } |
| | | }); |
| | | getDB().tvId.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | //更改url |
| | | if(lastDownTime2!=null){ |
| | | if(System.currentTimeMillis()-lastDownTime2>1000){ |
| | | downCount2=0; |
| | | } |
| | | } |
| | | lastDownTime2 = System.currentTimeMillis(); |
| | | downCount2++; |
| | | if(downCount2>4) { |
| | | downCount2=0; |
| | | lastDownTime2=null; |
| | | startActivity(ChangeUrlActivity.class); |
| | | } |
| | | } |
| | | }); |
| | | upErrInfo(); |
| | | getVM().devHeart(); |
| | | BraceletLogUtils.saveLog("app打开"); |
| | |
| | | @Override |
| | | protected void doRegister(int type, ActionEventData data) { |
| | | switch (type){ |
| | | case 1: |
| | | { |
| | | //管理员登录 |
| | | if(lastDownTime1!=null){ |
| | | if(System.currentTimeMillis()-lastDownTime1>1000){ |
| | | downCount1=0; |
| | | } |
| | | } |
| | | lastDownTime1 = System.currentTimeMillis(); |
| | | downCount1++; |
| | | if(downCount1>4) { |
| | | downCount1=0; |
| | | lastDownTime1=null; |
| | | startActivity(ManageLoginActivity.class); |
| | | } |
| | | } |
| | | break; |
| | | case 2: |
| | | case 3: |
| | | Bundle b = new Bundle(); |
| | | b.putString("flag",type==2?"0":"1"); |
| | | startActivity(FaceActivity.class,b); |
| | | /*tipDownCount = 10; |
| | | isShowTip = true; |
| | | getDB().tvDjs.setText(tipDownCount+"s"); |
| | | getDB().tvTip21.setText(getTipText("AC101"), TextView.BufferType.SPANNABLE); |
| | | getDB().clTip.setVisibility(View.VISIBLE);*/ |
| | | //校验是否登录 |
| | | if(MApplication.getConfigBean().getId()==null){ |
| | | Toast.makeText(mContext, "设备未添加,无法操作", Toast.LENGTH_SHORT).show(); |
| | | getVM().devLogin(); |
| | | return; |
| | | } |
| | | MApplication.getLoginBean().setFlag(type==2?0:1); |
| | | startActivity(FaceActivity.class); |
| | | //startActivity(KeyCabinetActivity.class,b); |
| | | break; |
| | | case 4: |
| | | { |
| | | //更改url |
| | | if(lastDownTime2!=null){ |
| | | if(System.currentTimeMillis()-lastDownTime2>1000){ |
| | | downCount2=0; |
| | | } |
| | | } |
| | | lastDownTime2 = System.currentTimeMillis(); |
| | | downCount2++; |
| | | if(downCount2>4) { |
| | | downCount2=0; |
| | | lastDownTime2=null; |
| | | startActivity(ChangeUrlActivity.class); |
| | | } |
| | | } |
| | | isShowTip = false; |
| | | getDB().clTip.setVisibility(View.GONE); |
| | | break; |
| | | default: |
| | | break; |
| | |
| | | protected void onResume() { |
| | | super.onResume(); |
| | | showTime = System.currentTimeMillis(); |
| | | MApplication.saveMemberBean(new MemberBean()); |
| | | MApplication.setLoginBean(new LoginBean()); |
| | | if(!isFaceOk) { |
| | | //initLicense(); |
| | | } |
| | |
| | | //结束 |
| | | isUpdatingFace = false; |
| | | //System.out.println("==UpdatingFace==>更新结束:"); |
| | | FaceUserBean bean = selectBeans.get(selectBeans.size()-1); |
| | | if(!TextUtils.isEmpty(bean.getEditTime())){ |
| | | Date date = StringUtil.StrToDate(bean.getEditTime()); |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(date); |
| | | cal.add(Calendar.SECOND,1); |
| | | SpUtil.saveString("LastTime",StringUtil.DateToStr(cal.getTime())); |
| | | } |
| | | // 清除内存缓存 |
| | | Glide.get(MainActivity.this).clearMemory(); |
| | | } |
| | |
| | | private int repeatCount = 0; |
| | | private void updateFace(FaceUserBean bean){ |
| | | Timber.d("==UpdatingFace==>完成数量 "+finishCount); |
| | | if (TextUtils.isEmpty(bean.getFaceUrl())||bean.getFaceUrl().endsWith("null")) { |
| | | if (TextUtils.isEmpty(bean.getFaceImg())||bean.getFaceImg().endsWith("null")) { |
| | | finishCount++; |
| | | faceHandler.sendEmptyMessage(0); |
| | | return; |
| | |
| | | //System.out.println("==UpdatingFace==>开始:" + bean.getName()); |
| | | Glide.with(this) |
| | | .asBitmap() |
| | | .load(bean.getFaceUrl()) |
| | | .load(bean.getFaceImg()) |
| | | .addListener(new RequestListener<Bitmap>() { |
| | | @Override |
| | | public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) { |
| | |
| | | if (ret == 128) { |
| | | Timber.d("==UpdatingFace==>图片特征抽取成功: %s", JSON.toJSONString(bean)); |
| | | User user = new User(); |
| | | user.setUserId(bean.getId()); |
| | | user.setGroupId(bean.getType()); |
| | | user.setUserName(bean.getName()); |
| | | user.setImageName(bean.getFaceUrl()); |
| | | user.setUserId(bean.getMemberId()); |
| | | user.setGroupId(bean.getGroupId()); |
| | | user.setUserName(bean.getMemberName()); |
| | | user.setImageName(bean.getFaceImg()); |
| | | user.setUserInfo(GsonTools.changeGsonToJson(bean)); |
| | | user.setFeature(secondFeature); |
| | | insertOrUpdate(user); |
| | |
| | | } |
| | | } |
| | | |
| | | private int tipDownCount = 10; |
| | | private boolean isShowTip; |
| | | @Subscribe |
| | | public void TimeClockEvent(TimeClockEvent e){ |
| | | |
| | | if(isShowTip){ |
| | | if(tipDownCount==0){ |
| | | isShowTip = false; |
| | | getDB().clTip.setVisibility(View.GONE); |
| | | }else { |
| | | tipDownCount--; |
| | | getDB().tvDjs.setText(tipDownCount+"s"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 监听开门 |
| | | * @param e |
| | | */ |
| | | @Subscribe |
| | | public void OpenGridEvent(OpenGridEvent e){ |
| | | if(!isFinishing()){ |
| | | EventBus.getDefault().post(new KeyDoorEvent(MApplication.nextBoolean()?"0":"1")); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 监听钥匙 |
| | | * @param e |
| | | */ |
| | | @Subscribe |
| | | public void KeyStatusListener(KeyStatusListener e){ |
| | | if(!isFinishing()){ |
| | | if(e.getStatus()==0){ |
| | | //开始 |
| | | Random random = new Random(); |
| | | EventBus.getDefault().post(new KeyResultEvent(random.nextBoolean()?"0":"1")); |
| | | }else { |
| | | //结束 |
| | | } |
| | | } |
| | | } |
| | | |
| | | private SpannableString getTipText(String name){ |
| | | String text = name+"柜门未关闭"; |
| | | 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; |
| | | } |
| | | |
| | | @Override |
| | | protected void onRestart() { |
| | |
| | | getVM().devHeart(); |
| | | } |
| | | |
| | | |
| | | @Subscribe |
| | | public void HeartEvent(HeartEvent e){ |
| | | if(!isFinishing()){ |
| | | getVM().devHeart(); |
| | | } |
| | | } |
| | | |
| | | } |