package com.basic.security.fragment; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.text.TextUtils; import android.view.MotionEvent; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Spinner; import android.widget.TextView; import com.basic.security.R; import com.basic.security.base.BaseFragment; import com.basic.security.manager.BaseSettingManager; import com.basic.security.manager.PersonManager; import com.basic.security.manager.impl.cblite.VisitManager; import com.basic.security.model.ModelAdapter; import com.basic.security.utils.DateUtil; import com.basic.security.utils.ToastUtil; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EFragment; import org.androidannotations.annotations.UiThread; import org.androidannotations.annotations.ViewById; import java.text.SimpleDateFormat; @EFragment(R.layout.fragment_face_detail) public class FaceDetailFragment extends BaseFragment { public boolean initSpinner = true; @ViewById TextView name, phone, idcard_number, register_time, register_type, last_visit_time; @ViewById EditText name_input, phone_input, idcard_number_input; @ViewById ImageView face, face_detail_name_need, face_detail_phone_need, face_detail_id_need, show_name_in_put, show_phone_in_put, show_id_in_put; @ViewById LinearLayout ll_id_card, ll_face_detail; @ViewById Spinner spinner_register_model; // 通行方式 String[] arr = {"允许通行" // , "有效时间内通行", "确认通行", "拒绝通行" }; private String verify_status = ""; private ModelAdapter personDocument = null; private boolean showNameInPut = false; private boolean showPhoneInPut = false; private boolean showIdCardInPut = false; // 点击头像在获取的头像与身份证上的头像转换 private int photoClickTimes = 0; private float downX = 0; private float moveX = 51; private boolean checkedTimeRuleChanged = false; private boolean isRegister = false; @Click void show_name_in_put() { if (personDocument != null) { showNameInPut = true; name_input.setVisibility(View.VISIBLE); name.setVisibility(View.GONE); name_input.setText(personDocument.getString("name") == null ? "" : personDocument.getString("name")); } } @Click void show_phone_in_put() { if (personDocument != null) { showPhoneInPut = true; phone_input.setVisibility(View.VISIBLE); phone.setVisibility(View.GONE); phone_input.setText(personDocument.getString("phone") == null ? "" : personDocument.getString("phone")); } } @Click void show_id_in_put() { if (personDocument != null) { showIdCardInPut = true; idcard_number_input.setVisibility(View.VISIBLE); idcard_number.setVisibility(View.GONE); idcard_number_input.setText(personDocument.getString("id_card_number") == null ? "" : personDocument.getString("id_card_number")); } } @Click void face() { face.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: downX = event.getX(); break; case MotionEvent.ACTION_MOVE: moveX = event.getX() - downX; break; case MotionEvent.ACTION_UP: break; } return false; } }); if (!TextUtils.isEmpty(verify_status) && (TextUtils.equals(verify_status, "已经验证身份证") || TextUtils.equals(verify_status, "未验证身份证")) && Math.abs(moveX) > 50) { moveX = 0; photoClickTimes++; byte[] blob; try { if (photoClickTimes % 2 == 0) { blob = personDocument.getBlob("camera_image_path"); } else { blob = personDocument.getBlob("id_card_image_path"); } if (blob != null) { // byte[] data = blob; if (blob.length != 0) { Bitmap bitmap = BitmapFactory.decodeByteArray(blob, 0, blob.length); face.setImageBitmap(bitmap); } } } catch (Exception e) { e.printStackTrace(); } } } public void setPerson(ModelAdapter personDocument) { this.personDocument = personDocument; show_name_in_put.setVisibility(View.GONE); show_phone_in_put.setVisibility(View.GONE); show_id_in_put.setVisibility(View.GONE); idcard_number.setTextColor(Color.parseColor("#FFFFFFFF")); clearInPutText(); photoClickTimes = 0; initSpinner(personDocument); if (personDocument == null) { // 没有人员时 face.setVisibility(View.GONE); name.setText(""); phone.setText(""); idcard_number.setText(""); register_time.setText(""); register_type.setText(""); last_visit_time.setText(""); last_visit_time.setText("暂无"); phone_input.setVisibility(View.GONE); phone.setVisibility(View.GONE); name_input.setVisibility(View.GONE); name.setVisibility(View.GONE); idcard_number_input.setVisibility(View.GONE); idcard_number.setVisibility(View.GONE); if (mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_compare_success || mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_face || mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_idcard || mainActivity().currentFragment == mainActivity().fragment_su_logged_nic_wait_detail || mainActivity().currentFragment == mainActivity().fragment_su_logged_nic_wait_face || mainActivity().currentFragment == mainActivity().fragment_person_manage || mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_idcard) { if (BaseSettingManager.isAutoSignUpMode()) { String signUpRule = BaseSettingManager.getDefaultRegisterRule(); if (!TextUtils.isEmpty(signUpRule)) { for (int i = 0; i < arr.length; i++) { String item = arr[i]; if (item.equals(signUpRule)) { spinner_register_model.setSelection(i); break; } } } } } // 默认textview,edittext隐藏 } else if ("1".equals(personDocument.getString("auto_init"))) { face.setVisibility(View.VISIBLE); name_input.setVisibility(View.GONE); name.setVisibility(View.VISIBLE); phone_input.setVisibility(View.GONE); phone.setVisibility(View.VISIBLE); ll_id_card.setVisibility(View.VISIBLE); idcard_number_input.setVisibility(View.GONE); name.setText(personDocument.getString("name")); phone.setText(personDocument.getString("phone")); idcard_number.setText(personDocument.getString("id_card_number")); byte[] blob = personDocument.getBlob("camera_image_path"); if (blob != null) { byte[] data = blob; if (data.length != 0) { Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); face.setImageBitmap(bitmap); } } else { face.setImageResource(R.drawable.u1280); } register_type.setText(personDocument.getString("sign_up_method")); String lastTime = VisitManager.getLastVisitTime(personDocument.getId()); if (TextUtils.isEmpty(lastTime)) { last_visit_time.setText("暂无"); } else { last_visit_time.setText(DateUtil.formatTime(Long.parseLong(lastTime), "yyyy-MM-dd HH:mm:ss")); } } else { // ======================姓名 手机号 身份证号 开始============================= verify_status = personDocument.getString("verify_status"); name_input.setVisibility(View.GONE); name.setVisibility(View.VISIBLE); phone_input.setVisibility(View.GONE); phone.setVisibility(View.VISIBLE); idcard_number_input.setVisibility(View.GONE); idcard_number.setVisibility(View.VISIBLE); ll_id_card.setVisibility(View.VISIBLE); name.setText(personDocument.getString("name") == null ? "" : personDocument.getString("name")); phone.setText(personDocument.getString("phone") == null ? "" : personDocument.getString("phone")); idcard_number.setText(personDocument.getString("id_card_number") == null ? "" : personDocument.getString("id_card_number")); // 已经验证身份证或者未验证身份证, 手机号:edittext if (!TextUtils.isEmpty(verify_status) && ((TextUtils.equals(verify_status, "已经验证身份证") || TextUtils.equals(verify_status, "未验证身份证")))) { showTextOrEditText(verify_status); if (TextUtils.equals(verify_status, "未验证身份证")) { // 注释解决如果未注册中第一个人为身份证验证--未注册,从其他页面跳转过来不显示请在刷卡区验证身份证 // if (mainActivity().currentFragment == mainActivity().fragment_person_manage // || mainActivity().currentFragment == mainActivity().fragment_admin_face_login // || mainActivity().currentFragment == mainActivity().fragment_admin_password_login) { idcard_number.setText("请在刷卡区验证身份证"); idcard_number.setTextColor(Color.parseColor("#4BA6AD")); // } } } // 不需要验证身份证 (姓名 身份证号(可选) 手机号:edittext) if (!TextUtils.isEmpty(verify_status) && TextUtils.equals(verify_status, "不需要验证身份证")) { showTextOrEditText(verify_status); } // ======================姓名 手机号 身份证号 结束============================= face.setVisibility(View.VISIBLE); byte[] blob = personDocument.getBlob("camera_image_path"); if (blob != null) { try { byte[] data = blob; if (data.length != 0) { Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); face.setImageBitmap(bitmap); // 防止有大图OOM,采用软引用,写了一个工具类,暂时没用=======> // face.setImageBitmap(BitmapUtil.byteToBitmap(data)); //<======== } } catch (Exception e) { face.setImageResource(R.drawable.u1280); e.printStackTrace(); } } else { face.setImageResource(R.drawable.u1280); } try { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Long sign_up_time = Long.parseLong(personDocument.getString("sign_up_time")); if (sign_up_time != null) { register_time.setText(format.format(sign_up_time)); } } catch (Exception e) { e.printStackTrace(); } String type = personDocument.getString("sign_up_method"); if ("自助注册".equals(type)) { if ("不需要验证身份证".equals(personDocument.getString("verify_status"))) { type = type + "-普通验证"; } else { type = type + "-身份证验证"; } } else if ("管理员注册".equals(type)) { if ("不需要验证身份证".equals(personDocument.getString("verify_status"))) { type = "人工注册-普通验证"; } else { type = "人工注册-身份证验证"; } } register_type.setText(type); String lastTime = VisitManager.getLastVisitTime(personDocument.getId()); if (TextUtils.isEmpty(lastTime)) { last_visit_time.setText("暂无"); } else { last_visit_time.setText(DateUtil.formatTime(Long.parseLong(lastTime), "yyyy-MM-dd HH:mm:ss")); } } } private void initSpinner(ModelAdapter personDocument) { initSpinner = true; spinner_register_model.setEnabled(false); ArrayAdapter adapter = new ArrayAdapter(getContext(), R.layout.spinner_item, arr); spinner_register_model.setPopupBackgroundResource(R.color.press_menu_text); spinner_register_model.setAdapter(adapter); spinner_register_model.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { if (position == 1 && !initSpinner) { mainActivity().fragment_face_detail_time.checkPassTime(personDocument.getString("checked_time_rule_id")); checkedTimeRuleChanged = true; } initSpinner = false; } @Override public void onNothingSelected(AdapterView parent) { } }); if (personDocument != null) { String signUpRule = personDocument.getString("sign_up_rule"); if (!TextUtils.isEmpty(signUpRule)) { for (int i = 0; i < arr.length; i++) { String item = arr[i]; if (item.equals(signUpRule)) { spinner_register_model.setSelection(i); break; } } } } } // 根据新的需求,如果可以输入,为空时直接显示输入框 private void showTextOrEditText(String verify_status) { if (!TextUtils.isEmpty(verify_status) && TextUtils.equals(verify_status, "不需要验证身份证")) { if (TextUtils.isEmpty(personDocument.getString("name"))) { showNameInPut = true; name_input.setVisibility(View.VISIBLE); name.setVisibility(View.GONE); } else { showNameInPut = false; name_input.setVisibility(View.GONE); name.setVisibility(View.VISIBLE); name.setText(personDocument.getString("name")); show_name_in_put.setVisibility(View.VISIBLE); } if (TextUtils.isEmpty(personDocument.getString("id_card_number"))) { showIdCardInPut = true; idcard_number_input.setVisibility(View.VISIBLE); idcard_number.setVisibility(View.GONE); } else { showIdCardInPut = false; idcard_number_input.setVisibility(View.GONE); idcard_number.setVisibility(View.VISIBLE); idcard_number.setText(personDocument.getString("id_card_number")); show_id_in_put.setVisibility(View.VISIBLE); } } if (TextUtils.isEmpty(personDocument.getString("phone"))) { showPhoneInPut = true; phone_input.setVisibility(View.VISIBLE); phone.setVisibility(View.GONE); } else { phone_input.setVisibility(View.GONE); showPhoneInPut = false; phone.setVisibility(View.VISIBLE); phone.setText(personDocument.getString("phone")); show_phone_in_put.setVisibility(View.VISIBLE); } } // 初始化显示框 public void clearInPutText() { name_input.setText(""); phone_input.setText(""); idcard_number_input.setText(""); showNameInPut = false; showPhoneInPut = false; showIdCardInPut = false; } @UiThread public void setIDCardData() { if (idCard != null) { name.setVisibility(View.VISIBLE); idcard_number.setVisibility(View.VISIBLE); name.setText(idCard.name); idcard_number.setText(idCard.cardNumber); } } public boolean detailMessageIsComplete() { ModelAdapter personDocument = mainActivity().fragment_person_manage.selectedPersonDocument; if (personDocument != null) { String name = personDocument.getString("name"); String id_card_number = personDocument.getString("id_card_number"); String phone_number = personDocument.getString("phone"); String sign_up_method = personDocument.getString("sign_up_method"); if ("已注册".equals(personDocument.getString("sign_up_status"))) { isRegister = true; } else { isRegister = false; } if ("自助注册".equals(sign_up_method)) { if ("不需要验证身份证".equals(personDocument.getString("verify_status"))) { if (BaseSettingManager.isAutoSignUpNotIDCardModeNeedName()) { if (TextUtils.isEmpty(name)) { if (isRegister) { ToastUtil.show("姓名不能为空"); } return false; } } if (BaseSettingManager.isAutoSignUpNotIDCardModeNeedIDNumber()) { if (TextUtils.isEmpty(id_card_number)) { if (isRegister) { ToastUtil.show("身份证号不能为空"); } return false; } } if (BaseSettingManager.isAutoSignUpNotIDCardModeNeedPhone()) { if (TextUtils.isEmpty(phone_number)) { ToastUtil.show("手机号不能为空"); return false; } } } else { if (BaseSettingManager.isAutoSignUpIDCardModeNeedPhone()) { if (TextUtils.isEmpty(phone_number)) { if (isRegister) { ToastUtil.show("手机号不能为空"); } return false; } } } } if ("管理员注册".equals(sign_up_method)) { if ("不需要验证身份证".equals(personDocument.getString("verify_status"))) { if (BaseSettingManager.adminNormalSignUpModeNeedName()) { if (TextUtils.isEmpty(name)) { if (isRegister) { ToastUtil.show("姓名不能为空"); } return false; } } if (BaseSettingManager.adminNormalSignUpModeNeedIDNumber()) { if (TextUtils.isEmpty(id_card_number)) { if (isRegister) { ToastUtil.show("身份证号不能为空"); } return false; } } if (BaseSettingManager.adminNormalSignUpModeNeedPhone()) { if (TextUtils.isEmpty(phone_number)) { if (isRegister) { ToastUtil.show("手机号不能为空"); } return false; } } } else { if (BaseSettingManager.adminIDCardSignUpModeNeedPhone()) { if (TextUtils.isEmpty(phone_number)) { if (isRegister) { ToastUtil.show("手机号不能为空"); } return false; } } if (BaseSettingManager.isAdminAuthSignUpModeNeedIdCard()) { if (TextUtils.isEmpty(id_card_number)) { if (isRegister) { ToastUtil.show("身份证号不能为空"); } return false; } } } } } return true; } public String getInPutName() { ModelAdapter personDocument = mainActivity().fragment_person_manage.selectedPersonDocument; if ("1".equals(personDocument.getString("auto_init"))) { return "系统管理员"; } if (!TextUtils.isEmpty(verify_status) && (TextUtils.equals(verify_status, "已经验证身份证") || TextUtils.equals(verify_status, "未验证身份证"))) { if (mainActivity().fragment_person_manage.needIdCardInfo()) { return name.getText().toString().trim(); } return personDocument.getString("name"); } if (!TextUtils.isEmpty(verify_status) && TextUtils.equals(verify_status, "不需要验证身份证")) { if (showNameInPut) { return name_input.getText().toString().trim(); } return name.getText().toString().trim(); } return null; } public String getInPutIdCardNumber() { ModelAdapter personDocument = mainActivity().fragment_person_manage.selectedPersonDocument; if (!TextUtils.isEmpty(verify_status) && (TextUtils.equals(verify_status, "已经验证身份证") || TextUtils.equals(verify_status, "未验证身份证"))) { if (mainActivity().fragment_person_manage.needIdCardInfo()) { return idcard_number.getText().toString().trim(); } return personDocument.getString("id_card_number"); } if (!TextUtils.isEmpty(verify_status) && TextUtils.equals(verify_status, "不需要验证身份证")) { if (showIdCardInPut) { return idcard_number_input.getText().toString().trim(); } return idcard_number.getText().toString().trim(); } return null; } public String getInPutPhoneNumber() { if (showPhoneInPut) { return phone_input.getText().toString().trim(); } else { return phone.getText().toString().trim(); } } // name是否必填 public void needName(boolean isNeed) { if (isNeed) { face_detail_name_need.setVisibility(View.VISIBLE); } else { face_detail_name_need.setVisibility(View.INVISIBLE); } } // phone是否必填 public void needPhone(boolean isNeed) { if (isNeed) { face_detail_phone_need.setVisibility(View.VISIBLE); } else { face_detail_phone_need.setVisibility(View.INVISIBLE); } } // IdNumber是否必填 public void needIdNumber(boolean isNeed) { if (isNeed) { face_detail_id_need.setVisibility(View.VISIBLE); } else { face_detail_id_need.setVisibility(View.INVISIBLE); } } public void setFaceDetailUI(String personId) { try { ModelAdapter selectedPersonDocument = PersonManager.findPersonById(personId); if (showNameInPut) { name_input.setText(selectedPersonDocument.getString("name")); } else { name.setText(selectedPersonDocument.getString("name")); } if (showIdCardInPut) { idcard_number_input.setText(selectedPersonDocument.getString("id_card_number")); } else { idcard_number.setText(selectedPersonDocument.getString("id_card_number")); } if (showPhoneInPut) { phone_input.setText(selectedPersonDocument.getString("phone")); } else { phone.setText(selectedPersonDocument.getString("phone")); } } catch (Exception e) { e.printStackTrace(); } } public String getSignUpRule() { return arr[spinner_register_model.getSelectedItemPosition()]; } public String getCheckedTimeRuleId() { if (arr[1].equals(arr[spinner_register_model.getSelectedItemPosition()]) && checkedTimeRuleChanged) { return FaceDetailTimeFragment.checkedTimeRuleId; } else { return personDocument.getString("sign_up_rule"); } } }