调整了人脸识别背景及提示位置
This commit is contained in:
@@ -5,15 +5,12 @@ import android.graphics.Outline
|
|||||||
import android.graphics.Typeface
|
import android.graphics.Typeface
|
||||||
import android.hardware.display.DisplayManager
|
import android.hardware.display.DisplayManager
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewOutlineProvider
|
import android.view.ViewOutlineProvider
|
||||||
import android.widget.AdapterView
|
import android.widget.AdapterView
|
||||||
import android.widget.ArrayAdapter
|
import android.widget.ArrayAdapter
|
||||||
import androidx.activity.enableEdgeToEdge
|
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
|
||||||
import androidx.camera.core.CameraSelector
|
import androidx.camera.core.CameraSelector
|
||||||
import androidx.camera.core.ImageAnalysis
|
import androidx.camera.core.ImageAnalysis
|
||||||
import androidx.camera.core.ImageCapture
|
import androidx.camera.core.ImageCapture
|
||||||
@@ -36,7 +33,6 @@ import com.sw.dualscreen.presentation.SecondaryScreenPresentation
|
|||||||
import com.sw.dualscreen.sdk.SensorScaleUtils
|
import com.sw.dualscreen.sdk.SensorScaleUtils
|
||||||
import com.sw.dualscreen.utils.GlideUtils
|
import com.sw.dualscreen.utils.GlideUtils
|
||||||
import com.sw.dualscreen.view.CustomBottomSheetDialog
|
import com.sw.dualscreen.view.CustomBottomSheetDialog
|
||||||
import com.sw.dualscreen.view.CustomDialog
|
|
||||||
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.ToastUtils
|
import com.sw.plate.utils.ToastUtils
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ class SecondaryScreenPresentation(
|
|||||||
private val debouncer = Debouncer(500)
|
private val debouncer = Debouncer(500)
|
||||||
private var recognitionTime: Long = 0L // 人脸识别时的时间
|
private var recognitionTime: Long = 0L // 人脸识别时的时间
|
||||||
private var recognitionWeight: Double = 0.0 // 人脸识别时的重量
|
private var recognitionWeight: Double = 0.0 // 人脸识别时的重量
|
||||||
private var lastFaceTrackId: Int = 0 // 上一次的人脸信息
|
private var lastFaceTrackId: Int = -1 // 上一次的人脸信息
|
||||||
private var mealPickupMode: Int = 0 // 取餐模式 0 即放即取 1 余量取餐
|
private var mealPickupMode: Int = 0 // 取餐模式 0 即放即取 1 余量取餐
|
||||||
|
|
||||||
// 当前步骤
|
// 当前步骤
|
||||||
@@ -176,6 +176,7 @@ class SecondaryScreenPresentation(
|
|||||||
binding.flPreview.visibility = View.VISIBLE
|
binding.flPreview.visibility = View.VISIBLE
|
||||||
binding.ivImg.visibility = View.VISIBLE
|
binding.ivImg.visibility = View.VISIBLE
|
||||||
binding.flFace.visibility = View.INVISIBLE
|
binding.flFace.visibility = View.INVISIBLE
|
||||||
|
binding.tvFaceTip.visibility = View.GONE
|
||||||
pauseCamera()
|
pauseCamera()
|
||||||
binding.tvBottomTip.visibility = View.VISIBLE
|
binding.tvBottomTip.visibility = View.VISIBLE
|
||||||
itemUserNutritionBinding.clNutritionData.visibility = View.GONE
|
itemUserNutritionBinding.clNutritionData.visibility = View.GONE
|
||||||
@@ -750,7 +751,7 @@ class SecondaryScreenPresentation(
|
|||||||
* @param facePreviewInfoList RGB画面的实时人脸信息
|
* @param facePreviewInfoList RGB画面的实时人脸信息
|
||||||
*/
|
*/
|
||||||
private fun drawPreviewInfo(facePreviewInfoList: MutableList<FacePreviewInfo?>) {
|
private fun drawPreviewInfo(facePreviewInfoList: MutableList<FacePreviewInfo?>) {
|
||||||
// Timber.d("drawPreviewInfo facePreviewInfoList = ${facePreviewInfoList.size}, rgbFaceRectTransformer = ${rgbFaceRectTransformer != null}")
|
Timber.d("drawPreviewInfo facePreviewInfoList = ${facePreviewInfoList.size}, rgbFaceRectTransformer = ${rgbFaceRectTransformer != null}")
|
||||||
if (rgbFaceRectTransformer != null) {
|
if (rgbFaceRectTransformer != null) {
|
||||||
val rgbDrawInfoList: MutableList<DrawInfo?>? = recognizeViewModel.getDrawInfo(
|
val rgbDrawInfoList: MutableList<DrawInfo?>? = recognizeViewModel.getDrawInfo(
|
||||||
facePreviewInfoList,
|
facePreviewInfoList,
|
||||||
@@ -762,9 +763,9 @@ class SecondaryScreenPresentation(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (facePreviewInfoList.isEmpty() || (lastFaceTrackId != facePreviewInfoList[0]!!.trackId)) {
|
if (facePreviewInfoList.isEmpty() || (lastFaceTrackId != facePreviewInfoList[0]!!.trackId)) {
|
||||||
if (lastFaceTrackId != 0) {
|
if (lastFaceTrackId != -1) {
|
||||||
Timber.i("$lastFaceTrackId 用户离开")
|
Timber.i("$lastFaceTrackId 用户离开")
|
||||||
lastFaceTrackId = 0
|
lastFaceTrackId = -1
|
||||||
postUserData()
|
postUserData()
|
||||||
if (mealPickupMode == 0) {
|
if (mealPickupMode == 0) {
|
||||||
step1()
|
step1()
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package com.sw.dualscreen.utils
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.util.DisplayMetrics
|
||||||
|
import android.view.WindowManager
|
||||||
|
import timber.log.Timber
|
||||||
|
import kotlin.math.sqrt
|
||||||
|
|
||||||
|
object ScreenUtils {
|
||||||
|
fun printScreenInfo(context: Context, tag: String) {
|
||||||
|
val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
|
||||||
|
val displayMetrics = DisplayMetrics()
|
||||||
|
|
||||||
|
// 方法 1:获取应用可用区域(排除系统装饰,如状态栏)
|
||||||
|
windowManager.defaultDisplay.getMetrics(displayMetrics)
|
||||||
|
|
||||||
|
// 方法 2:获取整个屏幕的物理尺寸(包括状态栏和导航栏)
|
||||||
|
// windowManager.defaultDisplay.getRealMetrics(displayMetrics)
|
||||||
|
|
||||||
|
val screenWidthPx = displayMetrics.widthPixels // 屏幕宽度(像素)
|
||||||
|
val screenHeightPx = displayMetrics.heightPixels // 屏幕高度(像素)
|
||||||
|
val density = displayMetrics.density // 逻辑密度(1.0 = mdpi, 2.0 = xhdpi)
|
||||||
|
val densityDpi = displayMetrics.densityDpi // 屏幕 DPI 分类(160 = mdpi, 320 = xhdpi)
|
||||||
|
val xdpi = displayMetrics.xdpi // 物理水平 DPI
|
||||||
|
val ydpi = displayMetrics.ydpi // 物理垂直 DPI
|
||||||
|
|
||||||
|
// 打印信息
|
||||||
|
Timber.d("$tag 屏幕信息")
|
||||||
|
Timber.d("屏幕分辨率(像素): ${screenWidthPx}x${screenHeightPx}")
|
||||||
|
Timber.d("逻辑密度: $density")
|
||||||
|
Timber.d("DPI 分类: $densityDpi")
|
||||||
|
Timber.d("物理 DPI (x/y): $xdpi / $ydpi")
|
||||||
|
|
||||||
|
// 计算屏幕物理尺寸(英寸)
|
||||||
|
val screenWidthInches = screenWidthPx / xdpi
|
||||||
|
val screenHeightInches = screenHeightPx / ydpi
|
||||||
|
val diagonalInches = sqrt(
|
||||||
|
(screenWidthInches * screenWidthInches + screenHeightInches * screenHeightInches).toDouble()
|
||||||
|
)
|
||||||
|
Timber.d(
|
||||||
|
"屏幕物理尺寸(英寸): %.1f x %.1f (对角线: %.1f\")".format(
|
||||||
|
screenWidthInches, screenHeightInches, diagonalInches
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 292 KiB After Width: | Height: | Size: 172 KiB |
@@ -82,7 +82,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
android:layout_marginTop="566dp"
|
android:layout_marginTop="586dp"
|
||||||
android:text="请正视屏幕"
|
android:text="请正视屏幕"
|
||||||
android:textColor="#ffece7d0"
|
android:textColor="#ffece7d0"
|
||||||
android:textSize="24sp"
|
android:textSize="24sp"
|
||||||
|
|||||||
Reference in New Issue
Block a user