package com.basic.security.fragment; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RadioButton; import android.widget.RelativeLayout; import android.widget.ScrollView; import android.widget.Spinner; import android.widget.TextView; import com.basic.security.base.BaseFragment; import com.basic.security.manager.BaseSettingManager; import com.basic.security.manager.CompanyManager; import com.basic.security.manager.DeviceManager; import com.basic.security.model.BaseSetting; import com.basic.security.model.ModelAdapter; import com.basic.security.utils.ButtonClickIntervalsUtils; import com.basic.security.utils.Constants; import com.basic.security.utils.ResolutionAdaptation; import com.basic.security.utils.ToastUtil; import com.basic.security.widget.CustomSpinner; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EFragment; import org.androidannotations.annotations.ViewById; import java.util.Objects; @EFragment public class BaseSettingFragment extends BaseFragment { @ViewById public RadioButton setting_register_rb_admin, auto_mode; @ViewById public CheckBox admin_normal_verify_phone, admin_normal_verify_idcard, admin_normal_verify_name, admin_idcard_verify_phone; @ViewById public CheckBox auto_normal_verify_phone, auto_normal_verify_idcard, auto_normal_verify_name, auto_idcard_verify_phone; @ViewById public CheckBox image_play_interval, detect_multiple_face; @ViewById public EditText login_expire_long, back_to_home, setting_face_et_pro_one, setting_face_et_pro_two, face_angle, image_play_time, open_door_duration; public boolean initRegisterRuleSpinner = false; //管理员授权注册 @ViewById public RadioButton admin_normal_verify, admin_idcard_verify; //自助注册 @ViewById public RadioButton auto_normal_verify, auto_idcard_verify; //自助注册显示 其中auto_sign_up_identity的不可见模式为invisible 占位隐藏 @ViewById public View auto_sign_up_identity, ll_register_self; //管理员授权注册显示 @ViewById public View setting_ll_admin; @ViewById public View list_view; @ViewById public ListView identityRecycleList; //新增开始 @ViewById public RadioButton pass_mode, visitor_mode; @ViewById public RelativeLayout setting_rl_pass_visitor_model; @ViewById public LinearLayout ll_confirm_pass_show; @ViewById public CheckBox relation_person, relation_device; @ViewById public EditText indoor_device_id, indoor_device_ip, no_face_delay, picture_rotation_angle; @ViewById public Spinner pass_mode_pinner, spinner_check_identity; @ViewById public TextView setting_tv_massage; public String[] passModeArray = {"允许通行", "有效时间内通行", "确认通行", "拒绝通行"}; public String device_pass_mode = "确认通行"; @ViewById public ScrollView scrollView; @ViewById public CheckBox open_door_password_enable; @ViewById public EditText open_door_password; @ViewById public CheckBox reboot_hour_enable; @ViewById public CustomSpinner reboot_hour; public String[] reboot_hour_array = new String[]{ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" }; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(ResolutionAdaptation.fragment_base_setting(), container, false); } @Click void list_view() { list_view.setVisibility(View.GONE); } private void init_reboot_hour(ModelAdapter baseSetting) { initRegisterRuleSpinner = true; ArrayAdapter adapter = new ArrayAdapter(getContext(), com.basic.security.utils.ResolutionAdaptation.spinner_item(), reboot_hour_array); reboot_hour.setPopupBackgroundResource(com.basic.security.utils.RUtils.R_color_press_menu_text); reboot_hour.setAdapter(adapter); if (baseSetting != null) { String reboot_hour_str = baseSetting.getString("reboot_hour"); if (!TextUtils.isEmpty(reboot_hour_str)) { for (int i = 0; i < reboot_hour_array.length; i++) { String item = reboot_hour_array[i]; if (item.equals(reboot_hour_str)) { reboot_hour.setSelection(i); break; } } } } } @Click public void setting_btn_save() { if (!ButtonClickIntervalsUtils.isCanClick()) { return; } ModelAdapter baseSetting = BaseSettingManager.getBaseSetting(); baseSetting.setString(BaseSetting.reboot_hour, reboot_hour_array[reboot_hour.getSelectedItemPosition()]); try { int et_time = Integer.parseInt(login_expire_long.getText().toString().trim()); if (et_time <= 0) { ToastUtil.show("管理员超时时间必须大于0"); return; } int return_time = Integer.parseInt(back_to_home.getText().toString().trim()); if (return_time <= 0) { ToastUtil.show("无操作返回时间必须大于0"); return; } int open_door_durationInt = Integer.parseInt(open_door_duration.getText().toString().trim()); if (open_door_durationInt <= 0) { ToastUtil.show("无操作返回时间必须大于0"); return; } int pic_time = Integer.parseInt(image_play_time.getText().toString().trim()); if (pic_time <= 0) { ToastUtil.show("图片轮播时间必须大于0"); return; } int one = Integer.parseInt(setting_face_et_pro_one.getText().toString().trim()); int two = Integer.parseInt(setting_face_et_pro_two.getText().toString().trim()); if (one <= 0 || two <= 0) { ToastUtil.show("占屏比数值必须大于0"); return; } if (one >= two) { ToastUtil.show("占屏比必须小于1"); return; } if ((float) (two / one) > 5) { ToastUtil.show("占屏比不能小于0.2"); return; } int angle = Integer.parseInt(face_angle.getText().toString().trim()); if (angle < 0 || angle > 30) { ToastUtil.show("人脸角度必须在0到30度之间"); return; } if (TextUtils.isEmpty(no_face_delay.getText().toString().trim())) { ToastUtil.show("请输入无人脸延时"); return; } if (TextUtils.isEmpty(picture_rotation_angle.getText().toString().trim())) { ToastUtil.show("请输入设备照片旋转角度"); return; } } catch (Exception e) { e.printStackTrace(); ToastUtil.show("数据有误,请重新输入"); return; } baseSetting.setTrueOne(BaseSetting.auto_mode, auto_mode.isChecked()); if (auto_mode.isChecked()) { if (!auto_normal_verify.isChecked() && !auto_idcard_verify.isChecked()) { ToastUtil.show("请选择一种验证方式"); return; } baseSetting.setTrueOne(BaseSetting.auto_normal_verify, auto_normal_verify.isChecked()); baseSetting.setTrueOne(BaseSetting.auto_normal_verify_phone, auto_normal_verify_phone.isChecked()); baseSetting.setTrueOne(BaseSetting.auto_normal_verify_idcard, auto_normal_verify_idcard.isChecked()); baseSetting.setTrueOne(BaseSetting.auto_normal_verify_name, auto_normal_verify_name.isChecked()); baseSetting.setTrueOne(BaseSetting.auto_idcard_verify, auto_idcard_verify.isChecked()); baseSetting.setTrueOne(BaseSetting.auto_idcard_verify_phone, auto_idcard_verify_phone.isChecked()); if (passModeArray[1].equals(passModeArray[spinner_check_identity.getSelectedItemPosition()])) { String checkedTimeRuleId = TimeRuleListDialogFragment.checkedTimeRuleId; if (TextUtils.isEmpty(checkedTimeRuleId)) { ToastUtil.show("请选择时间规则"); return; } baseSetting.setString(BaseSetting.auto_checked_time_rule_id, checkedTimeRuleId); } baseSetting.setString(BaseSetting.auto_register_rule, passModeArray[spinner_check_identity.getSelectedItemPosition()]); } baseSetting.setTrueOne(BaseSetting.admin_mode, setting_register_rb_admin.isChecked()); if (setting_register_rb_admin.isChecked()) { if (!admin_normal_verify.isChecked() && !admin_idcard_verify.isChecked()) { ToastUtil.show("请选择一种验证方式"); return; } baseSetting.setTrueOne(BaseSetting.admin_normal_verify, admin_normal_verify.isChecked()); baseSetting.setTrueOne(BaseSetting.admin_normal_verify_phone, admin_normal_verify_phone.isChecked()); baseSetting.setTrueOne(BaseSetting.admin_normal_verify_idcard, admin_normal_verify_idcard.isChecked()); baseSetting.setTrueOne(BaseSetting.admin_normal_verify_name, admin_normal_verify_name.isChecked()); baseSetting.setTrueOne(BaseSetting.admin_idcard_verify, admin_idcard_verify.isChecked()); baseSetting.setTrueOne(BaseSetting.admin_idcard_verify_phone, admin_idcard_verify_phone.isChecked()); } baseSetting.setTrueOne(BaseSetting.pass_mode, pass_mode.isChecked()); baseSetting.setTrueOne(BaseSetting.visitor_mode, visitor_mode.isChecked()); baseSetting.setString(BaseSetting.device_pass_mode, device_pass_mode); if ("确认通行".equals(device_pass_mode)) { baseSetting.setTrueOne(BaseSetting.relation_person, relation_person.isChecked()); baseSetting.setTrueOne(BaseSetting.relation_device, relation_device.isChecked()); if (TextUtils.isEmpty(indoor_device_id.getText().toString().trim()) || TextUtils.isEmpty(indoor_device_ip.getText().toString().trim())) { ToastUtil.show("请输入确认设备信息"); return; } baseSetting.setString(BaseSetting.indoor_device_id, indoor_device_id.getText().toString().trim()); baseSetting.setString(BaseSetting.indoor_device_ip, indoor_device_ip.getText().toString().trim()); } String open_door_password_enableStr = open_door_password_enable.isChecked() ? Constants.TRUE : Constants.FALSE; String open_door_passwordStr = open_door_password.getText().toString().trim(); baseSetting.setString(BaseSetting.open_door_password_enable, open_door_password_enableStr); baseSetting.setString(BaseSetting.open_door_password, open_door_passwordStr); if (open_door_password_enableStr.equals(Constants.TRUE) && TextUtils.isEmpty(open_door_passwordStr)) { ToastUtil.show("开门密码不能为空"); return; } baseSetting.setString(BaseSetting.reboot_hour_enable, reboot_hour_enable.isChecked() ? Constants.TRUE : Constants.FALSE); baseSetting.setString(BaseSetting.login_expire_long, login_expire_long.getText().toString().trim()); baseSetting.setString(BaseSetting.back_to_home, back_to_home.getText().toString().trim()); baseSetting.setString(BaseSetting.open_door_duration, open_door_duration.getText().toString().trim()); String face_one = setting_face_et_pro_one.getText().toString().trim(); String face_two = setting_face_et_pro_two.getText().toString().trim(); baseSetting.setString(BaseSetting.face_ratio, face_one + "/" + face_two); baseSetting.setString(BaseSetting.face_angle, face_angle.getText().toString().trim()); baseSetting.setTrueOne(BaseSetting.image_play_interval, image_play_interval.isChecked()); baseSetting.setString(BaseSetting.image_play_time, image_play_time.getText().toString().trim()); baseSetting.setTrueOne(BaseSetting.detect_multiple_face, detect_multiple_face.isChecked()); baseSetting.setString(BaseSetting.no_face_delay, no_face_delay.getText().toString().trim()); baseSetting.setString(BaseSetting.picture_rotation_angle, picture_rotation_angle.getText().toString().trim()); baseSetting.setString("company_id", CompanyManager.getCompanyId()); baseSetting.setString("device_id", DeviceManager.getDeviceId()); baseSetting.setString(Constants.TABLE, BaseSetting.tableName); BaseSettingManager.saveBaseSetting(baseSetting); ToastUtil.show("保存成功"); mainActivity().fragment_toolbar.toggleGuestModeButton(); } @AfterViews public void afterViews() { admin_normal_verify.setOnCheckedChangeListener((buttonView, isChecked) -> { if (admin_normal_verify.isChecked()) { admin_idcard_verify.setChecked(false); isShowTop(true); } else { admin_idcard_verify.setChecked(true); isShowTop(false); } }); admin_idcard_verify.setOnCheckedChangeListener((buttonView, isChecked) -> { if (admin_idcard_verify.isChecked()) { admin_normal_verify.setChecked(false); isShowTop(false); } else { admin_normal_verify.setChecked(true); isShowTop(true); } }); auto_normal_verify.setOnCheckedChangeListener((buttonView, isChecked) -> { if (auto_normal_verify.isChecked()) { auto_idcard_verify.setChecked(false); isNormalShowTop(true); } else { auto_idcard_verify.setChecked(true); isNormalShowTop(false); } }); auto_idcard_verify.setOnCheckedChangeListener((buttonView, isChecked) -> { if (auto_idcard_verify.isChecked()) { auto_normal_verify.setChecked(false); isNormalShowTop(false); } else { auto_normal_verify.setChecked(true); isNormalShowTop(true); } }); setting_register_rb_admin.setOnCheckedChangeListener((buttonView, isChecked) -> { if (setting_register_rb_admin.isChecked()) { setting_ll_admin.setVisibility(View.VISIBLE); ll_register_self.setVisibility(View.GONE); setting_rl_pass_visitor_model.setVisibility(View.GONE); adminRegisterIsCheck(true); if (admin_normal_verify.isChecked()) { isShowTop(true); } } }); auto_mode.setOnCheckedChangeListener((buttonView, isChecked) -> { if (auto_mode.isChecked()) { setting_ll_admin.setVisibility(View.GONE); ll_register_self.setVisibility(View.VISIBLE); setting_rl_pass_visitor_model.setVisibility(View.GONE); adminRegisterIsCheck(false); } }); pass_mode.setOnCheckedChangeListener((buttonView, isChecked) -> { if (pass_mode.isChecked()) { setting_tv_massage.setText("提示:通行模式下,不允许进行注册,此设备只做通行"); ll_register_self.setVisibility(View.GONE); setting_ll_admin.setVisibility(View.GONE); setting_rl_pass_visitor_model.setVisibility(View.VISIBLE); auto_sign_up_identity.setVisibility(View.GONE); } }); visitor_mode.setOnCheckedChangeListener((buttonView, isChecked) -> { if (visitor_mode.isChecked()) { setting_tv_massage.setText("提示:访客模式下,可以对关联设备做访客登记"); ll_register_self.setVisibility(View.GONE); setting_ll_admin.setVisibility(View.GONE); setting_rl_pass_visitor_model.setVisibility(View.VISIBLE); auto_sign_up_identity.setVisibility(View.GONE); } }); } public void hide() { super.hide(); } public void show() { super.show(); scrollView.fullScroll(ScrollView.FOCUS_UP); initBaseSettingUI(); } private void isNormalShowTop(boolean showTop) { if (showTop) { auto_idcard_verify_phone.setClickable(false); auto_idcard_verify_phone.setChecked(false); auto_normal_verify_phone.setClickable(true); auto_normal_verify_idcard.setClickable(true); auto_normal_verify_name.setClickable(true); } else { auto_idcard_verify_phone.setClickable(true); auto_normal_verify_phone.setClickable(false); auto_normal_verify_phone.setChecked(false); auto_normal_verify_idcard.setClickable(false); auto_normal_verify_idcard.setChecked(false); auto_normal_verify_name.setClickable(false); auto_normal_verify_name.setChecked(false); } } private void isShowTop(boolean showTop) { if (showTop) { admin_idcard_verify_phone.setClickable(false); admin_normal_verify_phone.setClickable(true); admin_normal_verify_idcard.setClickable(true); admin_normal_verify_name.setClickable(true); } else { admin_idcard_verify_phone.setClickable(true); admin_normal_verify_phone.setClickable(false); admin_normal_verify_idcard.setClickable(false); admin_normal_verify_name.setClickable(false); } } public void initBaseSettingUI() { list_view.setVisibility(View.GONE); ModelAdapter baseSetting = BaseSettingManager.getBaseSetting(); init_reboot_hour(baseSetting); reboot_hour_enable.setChecked(!Constants.FALSE.equals(baseSetting.getString(com.basic.security.model.BaseSetting.reboot_hour_enable))); String[] devicePassModeArray = {"确认通行", "允许通行"}; ArrayAdapter adapter = new ArrayAdapter(getContext(), com.basic.security.utils.ResolutionAdaptation.spinner_item(), devicePassModeArray); pass_mode_pinner.setPopupBackgroundResource(com.basic.security.utils.RUtils.R_color_press_menu_text); pass_mode_pinner.setAdapter(adapter); pass_mode_pinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView parent, View view, int position, long id) { device_pass_mode = devicePassModeArray[position]; if (position == 0) { ll_confirm_pass_show.setVisibility(View.VISIBLE); } else { ll_confirm_pass_show.setVisibility(View.GONE); } } public void onNothingSelected(AdapterView parent) { } }); if (baseSetting != null) { String device_pass_mode = baseSetting.getString("device_pass_mode"); if (!TextUtils.isEmpty(device_pass_mode)) { for (int i = 0; i < devicePassModeArray.length; i++) { String item = devicePassModeArray[i]; if (item.equals(device_pass_mode)) { pass_mode_pinner.setSelection(i); break; } } } } initRegisterRuleSpinner = true; ArrayAdapter spinnerCheckIdentityAdapter = new ArrayAdapter(Objects.requireNonNull(getContext()), com.basic.security.utils.ResolutionAdaptation.spinner_item(), devicePassModeArray); spinner_check_identity.setPopupBackgroundResource(com.basic.security.utils.RUtils.R_color_press_menu_text); spinner_check_identity.setAdapter(spinnerCheckIdentityAdapter); spinner_check_identity.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView parent, View view, int position, long id) { if (position == 1 && !initRegisterRuleSpinner) { mainActivity().fragment_time_rule_list_dialog .showTimeRuleListDialog(baseSetting.getString("auto_checked_time_rule_id"), selectedTimeRuleId -> { } ); } initRegisterRuleSpinner = false; } public void onNothingSelected(AdapterView parent) { } }); if (baseSetting != null) { String signUpRule = baseSetting.getString("auto_register_rule"); if (!TextUtils.isEmpty(signUpRule)) { for (int i = 0; i < devicePassModeArray.length; i++) { String item = devicePassModeArray[i]; if (item.equals(signUpRule)) { spinner_check_identity.setSelection(i); break; } } } } if (baseSetting.getOneTrue("auto_mode")) { auto_mode.setChecked(true); if (baseSetting.getOneTrue("auto_normal_verify")) { auto_normal_verify.setChecked(true); auto_idcard_verify.setChecked(false); isShowTop(true); } else { auto_normal_verify.setChecked(false); auto_idcard_verify.setChecked(true); isShowTop(false); } } else if ("1".equals(baseSetting.getString("pass_mode"))) { pass_mode.setChecked(true); } else if ("1".equals(baseSetting.getString("visitor_mode"))) { visitor_mode.setChecked(true); } else { setting_register_rb_admin.setChecked(true); auto_sign_up_identity.setVisibility(View.GONE); if (baseSetting.getOneTrue("admin_normal_verify")) { admin_idcard_verify.setChecked(false); isShowTop(true); } else { admin_idcard_verify.setChecked(true); isShowTop(false); } } if (baseSetting.getOneTrue("admin_normal_verify")) { admin_normal_verify.setChecked(true); } else { admin_normal_verify.setChecked(false); } if (baseSetting.getOneTrue("auto_normal_verify_phone")) { auto_normal_verify_phone.setChecked(true); } else { auto_normal_verify_phone.setChecked(false); } if (baseSetting.getOneTrue("auto_normal_verify_idcard")) { auto_normal_verify_idcard.setChecked(true); } else { auto_normal_verify_idcard.setChecked(false); } if (baseSetting.getOneTrue("auto_normal_verify_name")) { auto_normal_verify_name.setChecked(true); } else { auto_normal_verify_name.setChecked(false); } if (baseSetting.getOneTrue("auto_idcard_verify_phone")) { auto_idcard_verify_phone.setChecked(true); } else { auto_idcard_verify_phone.setChecked(false); } admin_idcard_verify_phone.setChecked(baseSetting.getOneTrue("admin_idcard_verify_phone")); admin_normal_verify_phone.setChecked(baseSetting.getOneTrue("admin_normal_verify_phone")); admin_normal_verify_idcard.setChecked(baseSetting.getOneTrue("admin_normal_verify_idcard")); admin_normal_verify_name.setChecked(baseSetting.getOneTrue("admin_normal_verify_name")); indoor_device_id.setText(baseSetting.getString("indoor_device_id")); indoor_device_ip.setText(baseSetting.getString("indoor_device_ip")); login_expire_long.setText(baseSetting.getString("login_expire_long")); back_to_home.setText(baseSetting.getString("back_to_home")); String face_ratio = baseSetting.getString("face_ratio"); if (!TextUtils.isEmpty(face_ratio)) { String[] split = face_ratio.split("/"); setting_face_et_pro_one.setText(split[0]); setting_face_et_pro_two.setText(split[1]); } face_angle.setText(baseSetting.getString("face_angle")); if (baseSetting.getOneTrue("image_play_interval")) { image_play_interval.setChecked(true); } image_play_time.setText(baseSetting.getString("image_play_time")); if (baseSetting.getOneTrue("detect_multiple_face")) { detect_multiple_face.setChecked(true); } no_face_delay.setText(baseSetting.getString("no_face_delay")); picture_rotation_angle.setText(baseSetting.getString("picture_rotation_angle")); open_door_password.setText(baseSetting.getString(com.basic.security.model.BaseSetting.open_door_password)); open_door_password_enable.setChecked(Constants.TRUE.equals(baseSetting.getString(com.basic.security.model.BaseSetting.open_door_password_enable))); } private void adminRegisterIsCheck(boolean showSelfRegister) { if (showSelfRegister) { setting_ll_admin.setVisibility(View.VISIBLE); ll_register_self.setVisibility(View.GONE); auto_sign_up_identity.setVisibility(View.GONE); } else { setting_ll_admin.setVisibility(View.GONE); ll_register_self.setVisibility(View.VISIBLE); auto_sign_up_identity.setVisibility(View.VISIBLE); } } @Click public void open_system_setting() { startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0); } }