打开增加检查网络情况
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.CAMERA" />
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
<uses-permission
|
<uses-permission
|
||||||
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||||
android:maxSdkVersion="32" />
|
android:maxSdkVersion="32" />
|
||||||
|
|||||||
@@ -1,16 +1,22 @@
|
|||||||
package com.sw.dualscreen.activity
|
package com.sw.dualscreen.activity
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.os.CountDownTimer
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.sw.dualscreen.GlobalData
|
import com.sw.dualscreen.GlobalData
|
||||||
import com.sw.dualscreen.databinding.ActivityInitBinding
|
import com.sw.dualscreen.databinding.ActivityInitBinding
|
||||||
|
import com.sw.dualscreen.dialog.RemindDialog
|
||||||
|
import com.sw.dualscreen.ext.clickWithDebounce
|
||||||
|
import com.sw.dualscreen.ext.visible
|
||||||
import com.sw.dualscreen.model.response.FoodVector
|
import com.sw.dualscreen.model.response.FoodVector
|
||||||
import com.sw.dualscreen.objbox.Food
|
import com.sw.dualscreen.objbox.Food
|
||||||
import com.sw.dualscreen.objbox.FoodModule
|
import com.sw.dualscreen.objbox.FoodModule
|
||||||
import com.sw.dualscreen.objbox.ObjectBox
|
import com.sw.dualscreen.objbox.ObjectBox
|
||||||
|
import com.sw.dualscreen.utils.L
|
||||||
import com.sw.dualscreen.viewmodel.BaseViewModel
|
import com.sw.dualscreen.viewmodel.BaseViewModel
|
||||||
import com.sw.dualscreen.viewmodel.UserViewModel
|
import com.sw.dualscreen.viewmodel.UserViewModel
|
||||||
|
import com.sw.plate.utils.AppUtil
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class InitActivity : BaseActivity<ActivityInitBinding>() {
|
class InitActivity : BaseActivity<ActivityInitBinding>() {
|
||||||
@@ -37,7 +43,11 @@ class InitActivity : BaseActivity<ActivityInitBinding>() {
|
|||||||
"version" to GlobalData.foodModelVersion
|
"version" to GlobalData.foodModelVersion
|
||||||
)
|
)
|
||||||
) { items ->
|
) { items ->
|
||||||
val list = items ?: emptyList()
|
if (items == null) {
|
||||||
|
getVectorErrorDialog()
|
||||||
|
return@getCollectedFoodVector
|
||||||
|
}
|
||||||
|
val list = items
|
||||||
if (pageNum == 1 && list.isEmpty()) {
|
if (pageNum == 1 && list.isEmpty()) {
|
||||||
block()
|
block()
|
||||||
return@getCollectedFoodVector
|
return@getCollectedFoodVector
|
||||||
@@ -75,20 +85,13 @@ class InitActivity : BaseActivity<ActivityInitBinding>() {
|
|||||||
|
|
||||||
override fun initialize() {
|
override fun initialize() {
|
||||||
super.initialize()
|
super.initialize()
|
||||||
showWaitingDialog("加载中……")
|
initNetworkTimer()
|
||||||
lifecycleScope.launch {
|
binding.okButton.clickWithDebounce(500) {
|
||||||
FoodModule.init(this@InitActivity) {
|
checkNetworkTimer?.cancel()
|
||||||
getCollectedFoodVector {
|
checkNetworkTimer?.start()
|
||||||
runOnUiThread {
|
|
||||||
hideWaitingDialog()
|
|
||||||
binding.root.postDelayed({
|
|
||||||
goMainActivity()
|
|
||||||
}, 1000)
|
|
||||||
}
|
}
|
||||||
}
|
showWaitingDialog("网络连接中...")
|
||||||
}
|
checkNetworkTimer?.start()
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// val isSuccess = viewModel.checkEquipmentInfo()
|
// val isSuccess = viewModel.checkEquipmentInfo()
|
||||||
// if (isSuccess) {
|
// if (isSuccess) {
|
||||||
@@ -116,9 +119,69 @@ class InitActivity : BaseActivity<ActivityInitBinding>() {
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getCollectedFoodVector() {
|
||||||
|
showWaitingDialog2("加载中……")
|
||||||
|
lifecycleScope.launch {
|
||||||
|
FoodModule.init(this@InitActivity) {
|
||||||
|
getCollectedFoodVector {
|
||||||
|
runOnUiThread {
|
||||||
|
hideWaitingDialog()
|
||||||
|
binding.root.postDelayed({
|
||||||
|
goMainActivity()
|
||||||
|
}, 1000)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun goMainActivity() {
|
private fun goMainActivity() {
|
||||||
val intent = Intent(this, MainActivity::class.java)
|
val intent = Intent(this, MainActivity::class.java)
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var checkNetworkTimer: CountDownTimer? = null
|
||||||
|
|
||||||
|
private fun initNetworkTimer() {
|
||||||
|
checkNetworkTimer = object : CountDownTimer(5 * 300, 300) {
|
||||||
|
override fun onTick(millisUntilFinished: Long) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onFinish() {
|
||||||
|
L.e("检测网络连接状态" + AppUtil.isNetworkConnected(this@InitActivity))
|
||||||
|
if (!AppUtil.isNetworkConnected(this@InitActivity)) {
|
||||||
|
hideWaitingDialog()
|
||||||
|
binding.okButton.visible()
|
||||||
|
loadNetworkErrorDialog()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
getCollectedFoodVector()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun loadNetworkErrorDialog() {
|
||||||
|
RemindDialog(
|
||||||
|
context = context,
|
||||||
|
content = "网络连接异常,请检查WiFi连接状态后重试",
|
||||||
|
confirmBlock = {
|
||||||
|
startActivity(Intent("android.settings.WIFI_SETTINGS"))
|
||||||
|
}).show()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getVectorErrorDialog() {
|
||||||
|
RemindDialog(
|
||||||
|
context = context,
|
||||||
|
content = "未查询到向量数据,请稍后重试?",
|
||||||
|
confirmBlock = {
|
||||||
|
getCollectedFoodVector()
|
||||||
|
}).show()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDestroy() {
|
||||||
|
checkNetworkTimer?.cancel()
|
||||||
|
super.onDestroy()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -916,8 +916,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
|||||||
// private val initialDelay = 5 * 60 * 1000L
|
// private val initialDelay = 5 * 60 * 1000L
|
||||||
// private val dealyMillis = 10 * 60 * 1000L
|
// private val dealyMillis = 10 * 60 * 1000L
|
||||||
private val initialDelay = 30 * 1000L
|
private val initialDelay = 30 * 1000L
|
||||||
private val dealyMillis = 60 * 1000L
|
private val dealyMillis = 3 * 60 * 1000L
|
||||||
private var taskPageNo = 1
|
// private var taskPageNo = 1
|
||||||
fun startFaceTask() {
|
fun startFaceTask() {
|
||||||
faceTaskJob =
|
faceTaskJob =
|
||||||
intervalExecutor.startIntervalTaskWithInitialDelay(initialDelay, dealyMillis) {
|
intervalExecutor.startIntervalTaskWithInitialDelay(initialDelay, dealyMillis) {
|
||||||
@@ -926,10 +926,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
|||||||
return@startIntervalTaskWithInitialDelay
|
return@startIntervalTaskWithInitialDelay
|
||||||
}
|
}
|
||||||
viewModel.getFaceIncrementList(
|
viewModel.getFaceIncrementList(
|
||||||
pageNo = taskPageNo,
|
// pageNo = taskPageNo,
|
||||||
timestamp = timestamp,
|
timestamp = timestamp,
|
||||||
onAllQueryFinished = {
|
onAllQueryFinished = {
|
||||||
taskPageNo = 1
|
// taskPageNo = 1
|
||||||
},
|
},
|
||||||
onPageQueryFinished = { list ->
|
onPageQueryFinished = { list ->
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
|
|||||||
@@ -116,13 +116,34 @@ fun EditText.addOnActionSearchListener(searchCallback: () -> Unit) {
|
|||||||
return@setOnEditorActionListener false
|
return@setOnEditorActionListener false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fun View.clickWithDebounce(delay: Long = 500, action: () -> Unit) {
|
//fun View.clickWithDebounce(delay: Long = 500, action: () -> Unit) {
|
||||||
var job: Job? = null
|
// var job: Job? = null
|
||||||
|
// setOnClickListener {
|
||||||
|
// job?.cancel()
|
||||||
|
// job = CoroutineScope(Dispatchers.Main).launch {
|
||||||
|
// delay(delay)
|
||||||
|
// action()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 极简版防重复点击扩展函数
|
||||||
|
* @param delay 防抖时间(默认300ms)
|
||||||
|
* @param action 点击执行逻辑
|
||||||
|
*/
|
||||||
|
fun View.clickWithDebounce(delay: Long = 300, action: () -> Unit) {
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
job?.cancel()
|
// 用View的tag存储是否可点击的状态(默认可点击)
|
||||||
job = CoroutineScope(Dispatchers.Main).launch {
|
if (tag as? Boolean ?: true) {
|
||||||
|
tag = false // 标记为不可点击
|
||||||
|
action() // 立即执行点击逻辑
|
||||||
|
|
||||||
|
// 启动协程,延迟后恢复可点击状态
|
||||||
|
CoroutineScope(Dispatchers.Main).launch {
|
||||||
delay(delay)
|
delay(delay)
|
||||||
action()
|
tag = true // 恢复可点击
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -185,17 +185,17 @@ class UserViewModel : BaseViewModel() {
|
|||||||
return@withContext
|
return@withContext
|
||||||
}
|
}
|
||||||
onPageQueryFinished(list)
|
onPageQueryFinished(list)
|
||||||
if (list.size >= pageSize) {
|
// if (list.size >= pageSize) {
|
||||||
lastFaceTimestamp = list.last().faceUpdateTimestamp ?: 0L
|
// lastFaceTimestamp = list.last().faceUpdateTimestamp ?: 0L
|
||||||
getFaceIncrementList(
|
// getFaceIncrementList(
|
||||||
pageNo = pageNo + 1,
|
// pageNo = pageNo + 1,
|
||||||
pageSize = pageSize,
|
// pageSize = pageSize,
|
||||||
timestamp = timestamp,
|
// timestamp = timestamp,
|
||||||
onAllQueryFinished = onAllQueryFinished,
|
// onAllQueryFinished = onAllQueryFinished,
|
||||||
onPageQueryFinished = onPageQueryFinished
|
// onPageQueryFinished = onPageQueryFinished
|
||||||
)
|
// )
|
||||||
return@withContext
|
// return@withContext
|
||||||
}
|
// }
|
||||||
//查询完成所有数据,保存时间戳
|
//查询完成所有数据,保存时间戳
|
||||||
if (list.isNotEmpty()) {
|
if (list.isNotEmpty()) {
|
||||||
//非空实现最后一条数据的是时间戳,空使用上次list最后一条时间戳
|
//非空实现最后一条数据的是时间戳,空使用上次list最后一条时间戳
|
||||||
@@ -576,7 +576,7 @@ class UserViewModel : BaseViewModel() {
|
|||||||
launchWithLoading {
|
launchWithLoading {
|
||||||
val response = repository.getCollectedFoodVector(param)
|
val response = repository.getCollectedFoodVector(param)
|
||||||
if (parseResponse(response)) {
|
if (parseResponse(response)) {
|
||||||
block(response.data)
|
block(response.data?:emptyList())
|
||||||
} else {
|
} else {
|
||||||
block(null)
|
block(null)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:shape="rectangle">
|
android:color="#30000000">
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
|
||||||
<solid android:color="#ff08C6DC" />
|
<solid android:color="#ff08C6DC" />
|
||||||
<corners android:radius="8dp" />
|
<corners android:radius="8dp" />
|
||||||
</shape>
|
</shape>
|
||||||
|
</item>
|
||||||
|
</ripple>
|
||||||
@@ -35,18 +35,18 @@
|
|||||||
android:layout_marginTop="200dp"
|
android:layout_marginTop="200dp"
|
||||||
android:src="@mipmap/img_init" />
|
android:src="@mipmap/img_init" />
|
||||||
|
|
||||||
<TextView
|
<androidx.appcompat.widget.AppCompatButton
|
||||||
android:id="@+id/okButton"
|
android:id="@+id/okButton"
|
||||||
android:layout_width="200dp"
|
android:layout_width="200dp"
|
||||||
android:layout_height="52dp"
|
android:layout_height="80dp"
|
||||||
android:layout_below="@+id/mainImgView"
|
android:layout_below="@+id/mainImgView"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginTop="60dp"
|
android:layout_marginTop="90dp"
|
||||||
android:background="@drawable/bg_init_button"
|
android:background="@drawable/bg_init_button"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="连接服务器"
|
android:text="重试"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textSize="22sp"
|
android:textSize="36sp"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@+id/mainImgView"
|
android:layout_below="@+id/mainImgView"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginTop="160dp"
|
android:layout_marginTop="260dp"
|
||||||
android:padding="10dp"
|
android:padding="10dp"
|
||||||
android:background="@drawable/bg_init_button"
|
android:background="@drawable/bg_init_button"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
|
|||||||
Reference in New Issue
Block a user