From c770aad6ecec7779a8417a7de775fc30279ac8d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Sat, 18 Apr 2026 17:56:04 +0800 Subject: [PATCH] =?UTF-8?q?feat(WelcomeActivity):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=BD=91=E7=BB=9C=E8=BF=9E=E6=8E=A5=E6=A3=80=E6=9F=A5=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入 ConnectivityManager 和 NetworkCapabilities 网络状态检测 - 添加 showMessage 扩展函数用于显示网络提示 - 在跳转到任务列表前验证网络连接状态 - 在语音识别触发前检查网络可用性 - 在 onResume 中增加网络连接检查 - 为 ChatActivity 和 TaskCenter 跳转添加网络验证 - 实现 runWithNetwork 函数封装网络检查逻辑 - 创建 ensureNetworkAvailable 函数显示网络状态提示 - 开发 isNetworkAvailable 函数检测互联网连接能力 --- .../nova/brain/glass/ui/WelcomeActivity.kt | 49 ++++++++++++++++--- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/nova/brain/glass/ui/WelcomeActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/WelcomeActivity.kt index d399336..2352f9b 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/WelcomeActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/WelcomeActivity.kt @@ -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() { @@ -51,11 +54,14 @@ class WelcomeActivity : BaseActivity() { 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() { 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() { 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() { super.onDestroy() window.clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } -} \ No newline at end of file + + 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) + } +}