From 4a8ff39b0fab0627ef8f7459587d514cc01c3676 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 20 十月 2025 10:52:02 +0800
Subject: [PATCH] Merge branch 'wuhuyancao' of http://139.186.142.91:10010/r/productDev/dmvisit into wuhuyancao
---
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java | 330 +++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 273 insertions(+), 57 deletions(-)
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
index e1e7a17..fcac3d4 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
@@ -8,10 +8,15 @@
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.hardware.Camera;
+import android.hardware.usb.UsbDevice;
+import android.hardware.usb.UsbManager;
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;
@@ -19,6 +24,7 @@
import android.view.ViewGroup;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
+import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
@@ -38,14 +44,21 @@
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;
@@ -64,6 +77,9 @@
import com.doumee.keyCabinet.utils.face.ImportFileManager;
import com.doumee.keyCabinet.utils.face.RegisterConfigUtils;
import com.doumee.keyCabinet.utils.face.model.SingleBaseConfig;
+import com.doumee.keyCabinet.utils.i485.SerialPortModel;
+import com.doumee.keyCabinet.utils.i485.SerialPortReadObserver;
+import com.doumee.keyCabinet.utils.i485.SportUtils;
import com.doumee.keyCabinet.utils.update.PermissionUtils;
import com.doumee.keyCabinet.utils.update.PermissiondDialog;
import com.doumee.keyCabinet.utils.update.UpdateUtil;
@@ -84,12 +100,15 @@
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.HashMap;
import java.util.List;
+import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
@@ -130,15 +149,15 @@
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;
@@ -155,19 +174,21 @@
@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());
+ initPort();
}
private void initM(){
@@ -225,6 +246,44 @@
}
}
});
+ 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鎵撳紑");
@@ -273,45 +332,26 @@
@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;
@@ -322,7 +362,7 @@
protected void onResume() {
super.onResume();
showTime = System.currentTimeMillis();
- MApplication.saveMemberBean(new MemberBean());
+ MApplication.setLoginBean(new LoginBean());
if(!isFaceOk) {
//initLicense();
}
@@ -355,6 +395,8 @@
handler = null;
faceHandler.removeCallbacksAndMessages(null);
faceHandler = null;
+ portHandler.removeCallbacksAndMessages(null);
+ portHandler = null;
}
private void restartApp(){
@@ -606,14 +648,6 @@
//缁撴潫
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();
}
@@ -642,7 +676,7 @@
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;
@@ -651,7 +685,7 @@
//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) {
@@ -695,10 +729,10 @@
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);
@@ -952,12 +986,57 @@
}
}
+ 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() {
@@ -965,6 +1044,143 @@
getVM().devHeart();
}
+ @Subscribe
+ public void HeartEvent(HeartEvent e){
+ if(!isFinishing()){
+ getVM().devHeart();
+ }
+ }
+ private SerialPortModel gridPort;
+ private SerialPortReadObserver gridReadObserver = new SerialPortReadObserver() {
+ @Override
+ public void onResult(String result) {
+ }
+
+ @Override
+ public void onResultBytes(byte[] bytes) {
+ if(gridPort!=null && !gridPort.isOk()){
+ gridPort.setOk(true);
+ }
+ }
+ };
+ private SerialPortModel keyPort;
+ private SerialPortReadObserver keyReadObserver = new SerialPortReadObserver() {
+ @Override
+ public void onResult(String result) {
+
+ }
+
+ @Override
+ public void onResultBytes(byte[] bytes) {
+ if(keyPort!=null && !keyPort.isOk()){
+ keyPort.setOk(true);
+ }
+ }
+ };
+ private SerialPortModel jiuPort;
+ private SerialPortReadObserver jiuReadObserver = new SerialPortReadObserver() {
+ @Override
+ public void onResult(String result) {
+
+ }
+
+ @Override
+ public void onResultBytes(byte[] bytes) {
+ if(jiuPort!=null && !jiuPort.isOk()){
+ jiuPort.setOk(true);
+ }
+ }
+ };
+
+ List<String> ports;
+ private int index = 0;
+ private Handler portHandler = new Handler(){
+ @Override
+ public void handleMessage(@NonNull Message msg) {
+ switch (msg.what){
+ case 0:
+ if(index>=1&&!checkEnd()){
+ index--;
+ chosePort(ports.get(index));
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ };
+ //鍒濆鍖栦覆鍙�
+ private void initPort(){
+ ports = SportUtils.getSerialPortPaths(this);
+ if(ports.size()>0){
+ index = ports.size()-1;
+ chosePort(ports.get(ports.size()-1));
+ }
+ }
+
+ private void chosePort(String path){
+ if(gridPort==null||!gridPort.isOk()){
+ closePort(gridPort);
+ gridPort = new SerialPortModel(path,9600 ,8
+ ,1 , 0);
+ boolean isSucc = gridPort.open();
+ if(isSucc) {
+ String msg = isSucc ? "鎴愬姛" : "澶辫触";
+ //getVM().append("涓插彛 "+ settingBean.getDevicePath() + " -杩炴帴"+msg);
+ gridPort.startRead(gridReadObserver);
+ //todo 鍙戦�佹煖鏍兼牎楠屼俊鎭�
+ }
+ }
+ if(keyPort==null||!keyPort.isOk()){
+ closePort(keyPort);
+ keyPort = new SerialPortModel(path,115200 ,8
+ ,1 , 0);
+ boolean isSucc = keyPort.open();
+ if(isSucc) {
+ String msg = isSucc ? "鎴愬姛" : "澶辫触";
+ //getVM().append("涓插彛 "+ settingBean.getDevicePath() + " -杩炴帴"+msg);
+ keyPort.startRead(keyReadObserver);
+ //todo 鍙戦�侀挜鍖欐牎楠屼俊鎭�
+ }
+ }
+ if(jiuPort==null||!jiuPort.isOk()){
+ closePort(jiuPort);
+ jiuPort = new SerialPortModel(path,9600 ,8
+ ,1 , 0);
+ boolean isSucc = jiuPort.open();
+ if(isSucc) {
+ String msg = isSucc ? "鎴愬姛" : "澶辫触";
+ //getVM().append("涓插彛 "+ settingBean.getDevicePath() + " -杩炴帴"+msg);
+ jiuPort.startRead(jiuReadObserver);
+ //todo 鍙戦�侀厭绮炬牎楠屼俊鎭�
+ }
+ }
+
+ portHandler.sendEmptyMessageDelayed(0,2000);
+ }
+
+ private void closePort(SerialPortModel port){
+ if(port==null){
+ return;
+ }
+ port.startRead(null);
+ port.stopRead();
+ port.close();
+ port = null;
+ }
+
+ private boolean checkEnd(){
+ if(gridPort==null||!gridPort.isOk()){
+ return false;
+ }
+ if(keyPort==null||!keyPort.isOk()){
+ return false;
+ }
+ if(jiuPort==null||!jiuPort.isOk()){
+ return false;
+ }
+ return true;
+ }
}
--
Gitblit v1.9.3