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 allIdentity = IdentityManager.findIdentityList(); ArrayList temp = new ArrayList(); 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); } } }