package com.digitalperson.util import android.content.Context import android.location.LocationManager import android.net.ConnectivityManager import android.net.NetworkCapabilities import android.os.Build import java.text.SimpleDateFormat import java.util.* class SmartGreetingUtil(private val context: Context) { // 中国主要节日(月,日) private val festivals = mapOf( Pair(1, 1) to "元旦", Pair(2, 14) to "情人节", Pair(3, 8) to "妇女节", Pair(3, 12) to "植树节", Pair(4, 1) to "愚人节", Pair(5, 1) to "劳动节", Pair(5, 4) to "青年节", Pair(6, 1) to "儿童节", Pair(7, 1) to "建党节", Pair(8, 1) to "建军节", Pair(9, 10) to "教师节", Pair(10, 1) to "国庆节", Pair(12, 25) to "圣诞节" ) // 获取当前时间问候语 fun getTimeBasedGreeting(): String { val hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY) return when { hour in 6..11 -> "早上好" hour in 12..17 -> "下午好" hour in 18..22 -> "晚上好" else -> "夜深了" } } // 检查今天是否是节日 fun isFestivalToday(): Pair { val calendar = Calendar.getInstance() val month = calendar.get(Calendar.MONTH) + 1 // 月份从0开始 val day = calendar.get(Calendar.DAY_OF_MONTH) val festival = festivals[Pair(month, day)] return Pair(festival != null, festival ?: "") } // 获取完整的问候语 fun getSmartGreeting(name: String?): String { val (isFestival, festivalName) = isFestivalToday() return if (isFestival) { if (name.isNullOrBlank()) { "小朋友好!今天是${festivalName},祝你${festivalName}快乐哦!" } else { "你好,${name}!今天是${festivalName},祝你${festivalName}快乐哦!" } } else { val timeGreeting = getTimeBasedGreeting() if (name.isNullOrBlank()) { "${timeGreeting},很高兴见到你。请问你叫什么名字呀?" } else { "${timeGreeting},${name},很高兴见到你。" } } } // 检查网络连接 fun isNetworkConnected(): Boolean { val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { val network = connectivityManager.activeNetwork ?: return false val capabilities = connectivityManager.getNetworkCapabilities(network) ?: return false return capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) } else { val networkInfo = connectivityManager.activeNetworkInfo ?: return false return networkInfo.isConnected } } // 获取当前日期和时间 fun getCurrentDateTime(): String { val sdf = SimpleDateFormat("yyyy年MM月dd日 HH:mm", Locale.CHINA) return sdf.format(Date()) } // 生成节日问候语提示词(用于本地LLM) fun getFestivalGreetingPrompt(festivalName: String, name: String?): String { val basePrompt = "今天是$festivalName,请生成一条适合小学生的节日问候语,语气活泼友好,简短亲切。" return if (name.isNullOrBlank()) { basePrompt } else { "$basePrompt 问候对象叫$name。" } } }