diff --git a/app/src/main/java/com/xiaoqu/watch/event/AppEvent.kt b/app/src/main/java/com/xiaoqu/watch/event/AppEvent.kt index ab4569e..7dba15f 100644 --- a/app/src/main/java/com/xiaoqu/watch/event/AppEvent.kt +++ b/app/src/main/java/com/xiaoqu/watch/event/AppEvent.kt @@ -23,6 +23,8 @@ sealed class AppEvent { data class BluetoothStateChanged(val isOn: Boolean) : AppEvent() data class BluetoothDeviceConnected(val deviceName: String) : AppEvent() data class BluetoothDeviceDisconnected(val deviceName: String) : AppEvent() + /** 信号强度变化 (level: 0-4) */ + data class SignalChanged(val level: Int) : AppEvent() // 消息通知 /** 新任务到达(携带任务 ID 列表,横幅+红点用) */ diff --git a/app/src/main/java/com/xiaoqu/watch/service/manager/SystemStateMonitor.kt b/app/src/main/java/com/xiaoqu/watch/service/manager/SystemStateMonitor.kt index e7f9549..7b08994 100644 --- a/app/src/main/java/com/xiaoqu/watch/service/manager/SystemStateMonitor.kt +++ b/app/src/main/java/com/xiaoqu/watch/service/manager/SystemStateMonitor.kt @@ -7,6 +7,9 @@ import android.content.Context import android.content.Intent import android.content.IntentFilter import android.os.BatteryManager +import android.telephony.PhoneStateListener +import android.telephony.SignalStrength +import android.telephony.TelephonyManager import com.xiaoqu.watch.event.AppEvent import com.xiaoqu.watch.event.EventBus import dagger.hilt.android.qualifiers.ApplicationContext @@ -37,6 +40,16 @@ class SystemStateMonitor @Inject constructor( /** 是否已注册 */ private var registered = false + /** 信号强度监听器 */ + private val phoneStateListener = object : PhoneStateListener() { + @Suppress("DEPRECATION") + override fun onSignalStrengthsChanged(signalStrength: SignalStrength) { + // 将信号强度转换为 0-4 级 + val level = signalStrength.level // API 23+ 返回 0-4 + emitEvent(AppEvent.SignalChanged(level)) + } + } + /** 广播接收器 */ private val receiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { @@ -64,6 +77,11 @@ class SystemStateMonitor @Inject constructor( addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED) } context.registerReceiver(receiver, filter) + + // 注册信号强度监听 + val telephony = context.getSystemService(Context.TELEPHONY_SERVICE) as? TelephonyManager + telephony?.listen(phoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS) + registered = true Timber.d("系统状态监听: 已注册") } @@ -77,6 +95,10 @@ class SystemStateMonitor @Inject constructor( } catch (e: Exception) { Timber.w(e, "系统状态监听: 取消注册异常") } + // 取消信号监听 + val telephony = context.getSystemService(Context.TELEPHONY_SERVICE) as? TelephonyManager + telephony?.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE) + registered = false Timber.d("系统状态监听: 已取消注册") } 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 f0bcf9f..3a02ca5 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 @@ -533,6 +533,10 @@ class HomeFragment : BaseFragment() { is AppEvent.BluetoothStateChanged -> { statusBar.updateBluetooth(event.isOn) } + // 信号强度变化 + is AppEvent.SignalChanged -> { + statusBar.updateSignal(event.level) + } // 蓝牙设备连接/断开 → 更新设置页 is AppEvent.BluetoothDeviceConnected -> { updateConfigBluetooth(true)