package com.ttstd.controlled.accessibility;

import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.accessibility.AccessibilityManager;

import java.util.List;

public class AccessibilityServiceHelper {
    private static final String TAG = "AccessibilityHelper";

    /** 检查本应用在系统设置中是否已开启该无障碍服务。 */
    public static boolean isAccessibilityEnabled(Context context) {
        String enabled = Settings.Secure.getString(
                context.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
        if (enabled == null || enabled.isEmpty()) {
            return false;
        }
        String component = context.getPackageName() + "/" + KeyboardAccessibilityService.class.getName();
        return enabled.contains(component);
    }
    /**
     * 检查特定的无障碍服务是否已启用
     *
     * @param context      上下文对象
     * @param serviceClass 你的无障碍服务类（例如 MyAccessibilityService.class）
     * @return true 已开启，false 未开启
     */
    public static boolean isAccessibilityServiceEnabled(Context context, Class<?> serviceClass) {
        // 获取 AccessibilityManager 系统服务
        AccessibilityManager am = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE);
        if (am == null) {
            return false;
        }

        // 获取所有已启用的无障碍服务列表
        List<AccessibilityServiceInfo> enabledServices = am.getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_ALL_MASK);

        // 构建你服务的完整组件标识符
        String expectedServiceId = new ComponentName(context, serviceClass).flattenToShortString();
        Log.e(TAG, "isAccessibilityServiceEnabled: expectedServiceId = " + expectedServiceId);
        for (AccessibilityServiceInfo serviceInfo : enabledServices) {
            Log.e(TAG, "isAccessibilityServiceEnabled: serviceInfo.getId() = " + serviceInfo.getId());
            if (expectedServiceId.equals(serviceInfo.getId())) {
                return true;
            }
        }
        return false;
    }

    /**
     * 跳转到系统的无障碍服务设置页面
     *
     * @param context 上下文对象
     */
    public static void jumpToAccessibilitySettings(Context context) {
        try {
            Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 通常从应用上下文启动时需要此标志
            String str = context.getPackageName() + "/" + KeyboardAccessibilityService.class.getName();
            Bundle bundle = new Bundle();
            bundle.putString(":settings:fragment_args_key", str);
            intent.putExtra(":settings:fragment_args_key", str);
            intent.putExtra(":settings:show_fragment_args", bundle);
            context.startActivity(intent);
        } catch (Exception e) {
            // 处理跳转失败的情况，例如某些设备可能没有标准的设置界面
            e.printStackTrace();
            // 可以尝试跳转到系统通用设置作为备选方案
            Intent fallbackIntent = new Intent(Settings.ACTION_SETTINGS);
            fallbackIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(fallbackIntent);
        }
    }


}
