From 9f7a0a5c1edc3dac09f84d1f102f189e8240ac58 Mon Sep 17 00:00:00 2001 From: dongliang Date: Thu, 7 May 2026 12:56:20 +0930 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=B5=E9=87=8F=E5=8F=98=E5=8C=96?= =?UTF-8?q?=E6=97=B6=E4=B8=8A=E6=8A=A5=E8=AE=BE=E5=A4=87=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E5=88=B0=E6=9C=8D=E5=8A=A1=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前 reportDeviceStatus 接口只定义未调用,手机端无法获取实时电量 现在电量变化 >=5% 时自动调用 setWatchStatusByImeiFormWatch 上报 去抖防止频繁请求 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../com/xiaoqu/watch/ui/home/HomeFragment.kt | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) 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 8839a89..7d5c36a 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 @@ -47,6 +47,7 @@ class HomeFragment : BaseFragment() { @Inject lateinit var userPrefs: UserPrefs @Inject lateinit var eventBus: EventBus @Inject lateinit var taskApi: TaskApi + @Inject lateinit var commonApi: com.xiaoqu.watch.network.api.CommonApi @Inject lateinit var bluetoothScanManager: com.xiaoqu.watch.service.manager.BluetoothScanManager @Inject lateinit var notificationManager: com.xiaoqu.watch.service.manager.NotificationManager @Inject lateinit var vibrationConfigManager: com.xiaoqu.watch.device.sensor.VibrationConfigManager @@ -464,6 +465,34 @@ class HomeFragment : BaseFragment() { } } + /** 上次上报的电量(去抖:电量变化 >=5% 才上报) */ + private var lastReportedPower = -1 + + /** + * 上报设备状态到服务端(电量、蓝牙、NFC) + * 手机端从此接口获取手表电量 + */ + private fun reportDeviceStatus(power: Int) { + // 去抖:变化 >=5% 或首次才上报 + if (lastReportedPower >= 0 && kotlin.math.abs(power - lastReportedPower) < 5) return + lastReportedPower = power + + viewLifecycleOwner.lifecycleScope.launch { + try { + val params = hashMapOf( + "imei" to devicePrefs.imei, + "power" to power, + "blueStatus" to 1, + "nfcStatus" to 1 + ) + com.xiaoqu.watch.network.safeApiCall { commonApi.reportDeviceStatus(params) } + timber.log.Timber.d("设备状态上报: power=$power") + } catch (e: Exception) { + timber.log.Timber.w(e, "设备状态上报失败") + } + } + } + /** 调试模式:500ms 内连续点击 6 次触发 */ private fun checkDebugMode() { val now = System.currentTimeMillis() @@ -493,6 +522,7 @@ class HomeFragment : BaseFragment() { statusBar.updateBattery(event.level, event.isCharging) bluetoothScanManager.currentPower = event.level updateConfigBattery(event.level, event.isCharging) + reportDeviceStatus(event.level) } // 蓝牙状态变化 is AppEvent.BluetoothStateChanged -> {