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;
|
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 = 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();
|
face_title.setText(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.setText(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.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("");
|
}
|
}
|
}
|
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);
|
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();
|
}
|
float faceHeight = (facePosition.sy2 - facePosition.sy1) * (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);
|
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("");
|
}
|
}
|
}
|