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) + } +}