99 lines
3.6 KiB
Kotlin
99 lines
3.6 KiB
Kotlin
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。"
|
||
}
|
||
}
|
||
} |