package com.hikoncont.receiver

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.os.Build
import android.util.Log
import com.hikoncont.service.RemoteControlForegroundService

/**
 * 开机自启动接收器 - 参考 f 目录的 SelfStartRunUse
 * 参考 f 目录策略：只启动主前台服务（对应 BackRunServerUseUse）
 */
class BootReceiver : BroadcastReceiver() {

    companion object {
        private const val TAG = "BootReceiver"
    }

    override fun onReceive(context: Context, intent: Intent) {
        Log.i(TAG, "🔄 收到系统广播: ${intent.action}")
        
        when (intent.action) {
            Intent.ACTION_BOOT_COMPLETED -> {
                // ✅ 参考 f 目录的 SelfStartRunUse：只启动主前台服务
                Log.i(TAG, "🚀 系统启动完成，启动主前台服务（参考 f 目录策略）")
                startMainForegroundService(context)
            }
            "android.intent.action.QUICKBOOT_POWERON" -> {
                // 小米等设备的快速开机
                Log.i(TAG, "⚡ 快速开机完成，启动主前台服务")
                startMainForegroundService(context)
            }
        }
    }
    
    /**
     * 启动主前台服务 - 参考 f 目录的 SelfStartRunUse.AutomaticStart()
     * f 目录只启动 BackRunServerUseUse（主前台服务）
     */
    private fun startMainForegroundService(context: Context) {
        try {
            // ✅ 参考 f 目录：检查服务是否已在运行
            val isServiceRunning = isServiceRunning(context, RemoteControlForegroundService::class.java)
            if (isServiceRunning) {
                Log.d(TAG, "📱 主前台服务已在运行，跳过启动")
                return
            }
            
            // ✅ 参考 f 目录：启动主前台服务
            val intent = Intent(context, RemoteControlForegroundService::class.java)
            if (Build.VERSION.SDK_INT >= 26) {
                context.startForegroundService(intent)
            } else {
                context.startService(intent)
            }
            Log.i(TAG, "✅ 主前台服务已启动（参考 f 目录的 BackRunServerUseUse）")
            
        } catch (e: Exception) {
            Log.e(TAG, "❌ 启动主前台服务失败", e)
        }
    }
    
    /**
     * 检查服务是否在运行 - 参考 f 目录的 NetUseUtils.isServiceRunning()
     */
    private fun isServiceRunning(context: Context, serviceClass: Class<*>): Boolean {
        return try {
            val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as android.app.ActivityManager
            val runningServices = activityManager.getRunningServices(Integer.MAX_VALUE)
            runningServices.any { it.service.className == serviceClass.name }
        } catch (e: Exception) {
            Log.e(TAG, "❌ 检查服务运行状态失败", e)
            false
        }
    }
} 