Files
digital_person/app/src/main/java/com/digitalperson/util/SmartGreetingUtil.kt
2026-03-10 15:40:05 +08:00

99 lines
3.6 KiB
Kotlin
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<Boolean, String> {
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"
}
}
}