package com.basic.security.widget; import android.content.Context; import android.graphics.Color; 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.R; import com.basic.security.activity.MainActivity; import com.basic.security.base.BaseApplication; import com.basic.security.fragment.DoorAccessResultFragment; import com.basic.security.manager.FaceTitleAndTipsManager; import com.basic.security.manager.RecognizeManager; import com.basic.security.manager.helper.rm.base.CurrentBase; import com.basic.security.manager.helper.rm.base.CurrentBaseDetectResult; import com.basic.security.utils.CompareFeatureResult; import com.basic.security.utils.FacePosition; import com.basic.security.utils.FaceTitleAndTips; public class RecognizeFaceInfoView extends FrameLayout { LinearLayout recognized_face_info_view_layout; TextView face_title, tipsTxt; FaceOuterBorderView face_border; ScannerView 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(), R.layout.recognized_face_info_view, null); recognized_face_info_view_layout = view.findViewById(R.id.recognized_face_info_view_layout); face_title = view.findViewById(R.id.face_title); tipsTxt = view.findViewById(R.id.tipsTxt); scanner_view = view.findViewById(R.id.scanner_view); face_border = view.findViewById(R.id.face_border); face_background = view.findViewById(R.id.face_background); addView(view); } public void showAtPosition(FacePosition facePosition, float cameraViewHeight, float cameraViewWidth, float pictureWidth, float pictureHeight) { FaceTitleAndTips faceTitleAndTips = FaceTitleAndTipsManager.getFaceTitleMap(facePosition, true); // System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaa"+facePosition.trackerId + " " + faceTitleAndTips+" " + " " +faceTitleAndTips.getFaceTitle()); // System.out.println("RecognizeFaceInfoView.showAtPosition faceTitleAndTips.getFaceTitle()="+faceTitleAndTips.getFaceTitle()); face_title.setText(faceTitleAndTips.getFaceTitle()); tipsTxt.setText(faceTitleAndTips.getTipsTxt()); tipsTxt.setTextColor(Color.GREEN); // face_title.setTextColor(Color.parseColor(faceTitleAndTips.getFaceTitleColor())); // face_border.setBorderColor(Color.parseColor(faceTitleAndTips.getFaceBorderColor())); // 解决当开门成功后在DoorAccessResultFragment页面,如果没有获取到人脸到重新获取人脸,人脸框和提示会变为红色的bug if (CurrentBase.activity.currentFragment == CurrentBase.activity.fragment_door_access_result) { if ("开门成功".equals(((DoorAccessResultFragment) CurrentBase.activity.fragment_door_access_result).openDoorTitle())) { face_title.setTextColor(Color.parseColor("#00FF00")); face_border.setBorderColor(Color.parseColor("#00FF00")); } else { face_title.setTextColor(Color.parseColor("#FF0000")); face_border.setBorderColor(Color.parseColor("#FF0000")); } } else { face_title.setTextColor(Color.parseColor(faceTitleAndTips.getFaceTitleColor())); face_border.setBorderColor(Color.parseColor(faceTitleAndTips.getFaceBorderColor())); } this.setVisibility(VISIBLE); float faceLeft = facePosition.x1 * (cameraViewWidth / pictureWidth); float top = facePosition.y1 * (cameraViewHeight / pictureHeight) - face_title.getHeight(); float faceWidth = (facePosition.x2 - facePosition.x1) * (cameraViewWidth / pictureWidth); float faceHeight = (facePosition.y2 - facePosition.y1) * (cameraViewHeight / pictureHeight); 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); } }