diff --git a/app/src/main/java/com/casic/common/detector/gd/view/InstallMarkerActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/InstallMarkerActivity.kt index 3dc737e..03976a6 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/InstallMarkerActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/InstallMarkerActivity.kt @@ -266,7 +266,6 @@ runOnUiThread { LoadingDialog.dismiss() countDownTimer.cancel() - serialPortService?.closeSerialPort() binding.readMarkerButton.isEnabled = true binding.identifierInclude.identifierIdView.text = markerId } @@ -285,7 +284,6 @@ LoadingDialog.dismiss() "读取此标识器ID超时,请重试".show(context) binding.readMarkerButton.isEnabled = true - serialPortService?.closeSerialPort() } } @@ -362,9 +360,15 @@ private val serviceConnection = object : ServiceConnection { override fun onServiceConnected(name: ComponentName?, iBinder: IBinder?) { - if (iBinder is SerialPortService.ServiceBinder) { - serialPortService = iBinder.getSerialPortService() - Log.d(kTag, "onServiceConnected: 服务已绑定") + if (name != null && iBinder != null && iBinder is SerialPortService.ServiceBinder) { + try { + serialPortService = iBinder.getSerialPortService() + Log.d(kTag, "onServiceConnected: 服务已绑定") + } catch (e: Exception) { + Log.e(kTag, "onServiceConnected: 绑定服务时发生异常", e) + } + } else { + Log.w(kTag, "onServiceConnected: name 或 iBinder 为 null") } } @@ -537,6 +541,7 @@ override fun onDestroy() { super.onDestroy() + serialPortService?.closeSerialPort() locationKit.stopLocation() unbindService(serviceConnection) }