package com.example.settinglibrary;
|
|
import android.app.Activity;
|
import android.app.AlertDialog;
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
import android.os.Build;
|
import android.os.Bundle;
|
import androidx.annotation.RequiresApi;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.Button;
|
import android.widget.CompoundButton;
|
import android.widget.EditText;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.PopupWindow;
|
import android.widget.Switch;
|
import android.widget.TextView;
|
import com.example.datalibrary.activity.BaseActivity;
|
import com.example.datalibrary.utils.PWTextUtils;
|
|
import java.math.BigDecimal;
|
|
|
/**
|
* author : shangrog
|
* date : 2019/5/27 6:34 PM
|
* description :最小人脸界面
|
*/
|
|
public class GateMinFaceActivity extends BaseActivity {
|
private EditText mfEtAmount;
|
private int minimumFace;
|
private int thirty = 30;
|
private int twoHundered = 200;
|
private static final int TEN = 10;
|
private float faceThreshold;
|
private float thirtyLevel = 0.3f;
|
private float twoHunderedLevel = 0.8f;
|
private static final float TEN_LEVEL = 0.1f;
|
|
private LinearLayout linerMinFace;
|
private TextView minFaceText;
|
private Button minFace;
|
private String tagMsg = "";
|
private ViewGroup minRepresent;
|
private ViewGroup faceThresholdGroup;
|
private EditText mfEtFaceThreshold;
|
private Button minFaceThreshold;
|
private Button multiFaceBtn;
|
private Button maskBtn;
|
private int showWidth;
|
private int showXLocation;
|
|
private BigDecimal faceThresholdDecimal;
|
private BigDecimal levelValue;
|
private Switch multiFaceSw;
|
private Switch maskSw;
|
private View maskLv;
|
private View multiLv;
|
private boolean isMultiIdentify = false;
|
private boolean isMaskIdentify = false;
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.activity_gate_minface);
|
|
init();
|
}
|
|
|
public void init() {
|
Intent intent = getIntent();
|
levelValue = new BigDecimal(TEN_LEVEL + "");
|
minimumFace = intent.getIntExtra("minimumFace" , 0);
|
faceThreshold = intent.getFloatExtra("faceThreshold" , 0);
|
|
isMultiIdentify = intent.getBooleanExtra("isMultiIdentify" , false);
|
isMaskIdentify = intent.getBooleanExtra("isMaskIdentify" , false);
|
minRepresent = findViewById(R.id.minRepresent);
|
|
linerMinFace = findViewById(R.id.linerminface);
|
minFaceText = findViewById(R.id.minFaceText);
|
minFace = findViewById(R.id.minface);
|
|
ImageView mfDecrease = findViewById(R.id.mf_Decrease);
|
ImageView mfIncrease = findViewById(R.id.mf_Increase);
|
mfEtAmount = findViewById(R.id.mf_etAmount);
|
ImageView mfSave = findViewById(R.id.mf_save);
|
mfEtAmount.setText(minimumFace + "");
|
// 人脸置信度
|
faceThresholdGroup = findViewById(R.id.faceThreshold);
|
mfEtFaceThreshold = findViewById(R.id.mf_et_face_threshold);
|
ImageView mfFaceThreshold = findViewById(R.id.mf_face_threshold);
|
ImageView mfPlusFaceThreshold = findViewById(R.id.mf_plus_face_threshold);
|
minFaceThreshold = findViewById(R.id.min_face_threshold);
|
mfEtFaceThreshold.setText(faceThreshold + "");
|
|
PWTextUtils.setOnDismissListener(new PopupWindow.OnDismissListener() {
|
@Override
|
public void onDismiss() {
|
minFace.setBackground(getDrawable(R.mipmap.icon_setting_question));
|
minFaceThreshold.setBackground(getDrawable(R.mipmap.icon_setting_question));
|
maskBtn.setBackground(getDrawable(R.mipmap.icon_setting_question));
|
multiFaceBtn.setBackground(getDrawable(R.mipmap.icon_setting_question));
|
}
|
});
|
// 考勤模式下支持多人识别和口罩识别,其他模式不支持
|
boolean isAttendance = intent.getBooleanExtra("isAttendance" , false);
|
multiLv = findViewById(R.id.multiFaceLv);
|
maskLv = findViewById(R.id.maskLv);
|
if (isAttendance){
|
multiLv.setVisibility(View.VISIBLE);
|
maskLv.setVisibility(View.VISIBLE);
|
}
|
else{
|
multiLv.setVisibility(View.GONE);
|
maskLv.setVisibility(View.GONE);
|
}
|
multiFaceBtn = findViewById(R.id.multiFaceBtn);
|
multiFaceBtn.setText("");
|
|
maskBtn = findViewById(R.id.maskBtn);
|
maskBtn.setText("");
|
|
multiFaceSw = findViewById(R.id.multiFaceSw);
|
maskSw = findViewById(R.id.maskSw);
|
|
if (isMultiIdentify) {
|
multiFaceSw.setChecked(true);
|
} else {
|
multiFaceSw.setChecked(false);
|
}
|
|
if (isMaskIdentify) {
|
maskSw.setChecked(true);
|
} else {
|
maskSw.setChecked(false);
|
}
|
|
multiFaceSw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
if (isChecked) {
|
multiFaceSw.setChecked(true);
|
} else {
|
multiFaceSw.setChecked(false);
|
}
|
isMultiIdentify = isChecked;
|
}
|
});
|
|
maskSw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
if (isChecked) {
|
maskSw.setChecked(true);
|
} else {
|
maskSw.setChecked(false);
|
}
|
isMaskIdentify = isChecked;
|
}
|
});
|
|
// 人脸置信度 增减按钮
|
mfFaceThreshold.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (faceThreshold > thirtyLevel && faceThreshold <= twoHunderedLevel) {
|
faceThresholdDecimal = new BigDecimal(faceThreshold + "");
|
faceThreshold = faceThresholdDecimal.subtract(levelValue).floatValue();
|
mfEtFaceThreshold.setText(faceThreshold + "");
|
}
|
}
|
});
|
mfPlusFaceThreshold.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (faceThreshold >= thirtyLevel && faceThreshold < twoHunderedLevel) {
|
faceThresholdDecimal = new BigDecimal(faceThreshold + "");
|
faceThreshold = faceThresholdDecimal.add(levelValue).floatValue();
|
mfEtFaceThreshold.setText(faceThreshold + "");
|
}
|
}
|
});
|
|
// 最小人脸增减按钮
|
mfDecrease.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (minimumFace > thirty && minimumFace <= twoHundered) {
|
minimumFace = minimumFace - TEN;
|
mfEtAmount.setText(minimumFace + "");
|
}
|
}
|
});
|
|
mfIncrease.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (minimumFace >= thirty && minimumFace < twoHundered) {
|
minimumFace = minimumFace + TEN;
|
mfEtAmount.setText(minimumFace + "");
|
}
|
}
|
});
|
|
mfSave.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
finish();
|
}
|
});
|
|
minFace.setOnClickListener(new View.OnClickListener() {
|
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
@Override
|
public void onClick(View v) {
|
if (tagMsg.equals(getString(R.string.cw_minface))) {
|
tagMsg = "";
|
return;
|
}
|
tagMsg = getString(R.string.cw_minface);
|
minFace.setBackground(getDrawable(R.mipmap.icon_setting_question_hl));
|
PWTextUtils.showDescribeText(minRepresent, minFaceText, GateMinFaceActivity.this,
|
getString(R.string.cw_minface), showWidth, showXLocation);
|
}
|
});
|
|
minFaceThreshold.setOnClickListener(new View.OnClickListener() {
|
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
@Override
|
public void onClick(View v) {
|
if (tagMsg.equals(getString(R.string.cw_face_threshold))) {
|
tagMsg = "";
|
return;
|
}
|
tagMsg = getString(R.string.cw_face_threshold);
|
minFaceThreshold.setBackground(getDrawable(R.mipmap.icon_setting_question_hl));
|
PWTextUtils.showDescribeText(faceThresholdGroup, minFaceThreshold, GateMinFaceActivity.this,
|
getString(R.string.cw_face_threshold), showWidth, showXLocation);
|
}
|
});
|
|
multiFaceBtn.setOnClickListener(new View.OnClickListener() {
|
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
@Override
|
public void onClick(View v) {
|
if (tagMsg.equals(getString(R.string.cw_multi_identify))) {
|
tagMsg = "";
|
return;
|
}
|
tagMsg = getString(R.string.cw_multi_identify);
|
multiFaceBtn.setBackground(getDrawable(R.mipmap.icon_setting_question_hl));
|
PWTextUtils.showDescribeText(faceThresholdGroup, multiFaceBtn, GateMinFaceActivity.this,
|
getString(R.string.cw_multi_identify), showWidth, showXLocation);
|
}
|
});
|
|
maskBtn.setOnClickListener(new View.OnClickListener() {
|
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
@Override
|
public void onClick(View v) {
|
if (tagMsg.equals(getString(R.string.cw_mask_identify))) {
|
tagMsg = "";
|
return;
|
}
|
tagMsg = getString(R.string.cw_mask_identify);
|
maskBtn.setBackground(getDrawable(R.mipmap.icon_setting_question_hl));
|
PWTextUtils.showDescribeText(faceThresholdGroup, maskBtn, GateMinFaceActivity.this,
|
getString(R.string.cw_mask_identify), showWidth, showXLocation);
|
}
|
});
|
}
|
|
@Override
|
public void finish() {
|
Intent intent = new Intent();
|
intent.putExtra("minimumFace", minimumFace);
|
intent.putExtra("faceThreshold", faceThreshold);
|
intent.putExtra("isMultiIdentify", isMultiIdentify);
|
intent.putExtra("isMaskIdentify", isMaskIdentify);
|
setResult(Activity.RESULT_OK, intent);
|
super.finish();
|
}
|
|
private void showAlertAndExit(String message) {
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
builder.setMessage(message);
|
builder.setCancelable(false);
|
builder.setNeutralButton("OK", new DialogInterface.OnClickListener() {
|
public void onClick(DialogInterface dialog, int which) {
|
finish();
|
}
|
});
|
builder.show();
|
}
|
|
@Override
|
public void onWindowFocusChanged(boolean hasFocus) {
|
super.onWindowFocusChanged(hasFocus);
|
showWidth = minRepresent.getWidth();
|
showXLocation = (int) minRepresent.getX();
|
}
|
|
}
|