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.fragment.DoorAccessResultFragment; import com.basic.security.manager.FaceTitleAndTipsManagerS; 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.FaceTitleAndTipsS; public class RecognizeFaceInfoViewS 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 RecognizeFaceInfoViewS(Context context) { super(context); initView(); } public RecognizeFaceInfoViewS(Context context, AttributeSet attrs) { super(context, attrs); initView(); } public RecognizeFaceInfoViewS(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(); } public void setMeasuredDimension1(int measuredWidth, int measuredHeight) { setMeasuredDimension(measuredWidth, measuredHeight); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); } 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; FaceTitleAndTipsS faceTitleAndTips = FaceTitleAndTipsManagerS.getFaceTitleMap(facePosition, true); String faceTitle = faceTitleAndTips.getFaceTitle(); if (faceTitleAndTips.facePosition != null && Constants.USE_GRAY_CAMERA && !facePosition.liveness) { face_title.setTextColor1(Color.RED); face_border.setBorderColor1(Color.RED); faceTitle = "非活体"; face_title.setText1(faceTitle); } else { face_title.setText1(faceTitle); tipsTxt.setText(faceTitleAndTips.getTipsTxt()); tipsTxt.setTextColor1(Color.GREEN); tipsTxt.setTextColor(Color.GREEN); if (faceTitleAndTips.getFaceTitleColor().equals("#00FF00")) { face_title.setTextColor(Color.GREEN); face_border.setBorderColor(Color.GREEN); } else { face_title.setTextColor(Color.RED); face_border.setBorderColor(Color.RED); } if (CurrentBase.activity.currentFragment == CurrentBase.activity.fragment_door_access_result) { if ("开门成功".equals(((DoorAccessResultFragment) 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())); } ModelAdapter currentPositionPerson = faceTitleAndTips.person; 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.setText1(HintDoorAccessManager.getNoRegisterHint()); } } 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.setText1(""); } } 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(""); } } } if (!TextUtils.isEmpty(tipsTxt.getText().toString())) { face_title.setText1(""); } } 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); try { // faceLeft = cameraViewWidth - facePosition.sx1 * (cameraViewWidth / pictureWidth) - faceWidth; // if (((MainActivity) BaseApplication.getApplication().activity).fragment_menu.isLandscape()) { //// faceLeft = cameraViewWidth - facePosition.x1 * (cameraViewWidth / pictureWidth) - faceWidth; // // } } catch (Exception e) { e.printStackTrace(); } double faceHeight = (facePosition.sy2 - facePosition.sy1) * (cameraViewHeight / pictureHeight); if (scanner_view instanceof CircleView) { double face_title_top_height = (faceHeight - faceWidth) * 0.4; 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); faceHeight = faceHeight - face_title_top_height; } RelativeLayout.LayoutParams 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.setLiveness(facePosition.liveness); 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); } // System.out.println("MyTextView.setText1 11 " + face_title.getText().toString()); } }