diff --git a/app/src/main/java/com/xiaoqu/watch/ui/bind/BindFragment.kt b/app/src/main/java/com/xiaoqu/watch/ui/bind/BindFragment.kt index bc124b4..062df39 100644 --- a/app/src/main/java/com/xiaoqu/watch/ui/bind/BindFragment.kt +++ b/app/src/main/java/com/xiaoqu/watch/ui/bind/BindFragment.kt @@ -60,13 +60,23 @@ class BindFragment : BaseFragment() { * 编码设备信息 JSON:{bluetoothName, imei, serial, power} * 与旧版 codeScanPair.vue 格式一致 */ + /** 获取当前电量百分比 */ + private fun getCurrentBatteryLevel(): Int { + val intent = requireContext().registerReceiver( + null, android.content.IntentFilter(android.content.Intent.ACTION_BATTERY_CHANGED) + ) ?: return 100 + val level = intent.getIntExtra(android.os.BatteryManager.EXTRA_LEVEL, 0) + val scale = intent.getIntExtra(android.os.BatteryManager.EXTRA_SCALE, 100) + return (level * 100) / scale + } + private fun generateQrCode() { try { val qrData = gson.toJson(mapOf( "bluetoothName" to devicePrefs.bluetoothName, "imei" to devicePrefs.imei, "serial" to devicePrefs.serial, - "power" to 100 // TODO: 接入实时电量 + "power" to getCurrentBatteryLevel() )) Timber.d("绑定: QR 数据=$qrData") diff --git a/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt b/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt index 3a02ca5..9f11c71 100644 --- a/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt @@ -328,6 +328,17 @@ class HomeFragment : BaseFragment() { val btAdapter = android.bluetooth.BluetoothAdapter.getDefaultAdapter() val btOn = btAdapter?.isEnabled ?: false statusBar.updateBluetooth(btOn) + + // 信号强度初始值(PhoneStateListener 注册后才有回调,先读一次当前值) + try { + val telephony = requireContext().getSystemService(android.content.Context.TELEPHONY_SERVICE) + as? android.telephony.TelephonyManager + val signalLevel = telephony?.signalStrength?.level ?: 0 + statusBar.updateSignal(signalLevel) + } catch (e: Exception) { + // signalStrength 可能为 null(API 28+),静默处理 + statusBar.updateSignal(0) + } } /** 初始化主页数据 */ diff --git a/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt b/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt index 487dd8d..e5a1ccc 100644 --- a/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt +++ b/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt @@ -820,7 +820,9 @@ class TaskListFragment : BaseFragment() { btn.setBackgroundResource(R.drawable.bg_foot_btn_grey) nfcTaskManager.startTaskPunch(taskId) { success, message -> - // 恢复按钮可点击状态 + // NFC 回调可能在 Fragment 销毁后触发,需要安全检查 + if (!isAdded || view == null) return@startTaskPunch + btn.isEnabled = true if (success) { tipDialog.show( @@ -828,7 +830,9 @@ class TaskListFragment : BaseFragment() { title = "打卡成功" ) // 2 秒后(弹窗消失后)刷新任务详情 - btn.postDelayed({ fetchCurrentDetail() }, 2100) + btn.postDelayed({ + if (isAdded && view != null) fetchCurrentDetail() + }, 2100) } else { if (message != "超时") { tipDialog.show(