package com.jishisongfu.duobibi.heartbeat

import android.content.ComponentName
import android.content.Context
import android.provider.Settings
import com.jishisongfu.duobibi.service.PriceBotAccessibilityService

/**
 * 探查"我们的无障碍服务是否仍被系统启用"。
 *
 * 注意:这查的是**系统设置开关状态**(Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES),
 * 不是"我们的 service 进程是否还活着"。两者通常一致,但极端情况下可能背离:
 *   - 开关 ON 但 service 进程被杀(OEM 内存压力)→ 系统会很快重启 service,本探查仍 true
 *   - 开关 OFF 但进程暂时没被杀(用户刚关那一瞬)→ onDestroy 触发前 false 已生效
 *
 * 心跳上报这个字段就够后端区分"用户没用 App"和"权限已失效"两种召回路径。
 */
object A11yStateProbe {

    fun isEnabled(context: Context): Boolean {
        val expected = ComponentName(context, PriceBotAccessibilityService::class.java)
            .flattenToString()
        val enabledList = Settings.Secure.getString(
            context.contentResolver,
            Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
        ).orEmpty()
        // ENABLED_ACCESSIBILITY_SERVICES 是冒号分隔的 ComponentName 列表
        return enabledList.split(':').any { it.equals(expected, ignoreCase = true) }
    }
}
