weimingfei
2 天以前 fab8c02a0aa8f941a507bdcb3e4d72deb6eb2242
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java
@@ -9,14 +9,20 @@
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.view.View;
import android.widget.TextView;
import com.baidu.idl.main.facesdk.model.BDFaceSDKCommon;
import com.doumee.keyCabinet.MApplication;
import com.doumee.keyCabinet.R;
import com.doumee.keyCabinet.base.MyBaseActivity;
import com.doumee.keyCabinet.databinding.FaceActivityBinding;
import com.doumee.keyCabinet.event.TimeClockEvent;
import com.doumee.keyCabinet.ui.keyCabinet.KeyCabinetActivity;
import com.doumee.keyCabinet.utils.BraceletLogUtils;
import com.doumee.keyCabinet.utils.face.FaceUtils;
import com.doumee.keyCabinet.utils.face.model.SingleBaseConfig;
@@ -51,6 +57,9 @@
    private GlMantleSurfacView glMantleSurfacView;
    private BDFaceImageConfig bdFaceImageConfig;
    private BDFaceCheckConfig bdFaceCheckConfig;
    //0:取,1:还
    private int flag ;
    private int status;
    @Override
    public int getLayoutId() {
@@ -63,8 +72,11 @@
        normalConfig();
        getDB().setModel(getVM());
        mContext = this;
        FaceSDKManager.getInstance().initDataBases(this);
        initFaceCheck();
        flag = MApplication.getLoginBean().getFlag();
        statusFsm(flag==0?0:2);
        //todo wmf 解开
        /*FaceSDKManager.getInstance().initDataBases(this);
        initFaceCheck();*/
        initView();
    }
@@ -73,12 +85,179 @@
        //getPermission();
    }
    @Override
    protected void timeChange(String djs) {
        getDB().tvDjs.setText(djs);
    }
    private SpannableString getErrPhoneText(){
        String phone = MApplication.getConfigBean().getLinkPhone();
        String text = "如有问题请联系管理员"+phone;
        SpannableString styledText = new SpannableString(text);
        styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip3), 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 statusFsm(int toStatus){
        status = toStatus;
        switch (status){
            case 0:
                //取-管理员人脸验证
                getDB().clLogin.setVisibility(View.VISIBLE);
                getDB().tvTitle.setText("管理员身份验证");
                getDB().vSl.setBackgroundResource(R.mipmap.ic_viewfinder);
                getDB().tvTip.setText("请保持正脸在取景框中,并根据指示完成识别");
                getDB().clRemind.setVisibility(View.VISIBLE);
                getDB().btSk.setVisibility(View.VISIBLE);
                getDB().clSjRl.setVisibility(View.GONE);
                getDB().clSjSk.setVisibility(View.GONE);
                getDB().clTip1.setVisibility(View.GONE);
                break;
            case 1:
                //取-管理员刷卡验证
                getDB().clLogin.setVisibility(View.VISIBLE);
                getDB().tvTitle.setText("管理员身份验证");
                getDB().vSl.setBackgroundResource(R.mipmap.ic_shuaka2);
                getDB().tvTip.setText("请将IC卡贴近刷卡区,停留1-2秒");
                getDB().clRemind.setVisibility(View.GONE);
                getDB().btSk.setVisibility(View.GONE);
                getDB().clSjRl.setVisibility(View.GONE);
                getDB().clSjSk.setVisibility(View.VISIBLE);
                getDB().clTip1.setVisibility(View.GONE);
                break;
            case 5:
                //取-司机验证方式选择页
                getDB().clLogin.setVisibility(View.VISIBLE);
                getDB().tvTitle.setText("司机身份验证");
                getDB().vSl.setBackgroundResource(R.mipmap.ic_face);
                getDB().tvTip.setText("请保持正脸在取景框中,并根据指示完成识别");
                getDB().clRemind.setVisibility(View.VISIBLE);
                getDB().btSk.setVisibility(View.GONE);
                getDB().clSjRl.setVisibility(View.VISIBLE);
                getDB().clSjSk.setVisibility(View.GONE);
                getDB().clTip1.setVisibility(View.GONE);
                break;
            case 2:
                //取-司机人脸验证
                getDB().clLogin.setVisibility(View.VISIBLE);
                getDB().tvTitle.setText("司机身份验证");
                getDB().vSl.setBackgroundResource(R.mipmap.ic_viewfinder);
                getDB().tvTip.setText("请保持正脸在取景框中,并根据指示完成识别");
                getDB().clRemind.setVisibility(View.VISIBLE);
                getDB().btSk.setVisibility(View.VISIBLE);
                getDB().clSjRl.setVisibility(View.GONE);
                getDB().clSjSk.setVisibility(View.GONE);
                getDB().clTip1.setVisibility(View.GONE);
                break;
            case 3:
                //取-司机刷卡验证
                getDB().clLogin.setVisibility(View.VISIBLE);
                getDB().tvTitle.setText("司机身份验证");
                getDB().vSl.setBackgroundResource(R.mipmap.ic_shuaka2);
                getDB().tvTip.setText("请将IC卡贴近刷卡区,停留1-2秒");
                getDB().clRemind.setVisibility(View.GONE);
                getDB().btSk.setVisibility(View.GONE);
                getDB().clSjRl.setVisibility(View.GONE);
                getDB().clSjSk.setVisibility(View.VISIBLE);
                getDB().clTip1.setVisibility(View.GONE);
                break;
            case 4:
                //取-司机酒精检测
                getDB().clLogin.setVisibility(View.VISIBLE);
                getDB().tvTitle.setText("酒精检测");
                getDB().vSl.setBackgroundResource(R.mipmap.ic_jiujingjiance);
                getDB().tvTip.setText("请拿起酒精检测仪吹气");
                getDB().clRemind.setVisibility(View.GONE);
                getDB().btSk.setVisibility(View.GONE);
                getDB().clSjRl.setVisibility(View.GONE);
                getDB().clSjSk.setVisibility(View.GONE);
                getDB().clTip1.setVisibility(View.GONE);
                break;
            case 6:
                //取-司机酒精检测失败
                getDB().clTip1.setVisibility(View.VISIBLE);
                break;
            case 7:
                //还-司机人脸验证
                getDB().clLogin.setVisibility(View.VISIBLE);
                getDB().tvTitle.setText("司机身份验证");
                getDB().vSl.setBackgroundResource(R.mipmap.ic_viewfinder);
                getDB().tvTip.setText("请保持正脸在取景框中,并根据指示完成识别");
                getDB().clRemind.setVisibility(View.VISIBLE);
                getDB().btSk.setVisibility(View.VISIBLE);
                getDB().clSjSk.setVisibility(View.GONE);
                getDB().clSjRl.setVisibility(View.GONE);
                getDB().clTip1.setVisibility(View.GONE);
                break;
            case 8:
                //还-司机刷卡验证
                getDB().clLogin.setVisibility(View.VISIBLE);
                getDB().tvTitle.setText("司机身份验证");
                getDB().vSl.setBackgroundResource(R.mipmap.ic_shuaka2);
                getDB().tvTip.setText("请将IC卡贴近刷卡区,停留1-2秒");
                getDB().clRemind.setVisibility(View.GONE);
                getDB().btSk.setVisibility(View.GONE);
                getDB().clSjSk.setVisibility(View.VISIBLE);
                getDB().clSjRl.setVisibility(View.GONE);
                getDB().clTip1.setVisibility(View.GONE);
                break;
            default:
                break;
        }
    }
    private Bitmap bitmap;
    private byte[] secondFeature = new byte[512];
    @Override
    protected void doRegister(int type, ActionEventData data) {
        switch (type){
            case 1:
                //切换到刷卡
                if("0".equals(flag)){
                    if(status==0){
                        statusFsm(1);
                    }else if(status==2){
                        statusFsm(3);
                    }
                }else {
                    statusFsm(8);
                }
                break;
            case 2:
                //切换司机刷卡
                statusFsm(3);
                break;
            case 3:
                //切换司机人脸
                statusFsm(2);
                break;
            case 4:
                //切换到人脸
                if("0".equals(flag)){
                    if(status==1){
                        statusFsm(5);
                    }else if(status==3){
                        statusFsm(6);
                    }
                }else {
                    startActivity(KeyCabinetActivity.class);
                    finish();
                }
                //todo wmf
                //statusFsm("0".equals(flag)?);
                break;
            case 5:
                startActivity(KeyCabinetActivity.class);
                finish();
                break;
            default:
@@ -107,13 +286,14 @@
                SingleBaseConfig.getBaseConfig().getMirrorVideoRGB() , SingleBaseConfig.getBaseConfig().isOpenGl());
        CameraPreviewManager.getInstance().startPreview(glMantleSurfacView,
                SingleBaseConfig.getBaseConfig().getRgbVideoDirection() , PREFER_WIDTH, PERFER_HEIGH);
        getDB().tvJg2.setText(getErrPhoneText(), TextView.BufferType.SPANNABLE);
    }
    @Override
    protected void onResume() {
        super.onResume();
        startTestOpenDebugRegisterFunction();
        //todo wmf 解开
        //startTestOpenDebugRegisterFunction();
    }
    private void startTestOpenDebugRegisterFunction() {
@@ -254,7 +434,8 @@
        //CameraPreviewManager.getInstance().destroy();
        faceDetectCallBack = null;
        glMantleSurfacView = null;
        FaceSDKManager.getInstance().destroy();
        //todo wmf 解开
        //FaceSDKManager.getInstance().destroy();
    }
    private int resultCount = 0;
@@ -352,6 +533,7 @@
        super.onPause();
        isPause = false;
        isTimePause = true;
        CameraPreviewManager.getInstance().stopPreview();
        //todo wmf 解开
        //CameraPreviewManager.getInstance().stopPreview();
    }
}