feat: 接入真实信号强度显示(之前写死满格)
- AppEvent 新增 SignalChanged 事件 - SystemStateMonitor 注册 PhoneStateListener 监听信号强度 - HomeFragment 接收事件更新 StatusBar 信号条(0-4级) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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 列表,横幅+红点用) */
|
||||
|
||||
@@ -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("系统状态监听: 已取消注册")
|
||||
}
|
||||
|
||||
@@ -533,6 +533,10 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
||||
is AppEvent.BluetoothStateChanged -> {
|
||||
statusBar.updateBluetooth(event.isOn)
|
||||
}
|
||||
// 信号强度变化
|
||||
is AppEvent.SignalChanged -> {
|
||||
statusBar.updateSignal(event.level)
|
||||
}
|
||||
// 蓝牙设备连接/断开 → 更新设置页
|
||||
is AppEvent.BluetoothDeviceConnected -> {
|
||||
updateConfigBluetooth(true)
|
||||
|
||||
Reference in New Issue
Block a user