feat(WelcomeActivity): 添加网络连接检查功能

- 引入 ConnectivityManager 和 NetworkCapabilities 网络状态检测
- 添加 showMessage 扩展函数用于显示网络提示
- 在跳转到任务列表前验证网络连接状态
- 在语音识别触发前检查网络可用性
- 在 onResume 中增加网络连接检查
- 为 ChatActivity 和 TaskCenter 跳转添加网络验证
- 实现 runWithNetwork 函数封装网络检查逻辑
- 创建 ensureNetworkAvailable 函数显示网络状态提示
- 开发 isNetworkAvailable 函数检测互联网连接能力
这个提交包含在:
徐勤民 2026-04-18 17:56:04 +08:00
父节点 5fec9c46ca
当前提交 c770aad6ec

查看文件

@ -1,6 +1,8 @@
package com.nova.brain.glass.ui
import android.content.Intent
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.os.Bundle
import android.os.Handler
import android.os.Looper
@ -14,6 +16,7 @@ import com.nova.brain.glass.helper.OfflineCmdListener
import com.nova.brain.glass.helper.OfflineCmdServiceHelper
import com.nova.brain.glass.model.RecognizeParams
import com.nova.brain.glass.viewmodel.WelcomeVM
import com.xuqm.base.extensions.showMessage
import com.xuqm.base.ui.BaseActivity
class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
@ -51,11 +54,14 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
vm = ViewModelProvider(this)[WelcomeVM::class.java]
window.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
binding.tv.setOnClickListener {
startActivity(Intent(this, TaskListActivity::class.java))
runWithNetwork {
startActivity(Intent(this, TaskListActivity::class.java))
}
}
}
private fun triggerRecognize() {
if (!ensureNetworkAvailable()) return
startDotsAnim()
IntentRecognizeHelper.recognize(
text = "查看我的任务列表?",
@ -85,7 +91,9 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
runOnUiThread {
when (cmd) {
"任务列表", "查看任务", "查看任务列表" -> {
startActivity(Intent(this@WelcomeActivity, TaskListActivity::class.java))
runWithNetwork {
startActivity(Intent(this@WelcomeActivity, TaskListActivity::class.java))
}
}
}
}
@ -96,16 +104,21 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
super.onResume()
OfflineCmdServiceHelper.addOnLineListener(offlineCmdListener)
OfflineCmdServiceHelper.addListenerWelcome()
ensureNetworkAvailable()
stopDotsAnim() // 从 ChatActivity 返回时恢复原文
AsrHelper.scene = "home"
AsrHelper.onGoToDecisionCenter = { action ->
startActivity(
Intent(this, ChatActivity::class.java)
.putExtra("question", action.params.question)
)
runWithNetwork {
startActivity(
Intent(this, ChatActivity::class.java)
.putExtra("question", action.params.question)
)
}
}
AsrHelper.onGoToTaskCenter = { action ->
startActivity(intentForTaskList(action.params))
runWithNetwork {
startActivity(intentForTaskList(action.params))
}
}
}
@ -133,4 +146,24 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
super.onDestroy()
window.clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
private fun runWithNetwork(action: () -> Unit) {
if (ensureNetworkAvailable()) {
action()
}
}
private fun ensureNetworkAvailable(): Boolean {
if (isNetworkAvailable()) return true
"当前无网络,请检查网络连接".showMessage()
return false
}
private fun isNetworkAvailable(): Boolean {
val connectivityManager =
getSystemService(ConnectivityManager::class.java) ?: return false
val network = connectivityManager.activeNetwork ?: return false
val capabilities = connectivityManager.getNetworkCapabilities(network) ?: return false
return capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
}
}