MainActivity.java 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651
  1. package com.hanghui.senic.activity;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.content.pm.PackageManager;
  5. import android.graphics.Bitmap;
  6. import android.graphics.drawable.BitmapDrawable;
  7. import android.graphics.drawable.Drawable;
  8. import android.view.View;
  9. import android.widget.ImageView;
  10. import android.widget.LinearLayout;
  11. import android.widget.RelativeLayout;
  12. import android.widget.TextView;
  13. import androidx.core.app.ActivityCompat;
  14. import com.bumptech.glide.Glide;
  15. import com.bumptech.glide.request.target.SimpleTarget;
  16. import com.bumptech.glide.request.transition.Transition;
  17. import com.hanghui.senic.MyAppliction;
  18. import com.hanghui.senic.R;
  19. import com.hanghui.senic.activity.view.ClickButtonFloatView;
  20. import com.hanghui.senic.bean.FederatedPlatformsRequestBean;
  21. import com.hanghui.senic.bean.IDCARD;
  22. import com.hanghui.senic.common.AppHandler;
  23. import com.hanghui.senic.common.BroadcastManager;
  24. import com.hanghui.senic.common.CommonUtil;
  25. import com.hanghui.senic.common.Constants;
  26. import com.hanghui.senic.common.DevelopUtil;
  27. import com.hanghui.senic.common.DeviceInitManager;
  28. import com.hanghui.senic.common.MTTSManager;
  29. import com.hanghui.senic.common.PosManager;
  30. import com.hanghui.senic.common.TaskStatus;
  31. import com.hanghui.senic.common.UiAdaptionManager;
  32. import com.hanghui.senic.controller.IDCardControllerManager;
  33. import com.hanghui.senic.controller.LiJiangIDCardController;
  34. import com.hanghui.senic.controller.PassportController;
  35. import com.hanghui.senic.controller.QRCodeController;
  36. import com.hanghui.senic.controller.SerialController;
  37. import com.hanghui.senic.controller.SmileCallback;
  38. import com.hanghui.senic.controller.SmileController;
  39. import com.hanghui.senic.model.BaseViewData;
  40. import com.hanghui.senic.network.HttpRequest;
  41. import com.hanghui.senic.receiver.NetBroadcastReceiver;
  42. import com.hanghui.senic.receiver.USBroadcastReceiver;
  43. import com.hanghui.senic.service.ClearDataService;
  44. import com.hanghui.senic.service.InternetCheckService;
  45. import com.hanghui.senic.service.RegularReportingService;
  46. import com.hanghui.senic.service.usbserialdemo.utile.ConfigManager;
  47. import com.hanghui.senic.service.usbserialdemo.utile.DateUtil;
  48. import com.hanghui.senic.service.usbserialdemo.utile.NetWorkUtils;
  49. import com.hanghui.senic.service.usbserialdemo.utile.PopupWindowManager;
  50. import com.hanghui.senic.service.usbserialdemo.utile.SharedPreferencesUtils;
  51. import com.hanghui.senic.service.usbserialdemo.utile.StringIsNull;
  52. import com.hanghui.senic.service.usbserialdemo.utile.StringUtils;
  53. import com.hanghui.senic.service.usbserialdemo.utile.X1.RelaysAndLedUtile;
  54. import com.hanghui.senic.service.usbserialdemo.utile.devicesUI.BaseDeviceUI;
  55. import com.hanghui.senic.service.usbserialdemo.utile.devicesUI.IDeviceUI;
  56. import com.hanghui.senic.service.usbserialdemo.utile.loacat.AppLogUtils;
  57. import java.util.Date;
  58. public class MainActivity extends BaseActivity implements InternetCheckService.InternetCheckServiceCallback {
  59. private LinearLayout topRightClickConfigTV;//点击设置
  60. private TextView topLeftTimeTV;//时间
  61. private TextView topRightVersionTV;//版本号
  62. private TextView topRightSNTV;//sn号
  63. private static TextView appStatusTextView;
  64. private TextView bottomIsDebugShow;
  65. private RelativeLayout mainActivity_bg;
  66. private ImageView main_networkStatus;//internet的连接状态
  67. private ImageView network_icon_no;
  68. private ImageView network_icon_start;//网络类型
  69. private static ImageView hardwareIcon_IDCard;//硬件连接状态-身份证阅读器
  70. private static ImageView hardwareIcon_QRCode;//硬件连接状态-二维码读头
  71. private static ImageView hardwareIcon_Passport;//硬件连接状态-护照机
  72. private static ImageView hardwareIcon_IcCard;//硬件连接状态-IC卡
  73. private IDeviceUI iDeviceUI;
  74. private boolean networkStatus = true;//网络状态
  75. private final int REQUEST_EXTERNAL_STORAGE = 1;
  76. private String[] PERMISSIONS_STORAGE = {
  77. "android.permission.READ_EXTERNAL_STORAGE",
  78. "android.permission.WRITE_EXTERNAL_STORAGE",
  79. "android.permission.MOUNT_UNMOUNT_FILESYSTEMS"};
  80. private final SmileCallback smileCallback = new SmileCallback() {
  81. @Override
  82. public void updateView(int code, String msg, BaseViewData viewData) {
  83. switch (code) {
  84. case Constants.Code_AppStatusTextView:
  85. appStatusTextView.setText(msg);
  86. break;
  87. case Constants.Code_StartFaceOrManualClickButton:
  88. AppHandler.getHandler().removeCallbacks(startFaceOrManualBtnShowRunnable);
  89. AppHandler.getHandler().postDelayed(startFaceOrManualBtnShowRunnable, 1000);
  90. break;
  91. }
  92. }
  93. };
  94. private final HttpRequest.HttpResponseCallback httpResponseCallback = new HttpRequest.HttpResponseCallback() {
  95. @Override
  96. public void updateView(int code, String msg) {
  97. switch (code) {
  98. case Constants.Code_HttpResponseCallback_BottomTextPrompt://设置底部文字提示
  99. appStatusTextView.setText(msg);
  100. break;
  101. case Constants.Code_HttpResponseCallback_NetworkNormalIcon://设置网络正常图标
  102. main_networkStatus.setImageResource(R.mipmap.network_available);
  103. int networkType = NetWorkUtils.getNetworkType(MainActivity.this);
  104. if (networkType != -1){
  105. network_icon_no.setVisibility(View.GONE);
  106. network_icon_start.setVisibility(View.VISIBLE);
  107. network_icon_start.setImageResource(NetWorkUtils.getNetworkType(MainActivity.this));
  108. } else {//无网络
  109. network_icon_no.setVisibility(View.VISIBLE);
  110. network_icon_start.setVisibility(View.GONE);
  111. }
  112. break;
  113. case Constants.Code_HttpResponseCallback_BottomTextType://判断底部文字文字显示(如果硬件没有开启,则直接初始化smile)
  114. if (DeviceInitManager.getInstance().totalOpenHardwareNum == 0){//没有需要打开的硬件直接smile初始化
  115. HttpRequest.getInstance().setStartSmileService();
  116. }else {
  117. appStatusTextView.setText("硬件启动中");
  118. }
  119. // AppHandler.getHandler().postDelayed(startHardwareRunnable,2 * 1000);
  120. break;
  121. case Constants.Code_HttpResponseCallback_HomeBackgroundImage://主页背景图片
  122. if (!StringIsNull.IsStringNull(ConfigManager.getAuthenticationBean().getData().get(0).getHomePageUrl())) {
  123. //首页背景替换
  124. Glide.with(MainActivity.this)
  125. .asBitmap()
  126. .load(ConfigManager.getAuthenticationBean().getData().get(0).getHomePageUrl())
  127. .into(new SimpleTarget<Bitmap>() {
  128. @Override
  129. public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
  130. Drawable drawable = new BitmapDrawable(resource);
  131. mainActivity_bg.setBackground(drawable);
  132. }
  133. });
  134. }
  135. break;
  136. case Constants.Code_HttpResponseCallback_HideBottomTextView://检测到设备已到期隐藏底部文字
  137. appStatusTextView.setVisibility(View.GONE);
  138. break;
  139. case Constants.Code_HttpResponseCallback_ShowBottomTextView://显示底部文字
  140. appStatusTextView.setVisibility(View.VISIBLE);
  141. break;
  142. case Constants.Code_HttpResponseCallback_ShowIDCardIcon://身份证阅读器打开,显示顶部身份证阅读器图标
  143. hardwareIcon_IDCard.setVisibility(View.VISIBLE);
  144. break;
  145. case Constants.Code_HttpResponseCallback_ShowQRCodeIcon://二维码读头开启,显示顶部二维码读头图标
  146. hardwareIcon_QRCode.setVisibility(View.VISIBLE);
  147. break;
  148. case Constants.Code_HttpResponseCallback_ShowPassportIcon://护照机开启,显示顶部护照机图标
  149. hardwareIcon_Passport.setVisibility(View.VISIBLE);
  150. break;
  151. case Constants.Code_HttpResponseCallback_ShowICCardIcon://IC卡开启,显示顶部IC卡开启图标
  152. hardwareIcon_IcCard.setVisibility(View.VISIBLE);
  153. break;
  154. }
  155. }
  156. };
  157. private final SerialController.SerialPortCallback serialPortCallback = new SerialController.SerialPortCallback() {
  158. @Override
  159. public void updateView(int code, String msg) {
  160. if (code == 0){
  161. hardwareIcon_QRCode.setImageResource(R.mipmap.hardware_icon_qrcode_succeed);
  162. }else {
  163. hardwareIcon_QRCode.setImageResource(R.mipmap.hardware_icon_qrcode_fail);
  164. }
  165. }
  166. };
  167. private final PassportController.PassportCallback passportCallback = new PassportController.PassportCallback() {
  168. @Override
  169. public void updateView(int code, String msg) {
  170. appStatusTextView.setText(msg);
  171. }
  172. };
  173. private final NetBroadcastReceiver.NetNetworkCallback netNetworkCallback = new NetBroadcastReceiver.NetNetworkCallback() {
  174. @Override
  175. public void updateView(int code, String msg) {
  176. switch (code) {
  177. case Constants.Code_NetNetworkCallback_NetworkNormal:
  178. Glide.with(CommonUtil.getCurrentActivity())
  179. .load(R.mipmap.network_available)
  180. .into(main_networkStatus);
  181. int networkState = NetWorkUtils.getNetworkType(MainActivity.this);
  182. if (networkState != -1){
  183. network_icon_no.setVisibility(View.GONE);
  184. network_icon_start.setVisibility(View.VISIBLE);
  185. network_icon_start.setImageResource(NetWorkUtils.getNetworkType(MainActivity.this));
  186. } else {//无网络
  187. network_icon_no.setVisibility(View.VISIBLE);
  188. network_icon_start.setVisibility(View.GONE);
  189. }
  190. break;
  191. case Constants.Code_NetNetworkCallback_NetworkAnomaly:
  192. Glide.with(CommonUtil.getCurrentActivity())
  193. .load(R.mipmap.no_network)
  194. .into(main_networkStatus);
  195. network_icon_no.setVisibility(View.VISIBLE);
  196. network_icon_start.setVisibility(View.GONE);
  197. break;
  198. }
  199. }
  200. };
  201. private final USBroadcastReceiver.USBroadcastCallback usBroadcastCallback = new USBroadcastReceiver.USBroadcastCallback() {
  202. @Override
  203. public void updateView(int code, String msg) {
  204. switch (code){
  205. case Constants.Code_USBroadcastCallback_USBIDCardSucceed://身份证USB连接成功
  206. hardwareIcon_IDCard.setImageResource(R.mipmap.hardware_icon_idcard_succeed);
  207. break;
  208. case Constants.Code_USBroadcastCallback_USBIDCardFail://身份证USB连接断开
  209. hardwareIcon_IDCard.setImageResource(R.mipmap.hardware_icon_idcard_fail);
  210. break;
  211. case Constants.Code_USBroadcastCallback_USBQRCodeSucceed://二维码USB连接成功
  212. hardwareIcon_QRCode.setImageResource(R.mipmap.hardware_icon_qrcode_succeed);
  213. break;
  214. case Constants.Code_USBroadcastCallback_USBQRCodeFail://二维码USB连接断开
  215. hardwareIcon_QRCode.setImageResource(R.mipmap.hardware_icon_qrcode_fail);
  216. break;
  217. case Constants.Code_USBroadcastCallback_USBAllInOneIDCardSucceed://东信多合一USB连接成功
  218. if (ConfigManager.getAuthenticationBeanListBean().isUseIdcard() && ConfigManager.getAuthenticationBeanListBean().getIdCardReaderBrand() == 9){
  219. hardwareIcon_IDCard.setImageResource(R.mipmap.hardware_icon_idcard_succeed);
  220. }
  221. if (ConfigManager.getAuthenticationBeanListBean().isUseQrcode() && ConfigManager.getAuthenticationBeanListBean().getQrCodeReaderBrand() == 6){
  222. hardwareIcon_QRCode.setImageResource(R.mipmap.hardware_icon_qrcode_succeed);
  223. }
  224. if (ConfigManager.isOpenICCard()){
  225. hardwareIcon_IcCard.setImageResource(R.mipmap.hardware_icon_iccard_succeed);
  226. }
  227. break;
  228. case Constants.Code_USBroadcastCallback_USBAllInOneIDCardFail://东信多合一USB连接断开
  229. if (ConfigManager.getAuthenticationBeanListBean().isUseIdcard() && ConfigManager.getAuthenticationBeanListBean().getIdCardReaderBrand() == 9){
  230. hardwareIcon_IDCard.setImageResource(R.mipmap.hardware_icon_idcard_fail);
  231. }
  232. if (ConfigManager.getAuthenticationBeanListBean().isUseQrcode() && ConfigManager.getAuthenticationBeanListBean().getQrCodeReaderBrand() == 6){
  233. hardwareIcon_QRCode.setImageResource(R.mipmap.hardware_icon_qrcode_fail);
  234. }
  235. if (ConfigManager.isOpenICCard()){
  236. hardwareIcon_IcCard.setImageResource(R.mipmap.hardware_icon_iccard_fail);
  237. }
  238. break;
  239. }
  240. }
  241. };
  242. //首页时间计时
  243. Runnable mainCountDownRunnable = new Runnable() {
  244. @Override
  245. public void run() {
  246. topLeftTimeTV.setText(DateUtil.getTime("yyyy.MM.dd HH:mm:ss") + " " + DateUtil.getWeekOfDate(new Date()));
  247. AppHandler.getHandler().postDelayed(this, 1000);
  248. }
  249. };
  250. /**
  251. * 硬件初始化结果展示在底部文字显示
  252. */
  253. static boolean isStartSmile = false;
  254. public static Runnable startHardwareRunnable = new Runnable() {
  255. @Override
  256. public void run() {
  257. if (isStartSmile){
  258. isStartSmile = false;
  259. DeviceInitManager.getInstance().totalOpenHardwareNum = -1;
  260. //smile服务
  261. HttpRequest.getInstance().setStartSmileService();
  262. }
  263. if (DeviceInitManager.getInstance().totalOpenHardwareNum == DeviceInitManager.getInstance().getAlreadyInitHardwareNum()){
  264. isStartSmile = true;
  265. AppHandler.getHandler().postDelayed(this, DeviceInitManager.getInstance().getAlreadyInitHardwareNum() * 2000);
  266. }
  267. //顶部图标显示
  268. switch (DeviceInitManager.getInstance().getSelectHardwareToInt()){
  269. case 0:
  270. hardwareIcon_IDCard.setImageResource(R.mipmap.hardware_icon_idcard_succeed);
  271. break;
  272. case 1:
  273. hardwareIcon_IDCard.setImageResource(R.mipmap.hardware_icon_idcard_fail);
  274. break;
  275. case 2:
  276. hardwareIcon_QRCode.setImageResource(R.mipmap.hardware_icon_qrcode_succeed);
  277. break;
  278. case 3:
  279. hardwareIcon_QRCode.setImageResource(R.mipmap.hardware_icon_qrcode_fail);
  280. break;
  281. case 4:
  282. hardwareIcon_Passport.setImageResource(R.mipmap.hardware_icon_passport_succeed);
  283. break;
  284. case 5:
  285. hardwareIcon_Passport.setImageResource(R.mipmap.hardware_icon_passport_fail);
  286. break;
  287. case 6:
  288. hardwareIcon_IcCard.setImageResource(R.mipmap.hardware_icon_iccard_succeed);
  289. break;
  290. case 7:
  291. hardwareIcon_IcCard.setImageResource(R.mipmap.hardware_icon_iccard_fail);
  292. break;
  293. }
  294. appStatusTextView.setText(DeviceInitManager.getInstance().getSelectHardwareToString());
  295. }
  296. };
  297. //ABCPService服务启动成功后执行, 根据配置文件展示或者隐藏 点击开始刷脸核验按钮 和 点击手输证件号按钮
  298. public Runnable startFaceOrManualBtnShowRunnable = new Runnable() {
  299. @Override
  300. public void run() {
  301. appStatusTextView.setVisibility(View.GONE);
  302. //根据配置文件展示或者隐藏 点击开始刷脸核验按钮 和 点击手输证件号按钮
  303. ConfigManager.ShowClickButton();
  304. }
  305. };
  306. @Override
  307. public int getLayout() {
  308. return R.layout.activity_main;
  309. }
  310. //判断activity是否在最上层
  311. @Override
  312. public void onWindowFocusChanged(boolean hasFocus) {
  313. super.onWindowFocusChanged(hasFocus);
  314. if (!hasFocus) {
  315. if (ConfigManager.getAuthenticationBean() != null) {
  316. RelaysAndLedUtile.getInstance().setLedLight(ConfigManager.getAuthenticationBean().getData().get(0).getLightMode(), true);
  317. }
  318. } else {
  319. if (ConfigManager.getAuthenticationBean() != null) {
  320. RelaysAndLedUtile.getInstance().setLedLight(ConfigManager.getAuthenticationBean().getData().get(0).getLightMode(), false);
  321. }
  322. }
  323. }
  324. @Override
  325. public void setOnCreate() {
  326. AppLogUtils.e(false, "", "MainActivity生命周期 setOnCreate(), MainActivity.this=" + MainActivity.this);
  327. ConfigManager.isConfigRequestSuccess = false;
  328. iDeviceUI = BaseDeviceUI.getInstance().getDeviceUI();
  329. initViews();
  330. //语音播报
  331. MTTSManager.getInstance().init();
  332. //二维码需要的权限申请
  333. qRcodeNeededPermissionRequest(this);
  334. //护照机权限申请
  335. PassportController.getInstance().PermissionRequests();
  336. //代码中动态注册广播
  337. BroadcastManager.getInstance().registerNetworkChangeReceiver(netNetworkCallback);
  338. BroadcastManager.getInstance().registerUSBroadcastReceiver(usBroadcastCallback);
  339. PosManager.getInstance().init();
  340. //启动应用状态定时上报服务
  341. RegularReportingService.start(this);
  342. //ping百度,判断网络连接是否正常
  343. InternetCheckService.start(this);
  344. InternetCheckService.setInternetCheckServiceCallback(this);
  345. //清除上一天数据
  346. ClearDataService.start(this);
  347. //首页时间
  348. startCountDown();
  349. //注册回调接口
  350. SmileController.getInstance().setSmileCallback(smileCallback);
  351. HttpRequest.getInstance().setHttpResponseCallback(httpResponseCallback);
  352. PassportController.getInstance().setPassportCallback(passportCallback);
  353. SerialController.getInstance().setSerialPortCallback(serialPortCallback);
  354. //点击按钮是否显示
  355. ClickButtonFloatView.getInstance().setShowView(true);
  356. //请求在线配置接口
  357. requestConfiguration();
  358. //dimens资源的读取位置
  359. UiAdaptionManager.resourceReadLocation();
  360. //testPersoncard();
  361. LiJiangIDCardController.isMainActivityDestroyed = false;
  362. initLog();
  363. }
  364. private void initLog() {
  365. boolean isScreenLogOpen = (boolean) SharedPreferencesUtils.getParam(MyAppliction.getContext(), "is_screen_log_open", DevelopUtil.isScreenLogOpen);
  366. DevelopUtil.setScreenLogOpen(isScreenLogOpen);
  367. }
  368. private void testPersoncard() {
  369. topRightSNTV.setOnClickListener(new View.OnClickListener() {
  370. @Override
  371. public void onClick(View v) {
  372. String base64 = "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\\u003d\\u003d";
  373. AppHandler.getHandler().postDelayed(new Runnable() {
  374. @Override
  375. public void run() {
  376. TaskStatus.taskStatus = "personCard";
  377. IDCARD idCard = new IDCARD();
  378. idCard.setIdNumber("410922199611150054");
  379. idCard.setName("尚义鹏");
  380. idCard.setPhotoBase64(base64);
  381. FederatedPlatformsRequestBean.ExtInfoDTO exInfoDTO = new FederatedPlatformsRequestBean.ExtInfoDTO();
  382. exInfoDTO.setPassRes("");
  383. exInfoDTO.setSmileParams("");
  384. exInfoDTO.setIdcardContent(ConfigManager.getGson().toJson(idCard));
  385. ConfigManager.setFederatedPlatformsRequestBean(ConfigManager.SN, 1, "410922199611150054",
  386. "尚义鹏", "", "check", "", "",
  387. "", exInfoDTO, "", "");
  388. SmileController.getInstance().invokePersonCard("尚义鹏", "410922199611150054", base64);
  389. HttpRequest.getInstance().requestFederatedPlatformsCheck(true);
  390. }
  391. }, 800);
  392. AppHandler.getHandler().postDelayed(new Runnable() {
  393. @Override
  394. public void run() {
  395. SmileController.getInstance().invokeResume(ConfigManager.mSessionId);
  396. }
  397. }, 810);
  398. }
  399. });
  400. }
  401. /**
  402. * 请求在线配置
  403. */
  404. private void requestConfiguration() {
  405. networkStatus = NetWorkUtils.isNetworkConnected(this);
  406. if (networkStatus) {
  407. appStatusTextView.setText("网络状态正常");
  408. appStatusTextView.setText("获取在线配置中……");
  409. Glide.with(this)
  410. .load(R.mipmap.network_available)
  411. .into(main_networkStatus);
  412. int networkState = NetWorkUtils.getNetworkType(MainActivity.this);
  413. if (networkState != -1){
  414. network_icon_no.setVisibility(View.GONE);
  415. network_icon_start.setVisibility(View.VISIBLE);
  416. network_icon_start.setImageResource(NetWorkUtils.getNetworkType(MainActivity.this));
  417. } else {//无网络
  418. network_icon_no.setVisibility(View.VISIBLE);
  419. network_icon_start.setVisibility(View.GONE);
  420. }
  421. HttpRequest.getInstance().requestAuthentication();
  422. } else {
  423. if (ConfigManager.isForTheFirstTime()) {//首次打开
  424. DeviceInitManager.getInstance().setConfigRequestSuccess(false);
  425. appStatusTextView.setText("在线配置获取失败");
  426. } else {
  427. AppHandler.getHandler().post(new Runnable() {
  428. @Override
  429. public void run() {
  430. String promptMessage = ConfigManager.localConfiguration();
  431. appStatusTextView.setText(promptMessage);
  432. }
  433. });
  434. }
  435. }
  436. }
  437. /**
  438. * 首页时间计时
  439. */
  440. private void startCountDown() {
  441. AppHandler.getHandler().removeCallbacks(mainCountDownRunnable);
  442. AppHandler.getHandler().postDelayed(mainCountDownRunnable, 1000);
  443. }
  444. private static long lastClickTime; // 上次点击的时间
  445. private static final int THRESHOLD_TIME = 500; //设置的阈值,单位为毫秒
  446. private int clickCount = 0;
  447. private View.OnClickListener mainConfigOnClickListener = new View.OnClickListener() {
  448. @Override
  449. public void onClick(View v) {
  450. long currentTime = System.currentTimeMillis();
  451. if (currentTime - lastClickTime > THRESHOLD_TIME) {
  452. // 非连续点击处理逻辑
  453. } else {
  454. clickCount++; // 点击次数
  455. // 连续点击处理逻
  456. if (clickCount == 10) {
  457. // 连续点击了10次,执行相关操作
  458. // 重置点击计数器
  459. clickCount = 0;
  460. Intent intent = new Intent(MainActivity.this, PassWordActivity.class);
  461. startActivity(intent);
  462. finish();
  463. }
  464. }
  465. lastClickTime = currentTime;
  466. }
  467. };
  468. //初始化页面
  469. private void initViews() {
  470. main_networkStatus = findViewById(R.id.main_NetWorkStatus);
  471. topLeftTimeTV = findViewById(R.id.main_Time);
  472. appStatusTextView = findViewById(R.id.main_APPStuter);
  473. topRightVersionTV = findViewById(R.id.main_Version);
  474. topRightSNTV = findViewById(R.id.main_SN);
  475. mainActivity_bg = findViewById(R.id.mainActivityRelativeLayout);
  476. topRightClickConfigTV = findViewById(R.id.main_Config);
  477. bottomIsDebugShow = findViewById(R.id.bottomIsDebugShow);
  478. network_icon_no = findViewById(R.id.network_icon_no);
  479. network_icon_start = findViewById(R.id.network_icon_start);
  480. topRightClickConfigTV.setOnClickListener(mainConfigOnClickListener);
  481. hardwareIcon_IDCard = findViewById(R.id.hardwareIcon_IDCard);
  482. hardwareIcon_QRCode = findViewById(R.id.hardwareIcon_QRCode);
  483. hardwareIcon_Passport = findViewById(R.id.hardwareIcon_Passport);
  484. hardwareIcon_IcCard = findViewById(R.id.hardwareIcon_IcCard);
  485. topLeftTimeTV.setText(DateUtil.getTime("yyyy.MM.dd HH:mm:ss") + " " + DateUtil.getWeekOfDate(new Date()));
  486. if (!(com.hanghui.senic.BuildConfig.BUILD_TYPE).equals("release")) {//debug版本
  487. bottomIsDebugShow.setVisibility(View.VISIBLE);
  488. bottomIsDebugShow.setText("DEBUG");
  489. bottomIsDebugShow.setOnClickListener(new View.OnClickListener() {
  490. @Override
  491. public void onClick(View v) {
  492. Intent intent = new Intent(mContext, DevelopActivity.class);
  493. startActivity(intent);
  494. }
  495. });
  496. }
  497. topRightVersionTV.setText("版本:v" + ConfigManager.getVersionName(this));
  498. topRightSNTV.setText("SN:" + ConfigManager.getDeviceSN());
  499. appStatusTextView.setVisibility(View.VISIBLE);
  500. AppLogUtils.e(false, "", "----版本尺寸 " + getResources().getString(R.string.resource_location));
  501. }
  502. @Override
  503. public void onResume() {
  504. super.onResume();
  505. AppLogUtils.e(false, "", "MainActivity生命周期 onResume ");
  506. try {
  507. if (!StringUtils.isEmpty(ConfigManager.mSessionId)) {
  508. RelaysAndLedUtile.getInstance().setLedLight(ConfigManager.getAuthenticationBean().getData().get(0).getLightMode(), false);
  509. }
  510. } catch (Exception e) {
  511. e.printStackTrace();
  512. }
  513. PopupWindowManager.showFloatIfNoNetwork();
  514. }
  515. @Override
  516. public void onPause() {
  517. super.onPause();
  518. AppLogUtils.e(false, "", "MainActivity生命周期 onPause ");
  519. if (ConfigManager.getAuthenticationBean() != null && ConfigManager.getAuthenticationBean().getData() != null) {
  520. RelaysAndLedUtile.getInstance().setLedLight(ConfigManager.getAuthenticationBean().getData().get(0).getLightMode(), true);
  521. }
  522. PopupWindowManager.getInstance().dismissNetWorkpopupWindow();
  523. LiJiangIDCardController.getInstance().dismissAbnormalPopupWindow();
  524. }
  525. @Override
  526. protected void onDestroy() {
  527. super.onDestroy();
  528. AppLogUtils.e(false, "", "MainActivity生命周期 onDestroy ");
  529. BroadcastManager.getInstance().unRegisterNetworkChangeReceiver();
  530. BroadcastManager.getInstance().unRegisterUSBroadcastReceiver();
  531. PopupWindowManager.getInstance().dismissNetWorkpopupWindow();
  532. //销毁smile刷脸
  533. SmileController.getInstance().destroy();
  534. //关闭身份证阅读器
  535. IDCardControllerManager.destroy();
  536. PosManager.getInstance().destroy();
  537. //关闭二维码
  538. QRCodeController.getInstance().destroy();
  539. //关闭串口
  540. SerialController.getInstance().CloseComPort();
  541. RelaysAndLedUtile.getInstance().setLedLight(ConfigManager.getAuthenticationBean().getData().get(0).getLightMode(), false);
  542. //将硬件状态恢复
  543. DeviceInitManager.getInstance().setHardwareStart();
  544. try {
  545. ConfigManager.closePassport = true;
  546. //关闭护照
  547. if (ConfigManager.getAuthenticationBean().getData().get(0).isOpenPassport()) {
  548. PassportController.getInstance().closePassport();
  549. }
  550. } catch (Exception e) {
  551. e.printStackTrace();
  552. }
  553. //关闭定时器
  554. AppHandler.getHandler().removeCallbacks(startFaceOrManualBtnShowRunnable);
  555. AppHandler.getHandler().removeCallbacksAndMessages(null);
  556. MTTSManager.getInstance().destroy();
  557. LiJiangIDCardController.isMainActivityDestroyed = true;
  558. }
  559. /**
  560. * 二维码sdk需要的权限
  561. *
  562. * @param activity
  563. */
  564. public void qRcodeNeededPermissionRequest(Activity activity) {
  565. try {
  566. //检测是否有写的权限
  567. int permission = ActivityCompat.checkSelfPermission(activity,
  568. "android.permission.WRITE_EXTERNAL_STORAGE");
  569. if (permission != PackageManager.PERMISSION_GRANTED) {
  570. // 没有写的权限,去申请写的权限,会弹出对话框
  571. ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
  572. }
  573. ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
  574. } catch (Exception e) {
  575. e.printStackTrace();
  576. }
  577. QRCodeController.getInstance().requestUSBPermission();
  578. QRCodeController.getInstance().requestOverlayPersmission();
  579. }
  580. @Override
  581. public void updateView(int code, String msg) {
  582. AppHandler.getHandler().post(new Runnable() {
  583. @Override
  584. public void run() {
  585. if(code == 0){
  586. main_networkStatus.setImageResource(R.mipmap.network_available);
  587. int networkState = NetWorkUtils.getNetworkType(MainActivity.this);
  588. if (networkState != -1){
  589. network_icon_no.setVisibility(View.GONE);
  590. network_icon_start.setVisibility(View.VISIBLE);
  591. network_icon_start.setImageResource(NetWorkUtils.getNetworkType(MainActivity.this));
  592. } else {//无网络
  593. network_icon_no.setVisibility(View.VISIBLE);
  594. network_icon_start.setVisibility(View.GONE);
  595. }
  596. } else {
  597. main_networkStatus.setImageResource(R.mipmap.no_network);
  598. network_icon_no.setVisibility(View.VISIBLE);
  599. network_icon_start.setVisibility(View.GONE);
  600. }
  601. }
  602. });
  603. }
  604. }