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.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.HintDoorAccessManager;
|
import com.basic.security.manager.HintSignUpManager;
|
import com.basic.security.manager.IdentityManager;
|
import com.basic.security.manager.helper.rm.base.CurrentBase;
|
import com.basic.security.model.ModelAdapter;
|
import com.basic.security.utils.Constants;
|
import com.basic.security.utils.FacePosition;
|
import com.basic.security.utils.FaceTitleAndTips;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
public class RecognizeFaceInfoView extends FrameLayout {
|
LinearLayout recognized_face_info_view_layout;
|
MyTextView face_title, tipsTxt, face_title_tips;
|
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(), 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);
|
face_title_tips = view.findViewById(R.id.face_title_tips);
|
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);
|
String faceTitle = faceTitleAndTips.getFaceTitle();
|
System.out.println("sout:showAtPosition:" + faceTitle);
|
face_title.setText(faceTitle);
|
|
String[] titles = faceTitle.trim().split("\\s+");
|
// System.out.println("face_title:" + titles[0] + " tips:" + titles[titles.length-1]);
|
List<ModelAdapter> allIdentity = IdentityManager.findIdentityList();
|
ArrayList<String> temp = new ArrayList<String>();
|
for(ModelAdapter i:allIdentity){
|
temp.add(i.getString("name"));
|
}
|
if(temp.contains(titles[0])){
|
face_title.setText(titles[0] + " " + titles[1]);
|
}else{
|
face_title.setText(titles[0]);
|
}
|
|
if(titles.length >1){
|
face_title_tips.setText(titles[titles.length -1]);
|
face_title_tips.setTextColor(Color.WHITE);
|
}else{
|
face_title_tips.setText("");
|
face_title_tips.setVisibility(View.GONE);
|
}
|
|
tipsTxt.setText(faceTitleAndTips.getTipsTxt());
|
// tipsTxt.setTextColor1(Color.GREEN);
|
// tipsTxt.setTextColor(Color.GREEN);
|
// face_title.setTextColor(Color.GREEN);
|
// face_border.setBorderColor(Color.GREEN);
|
//System.out.println("RecognizeFaceInfoView.showAtPosition 0 " + (CurrentBase.activity.currentFragment == CurrentBase.activity.fragment_admin_face_login));
|
if (CurrentBase.activity.currentFragment == CurrentBase.activity.fragment_admin_face_login) {
|
try {
|
// System.out.println("RecognizeFaceInfoView.showAtPosition " + facePosition.detectScoreCanRecognize1() + " " + ( TextUtils.isEmpty(faceTitleAndTips.personId)));
|
if (facePosition.detectScoreCanRecognize1() && TextUtils.isEmpty(faceTitleAndTips.personId)) {
|
tipsTxt.setText("");
|
face_title.setText("未注册");
|
|
tipsTxt.setTextColor1(Color.RED);
|
tipsTxt.setTextColor(Color.RED);
|
|
face_title.setTextColor(Color.RED);
|
face_border.setBorderColor(Color.RED);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
|
|
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 {
|
// System.out.println("sout:reCalculate2");
|
face_title.setTextColor1(Color.parseColor(faceTitleAndTips.getFaceTitleColor()));
|
face_border.setBorderColor1(Color.parseColor(faceTitleAndTips.getFaceBorderColor()));
|
}
|
MainActivity mainActivity = (MainActivity) BaseApplication.getApplication().activity;
|
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())
|
|| "未注册".equals(face_title.getText())
|
|| HintDoorAccessManager.getNoRegister().equals(face_title.getText())
|
) {
|
face_title.setTextColor1(Color.RED);
|
face_border.setBorderColor1(Color.RED);
|
} else {
|
System.out.println("sout:reCalculate3:"+face_title.getText());
|
face_title.setTextColor1(Color.GREEN);
|
face_border.setBorderColor1(Color.GREEN);
|
if (face_title.getCurrentTextColor1() == Color.GREEN) {
|
tipsTxt.setText("");
|
}
|
}
|
|
}
|
|
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);
|
if (Constants.landscape) {
|
faceLeft = cameraViewWidth - facePosition.x1 * (cameraViewWidth / pictureWidth) - faceWidth;
|
}
|
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);
|
|
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("");
|
// }
|
|
if(!TextUtils.isEmpty(face_title.getText().toString()) && !TextUtils.isEmpty(face_title_tips.getText().toString())
|
&& face_border.getVisibility() == View.GONE ){
|
face_title_tips.setVisibility(View.VISIBLE);
|
if(face_border.getBorderColor1() == Color.GREEN){
|
face_title_tips.setBackgroundResource(R.drawable.radus_textview);
|
}
|
if(face_border.getBorderColor1() == Color.RED){
|
face_title_tips.setBackgroundResource(R.drawable.radius_text_red);
|
}
|
face_title.setTextColor(Color.WHITE);
|
face_title.setTextSize(70);
|
}else{
|
face_title_tips.setVisibility(View.GONE);
|
face_title.setTextSize(30);
|
}
|
}
|
}
|