doum
5 天以前 cb6aca0642ac8dd5de877ade168066d85acb589c
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
@@ -11,7 +11,10 @@
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 +22,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 +42,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;
@@ -84,12 +95,14 @@
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;
@@ -130,15 +143,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 +168,20 @@
    @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(){
@@ -225,6 +239,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 +325,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 +355,7 @@
    protected void onResume() {
        super.onResume();
        showTime = System.currentTimeMillis();
        MApplication.saveMemberBean(new MemberBean());
        MApplication.setLoginBean(new LoginBean());
        if(!isFaceOk) {
            //initLicense();
        }
@@ -606,14 +639,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 +667,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 +676,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 +720,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 +977,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 +1035,11 @@
        getVM().devHeart();
    }
    @Subscribe
    public void HeartEvent(HeartEvent e){
        if(!isFinishing()){
            getVM().devHeart();
        }
    }
}