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