package com.example.settinglibrary; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; 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 com.example.datalibrary.utils.PreferencesManager; import java.math.BigDecimal; import java.text.DecimalFormat; /** * author : shangrong * date : two019/five/two7 six:four8 PM * description :活体检测模式 */ public class FaceLivinessTypeActivity extends BaseActivity implements View.OnClickListener { private int type; /* 1:rgb活体*/ private static final int ONE = 1; /* 2:rgb+nir活体*/ private static final int TWO = 2; /* 3:rgb+depth活体*/ private static final int THREE = 3; /* 4:rgb+nir+depth活体*/ private static final int FOUR = 4; private Button cwLivetype; private Button cwRgb; private Button cwRgbAndNir; private Button cwRgbAndDepth; private LinearLayout linerLiveTpye; private TextView tvLivType; private CheckBox flsRgbAndNirAndDepthLive; private CheckBox flsRgbLive; private CheckBox flsRgbAndNirLive; private CheckBox flsRgbAndDepthLive; private String msgTag = ""; private int showWidth; private int showXLocation; private LinearLayout flRepresent; private View rgbView; private View rgbAndNirView; private View rgbAndDepthView; private Switch qcLiving; private LinearLayout qcLinerLiving; private ImageView qcGestureDecrease; private EditText qcGestureEtThreshold; private ImageView qcGestureIncrease; private int framesThreshold; private int ten = 10; private int zero = 0; // RGB活体阀值 private ImageView thRgbLiveDecrease; private ImageView thRgbLiveIncrease; private EditText thRgbLiveEtThreshold; // NIR活体阀值 private ImageView thNirLiveDecrease; private ImageView thNirLiveIncrease; private EditText thNirLiveEtThreshold; // Depth活体阀值 private ImageView thdepthLiveDecrease; private ImageView thdepthLiveIncrease; private EditText thDepthLiveEtThreshold; private float rgbLiveScore; private float nirLiveScore; private float depthLiveScore; private BigDecimal rgbDecimal; private BigDecimal nirDecimal; private BigDecimal depthDecimal; private BigDecimal nonmoralValue; private static final float TEMPLE_VALUE = 0.05f; private Button cwLiveThrehold; private LinearLayout linerLiveThreshold; private TextView tvLive; private Button gateChangeLensBtn; private Button gateChangeLensBtnTwo; private TextView gateChangeLensTv; private TextView gateChangeLensTvTwo; private TextView rgbThresholdTv; private TextView nirThresholdTv; private TextView depthThresholdTv; private ImageView thRgbLiveDecreaseAshDisposal; private ImageView thRgbLiveIncreaseAshDisposal; private ImageView thNirLiveDecreaseAshDisposal; private ImageView thNirLiveIncreaseAshDisposal; private ImageView thDepthLiveDecreaseAshDisposal; private ImageView thDepthLiveIncreaseAshDisposal; // rgb和nir摄像头宽 private int rgbAndNirWidth; // rgb和nir摄像头高 private int rgbAndNirHeight; // depth摄像头宽 private int depthWidth; // depth摄像头高 private int depthHeight; // 是否开启活体检测开关 private boolean livingControl; private int cameraType; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gate_facelivinesstype); init(); } public void init() { // 获取Intent对象 Intent intent = getIntent(); framesThreshold = intent.getIntExtra("framesThreshold" , 3); rgbLiveScore = intent.getFloatExtra("rgbLiveScore" , 0.8f); nirLiveScore = intent.getFloatExtra("nirLiveScore" , 0.8f); depthLiveScore = intent.getFloatExtra("depthLiveScore" , 0.8f); type = intent.getIntExtra("type" , 1); cameraType = intent.getIntExtra("cameraType" , 0); livingControl = intent.getBooleanExtra("livingControl" , true); rgbAndNirWidth = intent.getIntExtra("rgbAndNirWidth" , 640); rgbAndNirHeight = intent.getIntExtra("rgbAndNirHeight" , 480); depthWidth = intent.getIntExtra("depthWidth" , 640); depthHeight = intent.getIntExtra("depthHeight" , 400); flRepresent = findViewById(R.id.flRepresent); rgbView = findViewById(R.id.rgbView); rgbAndNirView = findViewById(R.id.rgbAndNirView); rgbAndDepthView = findViewById(R.id.rgbAndDepthView); linerLiveTpye = findViewById(R.id.linerlivetpye); tvLivType = findViewById(R.id.tvlivetype); cwLivetype = findViewById(R.id.cw_livetype); cwLivetype.setOnClickListener(this); cwRgb = findViewById(R.id.cw_rgb); cwRgb.setOnClickListener(this); cwRgbAndNir = findViewById(R.id.cw_rgbandnir); cwRgbAndNir.setOnClickListener(this); cwRgbAndDepth = findViewById(R.id.cw_rgbanddepth); cwRgbAndDepth.setOnClickListener(this); flsRgbAndNirAndDepthLive = findViewById(R.id.fls_rgbandniranddepth_live); flsRgbLive = findViewById(R.id.fls_rgb_live); flsRgbAndNirLive = findViewById(R.id.fls_rgbandnir_live); flsRgbAndDepthLive = findViewById(R.id.fls_rgbanddepth_live); // 返回 ImageView flsSave = findViewById(R.id.fls_save); flsSave.setOnClickListener(this); // 活体检测开关 qcLiving = findViewById(R.id.qc_Living); qcLinerLiving = findViewById(R.id.qc_LinerLiving); // 帧数阈值 qcGestureDecrease = findViewById(R.id.qc_GestureDecrease); qcGestureDecrease.setOnClickListener(this); qcGestureEtThreshold = findViewById(R.id.qc_GestureEtThreshold); qcGestureIncrease = findViewById(R.id.qc_GestureIncrease); qcGestureIncrease.setOnClickListener(this); // rgb活体 thRgbLiveDecrease = findViewById(R.id.th_RgbLiveDecrease); thRgbLiveDecrease.setOnClickListener(this); thRgbLiveIncrease = findViewById(R.id.th_RgbLiveIncrease); thRgbLiveIncrease.setOnClickListener(this); thRgbLiveEtThreshold = findViewById(R.id.th_RgbLiveEtThreshold); // nir活体 thNirLiveDecrease = findViewById(R.id.th_NirLiveDecrease); thNirLiveDecrease.setOnClickListener(this); thNirLiveIncrease = findViewById(R.id.th_NirLiveIncrease); thNirLiveIncrease.setOnClickListener(this); thNirLiveEtThreshold = findViewById(R.id.th_NirLiveEtThreshold); // depth活体 thdepthLiveDecrease = findViewById(R.id.th_depthLiveDecrease); thdepthLiveDecrease.setOnClickListener(this); thdepthLiveIncrease = findViewById(R.id.th_depthLiveIncrease); thdepthLiveIncrease.setOnClickListener(this); thDepthLiveEtThreshold = findViewById(R.id.th_depthLiveEtThreshold); cwLiveThrehold = findViewById(R.id.cw_livethrehold); cwLiveThrehold.setOnClickListener(this); linerLiveThreshold = findViewById(R.id.linerlivethreshold); tvLive = findViewById(R.id.tvlive); nonmoralValue = new BigDecimal(TEMPLE_VALUE + ""); rgbThresholdTv = findViewById(R.id.rgb_thresholdTv); nirThresholdTv = findViewById(R.id.nir_thresholdTv); depthThresholdTv = findViewById(R.id.depth_thresholdTv); thRgbLiveDecreaseAshDisposal = findViewById(R.id.th_RgbLiveDecrease_Ash_disposal); thRgbLiveIncreaseAshDisposal = findViewById(R.id.th_RgbLiveIncrease_Ash_disposal); thNirLiveDecreaseAshDisposal = findViewById(R.id.th_NirLiveDecrease_Ash_disposal); thNirLiveIncreaseAshDisposal = findViewById(R.id.th_NirLiveIncrease_Ash_disposal); thDepthLiveDecreaseAshDisposal = findViewById(R.id.th_depthLiveDecrease_Ash_disposal); thDepthLiveIncreaseAshDisposal = findViewById(R.id.th_depthLiveIncrease_Ash_disposal); // 更换镜头按钮 gateChangeLensBtn = findViewById(R.id.gate_change_lens_btn); gateChangeLensBtn.setOnClickListener(this); gateChangeLensBtnTwo = findViewById(R.id.gate_change_lens_btn_two); gateChangeLensBtnTwo.setOnClickListener(this); gateChangeLensTv = findViewById(R.id.gate_change_lens_tv); gateChangeLensTvTwo = findViewById(R.id.gate_change_lens_tv_two); PWTextUtils.setOnDismissListener(new PopupWindow.OnDismissListener() { @SuppressLint("NewApi") @Override public void onDismiss() { cwLivetype.setBackground(getDrawable(R.mipmap.icon_setting_question)); cwRgb.setBackground(getDrawable(R.mipmap.icon_setting_question)); cwRgbAndNir.setBackground(getDrawable(R.mipmap.icon_setting_question)); cwRgbAndDepth.setBackground(getDrawable(R.mipmap.icon_setting_question)); cwLiveThrehold.setBackground(getDrawable(R.mipmap.icon_setting_question)); } }); qcLiving.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { if (type == 1) { flsRgbLive.setChecked(true); } else if (type == 2) { flsRgbAndNirLive.setChecked(true); } else if (type == 3) { flsRgbAndDepthLive.setChecked(true); } else if (type == 4) { flsRgbAndNirAndDepthLive.setChecked(true); } else { type = 1; flsRgbLive.setChecked(true); } qcLiving.setChecked(true); livingControl = true; qcLinerLiving.setVisibility(View.VISIBLE); } else { qcLiving.setChecked(false); livingControl = false; qcLinerLiving.setVisibility(View.INVISIBLE); justify(); } } }); flsRgbLive.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton compoundButton, boolean b) { if (b) { // 镜头类型 flsRgbLive.setChecked(true); flsRgbLive.setEnabled(false); flsRgbAndNirLive.setChecked(false); flsRgbAndDepthLive.setChecked(false); flsRgbAndNirAndDepthLive.setChecked(false); gateChangeLensBtn.setVisibility(View.GONE); gateChangeLensBtnTwo.setVisibility(View.GONE); type = ONE; // nir 置灰 nirThresholdTv.setTextColor(getResources().getColor(R.color.hui_color)); thNirLiveDecrease.setVisibility(View.GONE); thNirLiveEtThreshold.setTextColor(getResources().getColor(R.color.hui_color)); thNirLiveIncrease.setVisibility(View.GONE); thNirLiveDecreaseAshDisposal.setVisibility(View.VISIBLE); thNirLiveIncreaseAshDisposal.setVisibility(View.VISIBLE); // depth 置灰 depthThresholdTv.setTextColor(getResources().getColor(R.color.hui_color)); thdepthLiveDecrease.setVisibility(View.GONE); thDepthLiveEtThreshold.setTextColor(getResources().getColor(R.color.hui_color)); thdepthLiveIncrease.setVisibility(View.GONE); thDepthLiveDecreaseAshDisposal.setVisibility(View.VISIBLE); thDepthLiveIncreaseAshDisposal.setVisibility(View.VISIBLE); justify(); if (cameraType == zero) { gateChangeLensTv.setText("奥比中光海燕、大白(640*400)"); } else if (cameraType == ONE) { gateChangeLensTv.setText("奥比中光海燕Pro、Atlas(400*640)"); } else if (cameraType == TWO) { gateChangeLensTv.setText("奥比中光蝴蝶、Astra Pro\\Pro S(640*480)"); } if (cameraType == zero) { gateChangeLensTvTwo.setText("奥比中光海燕、大白(640*400)"); } else if (cameraType == ONE) { gateChangeLensTvTwo.setText("奥比中光海燕Pro、Atlas(400*640)"); } else if (cameraType == TWO) { gateChangeLensTvTwo.setText("奥比中光蝴蝶、Astra Pro\\Pro S(640*480)"); } } else { flsRgbLive.setEnabled(true); } } }); flsRgbAndNirLive.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton compoundButton, boolean b) { if (b) { flsRgbAndNirLive.setChecked(true); flsRgbAndNirLive.setEnabled(false); flsRgbLive.setChecked(false); flsRgbAndDepthLive.setChecked(false); flsRgbAndNirAndDepthLive.setChecked(false); gateChangeLensBtn.setVisibility(View.GONE); gateChangeLensBtnTwo.setVisibility(View.GONE); type = TWO; nirThresholdTv.setTextColor(getResources().getColor(R.color.white)); thNirLiveDecrease.setVisibility(View.VISIBLE); thNirLiveEtThreshold.setTextColor(getResources().getColor(R.color.white)); thNirLiveIncrease.setVisibility(View.VISIBLE); thNirLiveDecreaseAshDisposal.setVisibility(View.GONE); thNirLiveIncreaseAshDisposal.setVisibility(View.GONE); // depth 置灰 depthThresholdTv.setTextColor(getResources().getColor(R.color.hui_color)); thdepthLiveDecrease.setVisibility(View.GONE); thDepthLiveEtThreshold.setTextColor(getResources().getColor(R.color.hui_color)); thdepthLiveIncrease.setVisibility(View.GONE); thDepthLiveDecreaseAshDisposal.setVisibility(View.VISIBLE); thDepthLiveIncreaseAshDisposal.setVisibility(View.VISIBLE); justify(); if (cameraType == zero) { gateChangeLensTv.setText("奥比中光海燕、大白(640*400)"); } else if (cameraType == ONE) { gateChangeLensTv.setText("奥比中光海燕Pro、Atlas(400*640)"); } else if (cameraType == TWO) { gateChangeLensTv.setText("奥比中光蝴蝶、Astra Pro\\Pro S(640*480)"); } if (cameraType == zero) { gateChangeLensTvTwo.setText("奥比中光海燕、大白(640*400)"); } else if (cameraType == ONE) { gateChangeLensTvTwo.setText("奥比中光海燕Pro、Atlas(400*640)"); } else if (cameraType == TWO) { gateChangeLensTvTwo.setText("奥比中光蝴蝶、Astra Pro\\Pro S(640*480)"); } } else { flsRgbAndNirLive.setEnabled(true); } } }); flsRgbAndDepthLive.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton compoundButton, boolean b) { if (b) { // 镜头类型 flsRgbAndDepthLive.setChecked(true); flsRgbAndDepthLive.setEnabled(false); flsRgbLive.setChecked(false); flsRgbAndNirLive.setChecked(false); flsRgbAndNirAndDepthLive.setChecked(false); gateChangeLensBtn.setVisibility(View.VISIBLE); gateChangeLensBtnTwo.setVisibility(View.GONE); type = THREE; // nir 置灰 nirThresholdTv.setTextColor(getResources().getColor(R.color.hui_color)); thNirLiveDecrease.setVisibility(View.GONE); thNirLiveEtThreshold.setTextColor(getResources().getColor(R.color.hui_color)); thNirLiveIncrease.setVisibility(View.GONE); thNirLiveDecreaseAshDisposal.setVisibility(View.VISIBLE); thNirLiveIncreaseAshDisposal.setVisibility(View.VISIBLE); depthThresholdTv.setTextColor(getResources().getColor(R.color.white)); thdepthLiveDecrease.setVisibility(View.VISIBLE); thDepthLiveEtThreshold.setTextColor(getResources().getColor(R.color.white)); thdepthLiveIncrease.setVisibility(View.VISIBLE); thDepthLiveDecreaseAshDisposal.setVisibility(View.GONE); thDepthLiveIncreaseAshDisposal.setVisibility(View.GONE); justify(); if (cameraType == zero) { gateChangeLensTv.setText("奥比中光海燕、大白(640*400)".substring(0, 12) + "..."); } else if (cameraType == ONE) { gateChangeLensTv.setText("奥比中光海燕Pro、Atlas(400*640)".substring(0, 12) + "..."); } else if (cameraType == TWO) { gateChangeLensTv.setText("奥比中光蝴蝶、Astra Pro\\Pro S(640*480)".substring(0, 12) + "..."); } else { gateChangeLensTv.setText("此模态下需设定镜头型号"); } if (cameraType == zero) { gateChangeLensTvTwo.setText("奥比中光海燕、大白(640*400)"); } else if (cameraType == ONE) { gateChangeLensTvTwo.setText("奥比中光海燕Pro、Atlas(400*640)"); } else if (cameraType == TWO) { gateChangeLensTvTwo.setText("奥比中光蝴蝶、Astra Pro\\Pro S(640*480)"); } else { gateChangeLensTvTwo.setText("此模态下需设定镜头型号"); } } else { flsRgbAndDepthLive.setEnabled(true); } } }); flsRgbAndNirAndDepthLive.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { if (b) { flsRgbAndNirAndDepthLive.setChecked(true); flsRgbAndNirAndDepthLive.setEnabled(false); flsRgbLive.setChecked(false); flsRgbAndNirLive.setChecked(false); flsRgbAndDepthLive.setChecked(false); gateChangeLensBtn.setVisibility(View.GONE); gateChangeLensBtnTwo.setVisibility(View.VISIBLE); type = FOUR; if (cameraType == zero) { gateChangeLensTv.setText("奥比中光海燕、大白(640*400)"); } else if (cameraType == ONE) { gateChangeLensTv.setText("奥比中光海燕Pro、Atlas(400*640)"); } else if (cameraType == TWO) { gateChangeLensTv.setText("奥比中光蝴蝶、Astra Pro\\Pro S(640*480)"); } else { gateChangeLensTvTwo.setText("此模态下需设定镜头型号"); } if (cameraType == zero) { gateChangeLensTvTwo.setText("奥比中光海燕、大白(640*400)".substring(0, 12) + "..."); } else if (cameraType == ONE) { gateChangeLensTvTwo.setText("奥比中光海燕Pro、Atlas(400*640)".substring(0, 12) + "..."); } else if (cameraType == TWO) { gateChangeLensTvTwo.setText("奥比中光蝴蝶、Astra Pro\\Pro S(640*480)".substring(0, 12) + "..."); } else { gateChangeLensTvTwo.setText("此模态下需设定镜头型号"); } nirThresholdTv.setTextColor(getResources().getColor(R.color.white)); thNirLiveDecrease.setVisibility(View.VISIBLE); thNirLiveEtThreshold.setTextColor(getResources().getColor(R.color.white)); thNirLiveIncrease.setVisibility(View.VISIBLE); thNirLiveDecreaseAshDisposal.setVisibility(View.GONE); thNirLiveIncreaseAshDisposal.setVisibility(View.GONE); depthThresholdTv.setTextColor(getResources().getColor(R.color.white)); thdepthLiveDecrease.setVisibility(View.VISIBLE); thDepthLiveEtThreshold.setTextColor(getResources().getColor(R.color.white)); thdepthLiveIncrease.setVisibility(View.VISIBLE); thDepthLiveDecreaseAshDisposal.setVisibility(View.GONE); thDepthLiveIncreaseAshDisposal.setVisibility(View.GONE); justify(); } else { flsRgbAndNirAndDepthLive.setEnabled(true); } } }); } @Override protected void onResume() { super.onResume(); // if (gateChangeLensBtn.getVisibility() == View.VISIBLE) { // 镜头类型 PreferencesManager.getInstance(this.getApplicationContext()) .setRgbDepth(cameraType); if (cameraType == zero) { gateChangeLensTv.setText("奥比中光海燕、大白(640*400)" .substring(0, 12) + "..."); } else if (cameraType == ONE) { gateChangeLensTv.setText("奥比中光海燕Pro、Atlas(400*640)" .substring(0, 12) + "..."); } else if (cameraType == TWO) { gateChangeLensTv.setText("奥比中光蝴蝶、Astra Pro\\Pro S(640*480)" .substring(0, 12) + "..."); } else { gateChangeLensTv.setText("此模态下需设定镜头型号"); } // } // if (gateChangeLensBtnTwo.getVisibility() == View.VISIBLE) { // // 镜头类型 // int cameraType = SingleBaseConfig.getBaseConfig().getCameraType(); PreferencesManager.getInstance(this.getApplicationContext()) .setRgbNirDepth(cameraType); if (cameraType == zero) { gateChangeLensTvTwo.setText("奥比中光海燕、大白(640*400)" .substring(0, 12) + "..."); } else if (cameraType == ONE) { gateChangeLensTvTwo.setText("奥比中光海燕Pro、Atlas(400*640)" .substring(0, 12) + "..."); } else if (cameraType == TWO) { gateChangeLensTvTwo.setText("奥比中光蝴蝶、Astra Pro\\Pro S(640*480)" .substring(0, 12) + "..."); } else { gateChangeLensTvTwo.setText("此模态下需设定镜头型号"); } // } if (livingControl) { qcLiving.setChecked(true); qcLinerLiving.setVisibility(View.VISIBLE); } else { qcLiving.setChecked(false); qcLinerLiving.setVisibility(View.INVISIBLE); } qcGestureEtThreshold.setText(framesThreshold + ""); thRgbLiveEtThreshold.setText(roundByScale(rgbLiveScore)); thNirLiveEtThreshold.setText(roundByScale(nirLiveScore)); thDepthLiveEtThreshold.setText(roundByScale(depthLiveScore)); if (type == ONE) { flsRgbLive.setChecked(true); flsRgbAndNirLive.setChecked(false); flsRgbAndDepthLive.setChecked(false); flsRgbAndNirAndDepthLive.setChecked(false); } if (type == TWO) { flsRgbAndNirLive.setChecked(true); flsRgbLive.setChecked(false); flsRgbAndDepthLive.setChecked(false); flsRgbAndNirAndDepthLive.setChecked(false); } if (type == THREE) { flsRgbAndDepthLive.setChecked(true); flsRgbLive.setChecked(false); flsRgbAndNirLive.setChecked(false); flsRgbAndNirAndDepthLive.setChecked(false); } if (type == FOUR) { flsRgbAndNirAndDepthLive.setChecked(true); flsRgbLive.setChecked(false); flsRgbAndNirLive.setChecked(false); flsRgbAndDepthLive.setChecked(false); } } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); showWidth = flRepresent.getWidth(); showXLocation = (int) flRepresent.getLeft(); } @SuppressLint("NewApi") @Override public void onClick(View view) { int id = view.getId(); if (id == R.id.fls_save) { if (qcLiving.isChecked()) { livingControl = true; } else { livingControl = false; type = zero; } framesThreshold = Integer.valueOf(qcGestureEtThreshold.getText().toString()); rgbLiveScore = Float.parseFloat(thRgbLiveEtThreshold.getText().toString()); nirLiveScore = Float.parseFloat(thNirLiveEtThreshold.getText().toString()); depthLiveScore = Float.parseFloat(thDepthLiveEtThreshold.getText().toString()); justify(); finish(); } else if (id == R.id.cw_livetype) { if (msgTag.equals(getString(R.string.cw_livedetecttype))) { msgTag = ""; return; } msgTag = getString(R.string.cw_livedetecttype); cwLivetype.setBackground(getDrawable(R.mipmap.icon_setting_question_hl)); PWTextUtils.showDescribeText(linerLiveTpye, tvLivType, FaceLivinessTypeActivity.this, getString(R.string.cw_livedetecttype) , showWidth, showXLocation); } else if (id == R.id.cw_rgb) { if (msgTag.equals(getString(R.string.cw_rgblive))) { msgTag = ""; return; } msgTag = getString(R.string.cw_rgblive); cwRgb.setBackground(getDrawable(R.mipmap.icon_setting_question_hl)); PWTextUtils.showDescribeText(rgbView, rgbView, FaceLivinessTypeActivity.this, getString(R.string.cw_rgblive) , showWidth, 0); } else if (id == R.id.cw_rgbandnir) { if (msgTag.equals(getString(R.string.cw_rgbandnir))) { msgTag = ""; return; } msgTag = getString(R.string.cw_rgbandnir); cwRgbAndNir.setBackground(getDrawable(R.mipmap.icon_setting_question_hl)); PWTextUtils.showDescribeText(rgbAndNirView, rgbAndNirView, FaceLivinessTypeActivity.this, getString(R.string.cw_rgbandnir) , showWidth, 0); } else if (id == R.id.cw_rgbanddepth) { if (msgTag.equals(getString(R.string.cw_rgbanddepth))) { msgTag = ""; return; } msgTag = getString(R.string.cw_rgbanddepth); cwRgbAndDepth.setBackground(getDrawable(R.mipmap.icon_setting_question_hl)); PWTextUtils.showDescribeText(rgbAndDepthView, rgbAndDepthView, FaceLivinessTypeActivity.this, getString(R.string.cw_rgbanddepth) , showWidth, 0); // 减 } else if (id == R.id.qc_GestureDecrease) { if (framesThreshold > ONE && framesThreshold <= ten) { framesThreshold = framesThreshold - 1; qcGestureEtThreshold.setText(framesThreshold + ""); } // 加 } else if (id == R.id.qc_GestureIncrease) { if (framesThreshold >= ONE && framesThreshold < ten) { framesThreshold = framesThreshold + 1; qcGestureEtThreshold.setText(framesThreshold + ""); } } else if (id == R.id.th_RgbLiveDecrease) { if (rgbLiveScore > zero && rgbLiveScore <= ONE) { rgbDecimal = new BigDecimal(rgbLiveScore + ""); rgbLiveScore = rgbDecimal.subtract(nonmoralValue).floatValue(); thRgbLiveEtThreshold.setText(roundByScale(rgbLiveScore)); } } else if (id == R.id.th_RgbLiveIncrease) { if (rgbLiveScore >= zero && rgbLiveScore < ONE) { rgbDecimal = new BigDecimal(rgbLiveScore + ""); rgbLiveScore = rgbDecimal.add(nonmoralValue).floatValue(); thRgbLiveEtThreshold.setText(roundByScale(rgbLiveScore)); } } else if (id == R.id.th_NirLiveDecrease) { if (nirLiveScore > zero && nirLiveScore <= ONE) { nirDecimal = new BigDecimal(nirLiveScore + ""); nirLiveScore = nirDecimal.subtract(nonmoralValue).floatValue(); thNirLiveEtThreshold.setText(roundByScale(nirLiveScore)); } } else if (id == R.id.th_NirLiveIncrease) { if (nirLiveScore >= zero && nirLiveScore < ONE) { nirDecimal = new BigDecimal(nirLiveScore + ""); nirLiveScore = nirDecimal.add(nonmoralValue).floatValue(); thNirLiveEtThreshold.setText(roundByScale(nirLiveScore)); } } else if (id == R.id.th_depthLiveDecrease) { if (depthLiveScore > zero && depthLiveScore <= ONE) { depthDecimal = new BigDecimal(depthLiveScore + ""); depthLiveScore = depthDecimal.subtract(nonmoralValue).floatValue(); thDepthLiveEtThreshold.setText(roundByScale(depthLiveScore)); } } else if (id == R.id.th_depthLiveIncrease) { if (depthLiveScore >= zero && depthLiveScore < ONE) { depthDecimal = new BigDecimal(depthLiveScore + ""); depthLiveScore = depthDecimal.add(nonmoralValue).floatValue(); thDepthLiveEtThreshold.setText(roundByScale(depthLiveScore)); } } else if (id == R.id.cw_livethrehold) { if (msgTag.equals(getString(R.string.cw_livethrehold))) { msgTag = ""; return; } msgTag = getString(R.string.cw_livethrehold); cwLiveThrehold.setBackground(getDrawable(R.mipmap.icon_setting_question_hl)); PWTextUtils.showDescribeText(linerLiveThreshold, tvLive, FaceLivinessTypeActivity.this, getString(R.string.cw_livethrehold), showWidth, showXLocation); } else if (id == R.id.gate_change_lens_btn) { Intent intent = new Intent(FaceLivinessTypeActivity.this, GateLensSelectionActivity.class); intent.putExtra("type", type); intent.putExtra("cameraType", cameraType); intent.putExtra("rgbAndNirWidth", rgbAndNirWidth); intent.putExtra("rgbAndNirHeight", rgbAndNirHeight); intent.putExtra("depthWidth", depthWidth); intent.putExtra("depthHeight", depthHeight); startActivityForResult(intent , 100); } else if (id == R.id.gate_change_lens_btn_two) { Intent intent = new Intent(FaceLivinessTypeActivity.this, GateLensSelectionActivity.class); intent.putExtra("type", type); intent.putExtra("cameraType", cameraType); intent.putExtra("rgbAndNirWidth", rgbAndNirWidth); intent.putExtra("rgbAndNirHeight", rgbAndNirHeight); intent.putExtra("depthWidth", depthWidth); intent.putExtra("depthHeight", depthHeight); startActivityForResult(intent , 100); } } @Override public void finish() { Intent intent = new Intent(); intent.putExtra("framesThreshold", framesThreshold); intent.putExtra("rgbLiveScore", rgbLiveScore); intent.putExtra("nirLiveScore", nirLiveScore); intent.putExtra("depthLiveScore", depthLiveScore); intent.putExtra("type", type); intent.putExtra("cameraType", cameraType); intent.putExtra("rgbAndNirWidth", rgbAndNirWidth); intent.putExtra("rgbAndNirHeight", rgbAndNirHeight); intent.putExtra("depthWidth", depthWidth); intent.putExtra("depthHeight", depthHeight); intent.putExtra("livingControl", livingControl); // 设置返回码和返回携带的数据 setResult(Activity.RESULT_OK, intent); super.finish(); } public void justify() { if (type == ONE) { type = ONE; rgbAndNirWidth = 640; rgbAndNirHeight = 480; } if (type == TWO) { type = TWO; rgbAndNirWidth = 640; rgbAndNirHeight = 480; } if (type == THREE) { type = THREE; } if (type == FOUR) { type = FOUR; } if (type == zero) { type = 0; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != Activity.RESULT_OK){ return; } switch (requestCode) { case 100: // 返回的结果是来自于Activity B type = data.getIntExtra("type" , 0); cameraType = data.getIntExtra("cameraType" , 0); rgbAndNirWidth = data.getIntExtra("rgbAndNirWidth" , 640); rgbAndNirHeight = data.getIntExtra("rgbAndNirHeight" , 480); depthWidth = data.getIntExtra("depthWidth" , 640); depthHeight = data.getIntExtra("depthHeight" , 400); break; } } public static String roundByScale(float numberValue) { // 构造方法的字符格式这里如果小数不足2位,会以0补足. DecimalFormat decimalFormat = new DecimalFormat("0.00"); // format 返回的是字符串 String resultNumber = decimalFormat.format(numberValue); return resultNumber; } }