package com.doumee.keyCabinet.ui.face; import androidx.annotation.Nullable; import android.graphics.Color; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.text.method.ReplacementTransformationMethod; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import com.baidu.idl.main.facesdk.FaceAuth; import com.baidu.idl.main.facesdk.callback.Callback; import com.doumee.keyCabinet.R; import com.doumee.keyCabinet.base.MyBaseActivity; import com.doumee.keyCabinet.databinding.ActivationActivityBinding; import com.doumee.lib_coremodel.bean.event.ActionEventData; import com.example.datalibrary.utils.NetUtil; import dagger.hilt.android.AndroidEntryPoint; @AndroidEntryPoint public class ActivationActivity extends MyBaseActivity { private FaceAuth faceAuth; // 拼接后的激活码 private String end; @Override public int getLayoutId() { return R.layout.activation_activity; } @Override public void initView(@Nullable Bundle savedInstanceState) { isToGuild = false; normalConfig(); getDB().setModel(getVM()); faceAuth = new FaceAuth(); //禁止后续输入 getDB().activityEtTwo.setFocusable(false); getDB().activityEtTwo.setFocusableInTouchMode(false); getDB().activityEtTwo.requestFocus(); getDB().activityEtThree.setFocusable(false); getDB().activityEtThree.setFocusableInTouchMode(false); getDB().activityEtThree.requestFocus(); getDB().activityEtFour.setFocusable(false); getDB().activityEtFour.setFocusableInTouchMode(false); getDB().activityEtFour.requestFocus(); initActivation(); } @Override public void initData(@Nullable Bundle savedInstanceState) { } @Override protected void doRegister(int type, ActionEventData data) { switch (type){ case 1: jh(); break; default: break; } } private void jh(){ if (getDB().activityEtOne.getText().toString().trim().length() == 4 && getDB().activityEtTwo.getText().toString().trim().length() == 4 && getDB().activityEtThree.getText().toString().trim().length() == 4 && getDB().activityEtFour.getText().toString().trim().length() == 4) { String etOne = getDB().activityEtOne.getText().toString().trim(); String etTwo = getDB().activityEtTwo.getText().toString().trim(); String etThree = getDB().activityEtThree.getText().toString().trim(); String etFour = getDB().activityEtFour.getText().toString().trim(); end = etOne + "-" + etTwo + "-" + etThree + "-" + etFour; } boolean onNetworkConnected = NetUtil.isNetworkConnected(this); if (onNetworkConnected) { faceAuth.initLicenseOnLine(this, end, new Callback() { @Override public void onResponse(final int code, final String response) { if (code == 0) { runOnUiThread(new Runnable() { @Override public void run() { getDB().accreditOnhintTv.setText(""); //激活成功 finish(); } }); } else { runOnUiThread(new Runnable() { @Override public void run() { getDB().accreditOnhintTv.setText(getString(R.string.activation_err) + code + " " + response); initShake(); } }); } } }); } else { getDB().accreditOnhintTv.setText(getString(R.string.activation_tip1)); initShake(); } } private void initActivation() { getDB().activityEtOne.setTransformationMethod(new AllCapTransformationMethod(true)); getDB().activityEtTwo.setTransformationMethod(new AllCapTransformationMethod(true)); getDB().activityEtThree.setTransformationMethod(new AllCapTransformationMethod(true)); getDB().activityEtFour.setTransformationMethod(new AllCapTransformationMethod(true)); getDB().activityEtOne.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (getDB().activityEtOne.length() == 0) { getDB().activityOneView.setBackgroundColor(Color.parseColor("#666666")); } else if (getDB().activityEtOne.length() == 4) { getDB().activityOneView.setBackgroundColor(Color.parseColor("#666666")); getDB().activityEtTwo.setFocusable(true); getDB().activityEtTwo.setFocusableInTouchMode(true); getDB().activityEtTwo.requestFocus(); getDB().activityEtTwo.setText(getDB().activityEtTwo.getText().toString().trim() + " "); getDB().activityEtTwo.setSelection(getDB().activityEtTwo.getText().length()); } else if (getDB().activityEtOne.length() < 4) { getDB().activityOneView.setBackgroundColor(Color.parseColor("#FFFFFF")); } } }); getDB().activityEtTwo.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (getDB().activityEtTwo.length() == 0) { getDB().activityEtOne.setFocusable(true); getDB().activityEtOne.setFocusableInTouchMode(true); getDB().activityEtOne.requestFocus(); getDB().activityTwoView.setBackgroundColor(Color.parseColor("#666666")); } else if (getDB().activityEtTwo.getText().toString().trim().length() == 4) { getDB().activityTwoView.setBackgroundColor(Color.parseColor("#666666")); getDB().activityEtThree.setFocusable(true); getDB().activityEtThree.setFocusableInTouchMode(true); getDB().activityEtThree.requestFocus(); getDB().activityEtThree.setText(getDB().activityEtThree.getText().toString().trim() + " "); getDB().activityEtThree.setSelection(getDB().activityEtThree.getText().length()); } else if (getDB().activityEtTwo.getText().toString().trim().length() < 4) { getDB().activityTwoView.setBackgroundColor(Color.parseColor("#FFFFFF")); } } }); getDB().activityEtThree.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (getDB().activityEtThree.length() == 0) { getDB().activityEtTwo.setFocusable(true); getDB().activityEtTwo.setFocusableInTouchMode(true); getDB().activityEtTwo.requestFocus(); getDB().activityThreeView.setBackgroundColor(Color.parseColor("#666666")); } else if (getDB().activityEtThree.getText().toString().trim().length() == 4) { getDB().activityThreeView.setBackgroundColor(Color.parseColor("#666666")); getDB().activityEtFour.setFocusable(true); getDB().activityEtFour.setFocusableInTouchMode(true); getDB().activityEtFour.requestFocus(); getDB().activityEtFour.setText(getDB().activityEtFour.getText().toString().trim() + " "); getDB().activityEtFour.setSelection(getDB().activityEtFour.getText().length()); } else if (getDB().activityEtThree.getText().toString().trim().length() < 4) { getDB().activityThreeView.setBackgroundColor(Color.parseColor("#FFFFFF")); } } }); getDB().activityEtFour.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (getDB().activityEtFour.length() == 0) { getDB().activityEtThree.setFocusable(true); getDB().activityEtThree.setFocusableInTouchMode(true); getDB().activityEtThree.requestFocus(); getDB().activityFourView.setBackgroundColor(Color.parseColor("#666666")); } else if (getDB().activityEtFour.getText().toString().trim().length() == 4) { getDB().activityFourView.setBackgroundColor(Color.parseColor("#666666")); getDB().accreditOnBtn.setEnabled(true); getDB().accreditOnBtn.setBackgroundResource(R.drawable.shape_r40_ac_bg); getDB().accreditOnBtn.setTextColor(Color.parseColor("#FFFFFF")); } else if (getDB().activityEtFour.getText().toString().trim().length() < 4) { getDB().activityFourView.setBackgroundColor(Color.parseColor("#FFFFFF")); getDB().accreditOnBtn.setBackgroundResource(R.drawable.shape_r40_999_bg); getDB().accreditOnBtn.setEnabled(false); getDB().accreditOnBtn.setTextColor(Color.parseColor("#666666")); } } }); } // 为组件设置一个抖动效果 private void initShake() { Animation shake = AnimationUtils.loadAnimation(this.getApplicationContext(), R.anim.shake); getDB().activityEtOne.startAnimation(shake); getDB().activityEtTwo.startAnimation(shake); getDB().activityEtThree.startAnimation(shake); getDB().activityEtFour.startAnimation(shake); // 改变view的颜色 getDB().activityOneView.setBackgroundColor(Color.parseColor("#F34B56")); getDB().activityTwoView.setBackgroundColor(Color.parseColor("#FF0033")); getDB().activityThreeView.setBackgroundColor(Color.parseColor("#FF0033")); getDB().activityFourView.setBackgroundColor(Color.parseColor("#FF0033")); } public static class AllCapTransformationMethod extends ReplacementTransformationMethod { private char[] lower = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; private char[] upper = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; private boolean allUpper = false; public AllCapTransformationMethod(boolean needUpper) { this.allUpper = needUpper; } @Override protected char[] getOriginal() { if (allUpper) { return lower; } else { return upper; } } @Override protected char[] getReplacement() { if (allUpper) { return upper; } else { return lower; } } } }