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);
|
}
|
|
|
}
|