package com.basic.security.widget; import android.content.Context; import android.graphics.Color; import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.basic.security.activity.MainActivity; import com.basic.security.base.BaseApplication; import com.basic.security.manager.FaceTitleAndTipsManager; import com.basic.security.manager.HintDoorAccessManager; import com.basic.security.manager.HintSignUpManager; import com.basic.security.manager.helper.rm.base.CurrentBase; import com.basic.security.model.ModelAdapter; import com.basic.security.model.Person; import com.basic.security.utils.Constants; import com.basic.security.utils.FacePosition; import com.basic.security.utils.FaceTitleAndTips; public class RecognizeFaceInfoView extends FrameLayout { LinearLayout recognized_face_info_view_layout; MyTextView face_title, tipsTxt, face_title_top; FaceOuterBorderView face_border; BaseShapeView scanner_view; TextView face_background; public RecognizeFaceInfoView(Context context) { super(context); initView(); } public RecognizeFaceInfoView(Context context, AttributeSet attrs) { super(context, attrs); initView(); } public RecognizeFaceInfoView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(); } private void initView() { View view = inflate(getContext(), com.basic.security.utils.ResolutionAdaptation.recognized_face_info_view(), null); recognized_face_info_view_layout = view.findViewById(com.basic.security.utils.RUtils.R_id_recognized_face_info_view_layout); face_title_top = view.findViewById(com.basic.security.utils.RUtils.R_id_face_title_top); face_title = view.findViewById(com.basic.security.utils.RUtils.R_id_face_title); tipsTxt = view.findViewById(com.basic.security.utils.RUtils.R_id_tipsTxt); scanner_view = view.findViewById(com.basic.security.utils.RUtils.R_id_scanner_view); face_border = view.findViewById(com.basic.security.utils.RUtils.R_id_face_border); face_background = view.findViewById(com.basic.security.utils.RUtils.R_id_face_background); addView(view); } public void showAtPosition(FacePosition facePosition, float cameraViewHeight, float cameraViewWidth, float pictureWidth, float pictureHeight) { MainActivity mainActivity = (MainActivity) BaseApplication.getApplication().activity; FaceTitleAndTips faceTitleAndTips = FaceTitleAndTipsManager.getFaceTitleMap(facePosition, true); String faceTitle = faceTitleAndTips.getFaceTitle(); face_title.setText(faceTitle); tipsTxt.setText(faceTitleAndTips.getTipsTxt()); tipsTxt.setTextColor1(Color.GREEN); tipsTxt.setTextColor(Color.GREEN); face_title.setTextColor(Color.GREEN); face_border.setBorderColor(Color.GREEN); if (CurrentBase.activity.currentFragment == CurrentBase.activity.fragment_door_access_result) { if ("开门成功".equals((CurrentBase.activity.fragment_door_access_result).openDoorTitle())) { face_title.setTextColor1(Color.parseColor("#00FF00")); face_border.setBorderColor1(Color.parseColor("#00FF00")); } else { face_title.setTextColor1(Color.parseColor("#FF0000")); face_border.setBorderColor1(Color.parseColor("#FF0000")); } } else { face_title.setTextColor1(Color.parseColor(faceTitleAndTips.getFaceTitleColor())); face_border.setBorderColor1(Color.parseColor(faceTitleAndTips.getFaceBorderColor())); } if (mainActivity.currentFragment == mainActivity.fragment_su_auto_wait_face || mainActivity.currentFragment == mainActivity.fragment_door_access_result ) { if (face_title.getCurrentTextColor1() == Color.RED) { if (!faceTitle.equals(HintSignUpManager.getAdminLogoutHint()) && !faceTitle.contains(HintDoorAccessManager.getSignUpRuleDoorAccessTimeDeniedMessage(null)) && !faceTitle.equals("访客") ) { face_title.setText(""); } } if (TextUtils.isEmpty(face_title.getText())) { face_title.setTextColor1(Color.RED); face_border.setBorderColor1(Color.RED); } if (face_title.getCurrentTextColor1() == Color.GREEN) { tipsTxt.setText(""); } } else { if (TextUtils.isEmpty(face_title.getText()) || "未注册".equals(face_title.getText()) || HintDoorAccessManager.getNoRegisterHint().equals(face_title.getText()) || faceTitle.endsWith(HintDoorAccessManager.getSignUpRuleDoorAccessTimeDeniedMessage(null)) || faceTitle.endsWith(HintDoorAccessManager.getSignUpRuleDoorAccessTimeNotReachMessage(null, null)) ) { face_title.setTextColor1(Color.RED); face_border.setBorderColor1(Color.RED); } else { face_title.setTextColor1(Color.GREEN); face_border.setBorderColor1(Color.GREEN); if (face_title.getCurrentTextColor1() == Color.GREEN) { tipsTxt.setText(""); } } } ModelAdapter selectedPerson = mainActivity.fragment_face_detail.person; ModelAdapter currentPositionPerson = faceTitleAndTips.person; if (selectedPerson != null && currentPositionPerson != null) { String selectedPersonId = selectedPerson.getString(Person.id); String currentPositionPersonId = currentPositionPerson.getString(Person.id); if (!TextUtils.isEmpty(selectedPersonId) && !TextUtils.isEmpty(currentPositionPersonId) && currentPositionPersonId.equals(selectedPersonId)) { if (mainActivity.currentFragment == mainActivity.fragment_su_logged_ic_wait_idcard) { face_title.setText(HintSignUpManager.getNoVerificationIDCardHint()); face_title.setTextColor1(Color.GREEN); face_border.setBorderColor1(Color.GREEN); } if (mainActivity.currentFragment == mainActivity.fragment_su_logged_ic_compare_success) { face_title.setText(HintSignUpManager.getImperfectHint()); face_title.setTextColor1(Color.GREEN); face_border.setBorderColor1(Color.GREEN); } } } if (mainActivity.currentFragment == mainActivity.fragment_guest_mode) { if (currentPositionPerson == null || "未注册".equals(currentPositionPerson.getString(Person.sign_up_status))) { face_title.setTextColor1(Color.RED); face_border.setBorderColor1(Color.RED); face_title.setText(HintDoorAccessManager.getNoRegisterHint()); } } if (faceTitle.equals(HintSignUpManager.getAdminLogoutHint())) { face_title.setTextColor1(Color.RED); face_border.setBorderColor1(Color.RED); } if (faceTitleAndTips.facePosition != null && Constants.USE_GRAY_CAMERA && !facePosition.liveness) { face_title.setTextColor1(Color.RED); face_border.setBorderColor1(Color.RED); face_title.setText("非活体"); } this.setVisibility(VISIBLE); float faceLeft = facePosition.sx1 * (cameraViewWidth / pictureWidth); float top = facePosition.sy1 * (cameraViewHeight / pictureHeight) - face_title.getHeight(); float faceWidth = (facePosition.sx2 - facePosition.sx1) * (cameraViewWidth / pictureWidth); if (Constants.landscape) { if (Constants.isTps650) { faceLeft = cameraViewWidth - facePosition.sx1 * (cameraViewWidth / pictureWidth) - faceWidth; } } float faceHeight = (facePosition.sy2 - facePosition.sy1) * (cameraViewHeight / pictureHeight); RelativeLayout.LayoutParams layoutParams = null; if (scanner_view instanceof CircleView) { double face_title_top_height = (faceHeight - faceWidth) * 0.5; if (face_title_top_height < 0) { face_title_top_height = 0; } face_title_top.setVisibility(VISIBLE); ViewGroup.LayoutParams layoutParams3 = face_title_top.getLayoutParams(); layoutParams3.height = (int) (face_title_top_height / 2); face_title_top.setLayoutParams(layoutParams3); double newFaceHeight = faceHeight - face_title_top_height; layoutParams = new RelativeLayout.LayoutParams((int) faceWidth, (int) newFaceHeight); } else { layoutParams = new RelativeLayout.LayoutParams((int) faceWidth, (int) faceHeight); } RelativeLayout.LayoutParams layoutParams1 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams1.setMargins((int) faceLeft, (int) (top), 0, 0); recognized_face_info_view_layout.setLayoutParams(layoutParams1); face_border.setLineLong((int) (Math.min(faceWidth, faceHeight) * 0.3)); face_border.setLayoutParams(layoutParams); scanner_view.setLayoutParams(layoutParams); face_background.setLayoutParams(layoutParams); if (scanner_view instanceof CircleView) { face_border.setVisibility(GONE); tipsTxt.setTextColor(face_title.getCurrentTextColor1()); face_title.setTextColor(face_title.getCurrentTextColor1()); scanner_view.setColor(face_title.getCurrentTextColor1()); face_background.setVisibility(GONE); } else { face_border.setVisibility(VISIBLE); face_background.setVisibility(VISIBLE); } if (!TextUtils.isEmpty(tipsTxt.getText().toString())) { face_title.setText(""); } } }