SettingActivity.java 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. package xn.xxp.home.setting;
  2. import android.annotation.SuppressLint;
  3. import android.os.Bundle;
  4. import android.text.Editable;
  5. import android.text.TextUtils;
  6. import android.util.Log;
  7. import android.view.View;
  8. import android.widget.CompoundButton;
  9. import androidx.annotation.Nullable;
  10. import androidx.appcompat.app.AppCompatActivity;
  11. import com.blankj.utilcode.util.ActivityUtils;
  12. import com.blankj.utilcode.util.AppUtils;
  13. import com.blankj.utilcode.util.LogUtils;
  14. import com.blankj.utilcode.util.RegexUtils;
  15. import com.blankj.utilcode.util.ResourceUtils;
  16. import com.blankj.utilcode.util.SPUtils;
  17. import com.blankj.utilcode.util.ThreadUtils;
  18. import com.blankj.utilcode.util.ToastUtils;
  19. import com.hikvision.dmb.EthernetConfig;
  20. import com.hikvision.dmb.display.InfoDisplayApi;
  21. import com.hikvision.dmb.network.InfoNetworkApi;
  22. import com.hikvision.dmb.system.InfoSystemApi;
  23. import com.kongzue.dialogx.dialogs.MessageDialog;
  24. import com.njlz.card.DeviceUtils;
  25. import xn.xxp.R;
  26. import xn.xxp.databinding.ActivitySettingBinding;
  27. import xn.xxp.room.RoomTool;
  28. import xn.xxp.room.bean.DeviceConfig;
  29. import xn.xxp.room.dao.DeviceConfigDao;
  30. import xn.xxp.utils.Tool;
  31. @SuppressLint("SetTextI18n")
  32. public class SettingActivity extends AppCompatActivity {
  33. private ActivitySettingBinding binding;
  34. private DeviceConfig deviceConfig;
  35. private DeviceConfigDao deviceConfigDao;
  36. @Override
  37. protected void onCreate(Bundle savedInstanceState) {
  38. super.onCreate(savedInstanceState);
  39. binding = ActivitySettingBinding.inflate(getLayoutInflater());
  40. setContentView(binding.getRoot());
  41. }
  42. @Override
  43. protected void onPostCreate(@Nullable Bundle savedInstanceState) {
  44. super.onPostCreate(savedInstanceState);
  45. try {
  46. deviceConfigDao = RoomTool.getInstance().deviceConfigDao();
  47. deviceConfig = deviceConfigDao.getDeviceConfig();
  48. if (null == deviceConfig) {
  49. deviceConfig = new DeviceConfig();
  50. }
  51. // 状态栏
  52. binding.statusSwitch.setChecked(InfoDisplayApi.getStatusBarEnable());
  53. binding.statusSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> InfoDisplayApi.setStatusBarEnable(isChecked));
  54. // 导航栏
  55. binding.navSwitch.setChecked(InfoDisplayApi.getNavigationBarEnable());
  56. binding.navSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> InfoDisplayApi.setNavigationBarEnable(isChecked));
  57. // app版本
  58. binding.varBT.setText("版本:" + AppUtils.getAppVersionName());
  59. String sn = InfoSystemApi.getSerialNumber();
  60. // 设备sn
  61. binding.snBT.setText("SN:" + (TextUtils.isEmpty(sn) ? "NULL" : sn));
  62. // 网络ip
  63. EthernetConfig ethernetConfig = InfoNetworkApi.getEthernetConfig();
  64. String ip = ethernetConfig.getIpAddress();
  65. binding.ipBT.setText("Ip:" + (TextUtils.isEmpty(ip) ? "NULL" : ip));
  66. // 启动文件管理
  67. binding.fileBrowserBT.setOnClickListener(v -> Tool.INSTANCE.openFileBrowser());
  68. // 重启设备
  69. binding.rebootBT.setOnClickListener(v ->
  70. MessageDialog.show("Tips",
  71. "确认要重启该设备么?",
  72. "确认",
  73. "取消")
  74. .setOkButtonClickListener((dialog, v1) -> {
  75. InfoSystemApi.reboot();
  76. return false;
  77. }));
  78. // 退出应用
  79. binding.exitBT.setOnClickListener(v ->
  80. MessageDialog.show("Tips",
  81. "确认要退出该应用么?",
  82. "确认",
  83. "取消")
  84. .setOkButtonClickListener((dialog, v1) -> {
  85. Tool.INSTANCE.exitApp();
  86. return false;
  87. }));
  88. // 系统设置
  89. binding.settingBT.setOnClickListener(v -> {
  90. Tool.INSTANCE.openSetting();
  91. Tool.INSTANCE.exitApp();
  92. });
  93. // 超级权限
  94. if (SPUtils.getInstance().getBoolean("isRoot", false)) {
  95. binding.rootCV.setVisibility(View.VISIBLE);
  96. }
  97. // Http服务器
  98. binding.httpUriET.setText(deviceConfig.getBaseUrl());
  99. // mqtt服务器
  100. binding.mqttUserNameET.setText(deviceConfig.getMqttName());
  101. binding.mqttPassWordET.setText(deviceConfig.getMqttPas());
  102. binding.mqttUriET.setText(deviceConfig.getMqttAddress());
  103. // 密码
  104. binding.oldPasswordET.setText(deviceConfig.getAdminPas());
  105. // 保存
  106. binding.save.setOnClickListener(v -> saveAndReStart());
  107. // 人脸
  108. binding.faceBT.setOnClickListener(new View.OnClickListener() {
  109. @Override
  110. public void onClick(View v) {
  111. ActivityUtils.startActivity(FaceListActivity.class);
  112. }
  113. });
  114. // 锁
  115. binding.lock.setOnCheckedChangeListener((buttonView, isChecked) -> {
  116. DeviceUtils.setElectricLock(1, isChecked);
  117. if (isChecked) {
  118. ToastUtils.showLong("开锁后需要手动关锁");
  119. }
  120. });
  121. binding.testBaseUrlBT.setOnClickListener(v -> binding.httpUriET.setText("http://192.168.1.8/api/"));
  122. binding.xnBaseUrlBT.setOnClickListener(v -> binding.httpUriET.setText("http://172.16.0.65/api/"));
  123. binding.testMqttBT.setOnClickListener(v -> binding.mqttUriET.setText("tcp://192.168.1.8:1883"));
  124. binding.xnMqttBT.setOnClickListener(v -> binding.mqttUriET.setText("tcp://172.16.0.65:31072"));
  125. } catch (Exception e) {
  126. LogUtils.e(Log.getStackTraceString(e));
  127. }
  128. }
  129. /**
  130. * 保存并重启应用
  131. */
  132. private void saveAndReStart() {
  133. // http服务
  134. Editable httpUriETText = binding.httpUriET.getText();
  135. if (null == httpUriETText || TextUtils.isEmpty(httpUriETText) || !RegexUtils.isURL(httpUriETText.toString())) {
  136. binding.httpUriET.setError("请正确输入Http服务地址!", ResourceUtils.getDrawable(R.drawable.ic_et_err));
  137. return;
  138. }
  139. deviceConfig.setBaseUrl(httpUriETText.toString());
  140. // mqtt账号
  141. Editable mqttUserNameETText = binding.mqttUserNameET.getText();
  142. if (null == mqttUserNameETText || TextUtils.isEmpty(mqttUserNameETText)) {
  143. binding.mqttUserNameET.setError("请正确输入Mqtt账号!", ResourceUtils.getDrawable(R.drawable.ic_et_err));
  144. return;
  145. }
  146. deviceConfig.setMqttName(mqttUserNameETText.toString());
  147. // mqtt密码
  148. Editable mqttPassWordETText = binding.mqttPassWordET.getText();
  149. if (null == mqttPassWordETText || TextUtils.isEmpty(mqttPassWordETText)) {
  150. binding.mqttPassWordET.setError("请正确输入Mqtt密码!", ResourceUtils.getDrawable(R.drawable.ic_et_err));
  151. return;
  152. }
  153. deviceConfig.setMqttPas(mqttPassWordETText.toString());
  154. // mqtt服务
  155. Editable mqttUriETText = binding.mqttUriET.getText();
  156. if (null == mqttUriETText || TextUtils.isEmpty(mqttUriETText) || !RegexUtils.isURL(mqttUriETText.toString())) {
  157. binding.mqttUriET.setError("请正确输入Mqtt服务地址!", ResourceUtils.getDrawable(R.drawable.ic_et_err));
  158. return;
  159. }
  160. deviceConfig.setMqttAddress(mqttUriETText.toString());
  161. // 旧密码
  162. Editable oldPasswordETText = binding.oldPasswordET.getText();
  163. if (null == oldPasswordETText || TextUtils.isEmpty(oldPasswordETText)) {
  164. binding.oldPasswordET.setError("请正确输入密码!", ResourceUtils.getDrawable(R.drawable.ic_et_err));
  165. return;
  166. }
  167. deviceConfig.setAdminPas(oldPasswordETText.toString());
  168. deviceConfigDao.insert(deviceConfig);
  169. ToastUtils.showShort("即将重启App");
  170. ThreadUtils.runOnUiThreadDelayed(() -> Tool.INSTANCE.reStartApp("主动重启"), 1500);
  171. }
  172. @Override
  173. public void onBackPressed() {
  174. }
  175. }