优化:修改人脸识别任务延迟参数和添加相机权限检查
This commit is contained in:
@@ -1,8 +1,12 @@
|
||||
package com.sw.dualscreen.activity
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Intent
|
||||
import android.os.CountDownTimer
|
||||
import android.provider.Settings
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.sw.dualscreen.GlobalData
|
||||
import com.sw.dualscreen.databinding.ActivityInitBinding
|
||||
@@ -27,6 +31,27 @@ class InitActivity : BaseActivity<ActivityInitBinding>() {
|
||||
private val userViewModel by viewModels<UserViewModel>()
|
||||
private var pageNum = 1
|
||||
|
||||
// 相机权限请求回调
|
||||
private val requestCameraPermissionLauncher = registerForActivityResult(
|
||||
ActivityResultContracts.RequestPermission()
|
||||
) { isGranted ->
|
||||
if (isGranted) {
|
||||
// 权限请求成功,打开 MainActivity
|
||||
goMainActivity()
|
||||
} else {
|
||||
// 权限请求失败,显示弹窗
|
||||
showPermissionDeniedDialog()
|
||||
}
|
||||
}
|
||||
|
||||
// 设置页面返回的回调
|
||||
private val startSettingsLauncher = registerForActivityResult(
|
||||
ActivityResultContracts.StartActivityForResult()
|
||||
) {
|
||||
// 从设置页面返回,重新检查权限
|
||||
checkCameraPermissionAfterSettings()
|
||||
}
|
||||
|
||||
override fun getViewModel(): BaseViewModel {
|
||||
return userViewModel
|
||||
}
|
||||
@@ -128,7 +153,7 @@ class InitActivity : BaseActivity<ActivityInitBinding>() {
|
||||
runOnUiThread {
|
||||
hideWaitingDialog()
|
||||
binding.root.postDelayed({
|
||||
goMainActivity()
|
||||
checkCameraPermissionAndGo()
|
||||
}, 1000)
|
||||
}
|
||||
}
|
||||
@@ -142,6 +167,53 @@ class InitActivity : BaseActivity<ActivityInitBinding>() {
|
||||
finish()
|
||||
}
|
||||
|
||||
// 检查相机权限
|
||||
private fun checkCameraPermissionAndGo() {
|
||||
val hasCameraPermission = ContextCompat.checkSelfPermission(
|
||||
this,
|
||||
Manifest.permission.CAMERA
|
||||
) == android.content.pm.PackageManager.PERMISSION_GRANTED
|
||||
|
||||
if (hasCameraPermission) {
|
||||
// 有权限,直接打开 MainActivity
|
||||
goMainActivity()
|
||||
} else {
|
||||
// 无权限,请求相机权限
|
||||
requestCameraPermissionLauncher.launch(Manifest.permission.CAMERA)
|
||||
}
|
||||
}
|
||||
|
||||
// 从设置页面返回后检查权限
|
||||
private fun checkCameraPermissionAfterSettings() {
|
||||
val hasCameraPermission = ContextCompat.checkSelfPermission(
|
||||
this,
|
||||
Manifest.permission.CAMERA
|
||||
) == android.content.pm.PackageManager.PERMISSION_GRANTED
|
||||
|
||||
if (hasCameraPermission) {
|
||||
// 权限已授予,打开 MainActivity
|
||||
goMainActivity()
|
||||
} else {
|
||||
// 权限仍未授予,再次显示弹窗
|
||||
showPermissionDeniedDialog()
|
||||
}
|
||||
}
|
||||
|
||||
// 显示权限被拒绝的弹窗
|
||||
private fun showPermissionDeniedDialog() {
|
||||
RemindDialog(
|
||||
context = context,
|
||||
content = "暂无相机权限,请授权后重试",
|
||||
confirmBlock = {
|
||||
// 打开 App 设置页面
|
||||
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
|
||||
data = android.net.Uri.fromParts("package", packageName, null)
|
||||
}
|
||||
startSettingsLauncher.launch(intent)
|
||||
}
|
||||
).show()
|
||||
}
|
||||
|
||||
private var checkNetworkTimer: CountDownTimer? = null
|
||||
|
||||
private fun initNetworkTimer() {
|
||||
|
||||
@@ -923,8 +923,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
||||
|
||||
// private val initialDelay = 5 * 60 * 1000L
|
||||
// private val dealyMillis = 10 * 60 * 1000L
|
||||
private val initialDelay = 30 * 1000L
|
||||
private val dealyMillis = 3 * 60 * 1000L
|
||||
private val initialDelay = 10 * 1000L
|
||||
private val dealyMillis = 5 * 1000L
|
||||
// private var taskPageNo = 1
|
||||
fun startFaceTask() {
|
||||
faceTaskJob =
|
||||
|
||||
Reference in New Issue
Block a user