From 59591b63969862643741bf24e0132ef0c899270e Mon Sep 17 00:00:00 2001 From: Dedeo3 Date: Wed, 30 Apr 2025 01:30:11 +0700 Subject: [PATCH 1/4] update petunjuk dan ekpresi --- .../mfa/facedetector/MlKitEkspresiAnalyzer.kt | 2 +- .../view/activity/FaceProcessorActivity.kt | 25 ++++++++++++++----- .../java/com/mfa/view/activity/Simpanwajah.kt | 1 - 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/AndroidApps/app/src/main/java/com/mfa/facedetector/MlKitEkspresiAnalyzer.kt b/AndroidApps/app/src/main/java/com/mfa/facedetector/MlKitEkspresiAnalyzer.kt index 3ce7531..820c727 100644 --- a/AndroidApps/app/src/main/java/com/mfa/facedetector/MlKitEkspresiAnalyzer.kt +++ b/AndroidApps/app/src/main/java/com/mfa/facedetector/MlKitEkspresiAnalyzer.kt @@ -110,7 +110,7 @@ class MlKitEkspresiAnalyzer(private val onExpressionDetected: (String) -> Unit) mouthOpen && smilingProbability < 0.3f && face.headEulerAngleZ > 15 -> "kaget dan miringkan kepala ke kanan" mouthOpen && smilingProbability < 0.3f && face.headEulerAngleZ < -15 -> "kaget dan miringkan kepala ke kiri" mouthOpen && smilingProbability < 0.3f && - leftEyeOpenProbability > 0.6f && rightEyeOpenProbability > 0.6f -> "kaget" + leftEyeOpenProbability > 0.6f && rightEyeOpenProbability > 0.6f -> "kaget (buka mulut)" smilingProbability > 0.5 && pitchAngle > 15 -> "senyum dan angkat kepala" rightEyeOpenProbability < 0.4 && face.headEulerAngleZ > 15 -> "tutup mata kiri dan miringkan kepala ke kanan" smilingProbability > 0.5 && eyeClosed -> "senyum dan kedip" diff --git a/AndroidApps/app/src/main/java/com/mfa/view/activity/FaceProcessorActivity.kt b/AndroidApps/app/src/main/java/com/mfa/view/activity/FaceProcessorActivity.kt index 7221f4c..6307d8a 100644 --- a/AndroidApps/app/src/main/java/com/mfa/view/activity/FaceProcessorActivity.kt +++ b/AndroidApps/app/src/main/java/com/mfa/view/activity/FaceProcessorActivity.kt @@ -77,6 +77,7 @@ class FaceProcessorActivity : AppCompatActivity() { private var expressionTimeoutHandler: Handler? = null private var expressionTimeoutRunnable: Runnable? = null private val MAX_EXPRESSION_TIME_MS = 7000L + private val STATIC_EXPRESSION_TIME_MS = 5000L private var isCameraChanging = false private var pausedExpression: String? = null private var pausedIndex = 0 @@ -86,7 +87,16 @@ class FaceProcessorActivity : AppCompatActivity() { "senyum dan angkat kepala", "kaget dan miringkan kepala ke kanan", "senyum dan kedip", "senyum dan miringkan kepala ke kiri", "senyum dan miringkan kepala ke kanan", "kaget dan miringkan kepala ke kiri", - "kaget", "hadap kiri", + "kaget (buka mulut)", "hadap kiri", + "hadap kanan", "angkat kepala", + "tunduk (angguk)", "kedip dua kali", + "miringkan kepala ke kanan", "miringkan kepala ke kiri", + "senyum", "kedip", + "tutup mata kanan", "tutup mata kiri" + ) + + private val staticExpressions = listOf( + "kaget (buka mulut)", "hadap kiri", "hadap kanan", "angkat kepala", "tunduk (angguk)", "kedip dua kali", "miringkan kepala ke kanan", "miringkan kepala ke kiri", @@ -404,7 +414,6 @@ class FaceProcessorActivity : AppCompatActivity() { """Keren kamu berhasil menyelesaikan tantangan, sebelum verifikasi wajah pastikan: - Rapikan rambut - Ekspresi datar - - Tidak memakai kacamata - Wajah agak dekat kamera """.trimIndent(), "Verifikasi wajah", @@ -501,7 +510,7 @@ class FaceProcessorActivity : AppCompatActivity() { private fun startFaceVerification() { Log.d("FaceVerification", "Mulai verifikasi wajah (5 kali auto capture)...") runOnUiThread { - binding.expressionCommandText.text = "Tolong tahan posisi HP dan wajah Anda dengan ekspresi datar, tanpa memakai kacamata, selama beberapa detik." + binding.expressionCommandText.text = "Tolong tahan posisi HP dan wajah Anda dengan ekspresi datar, selama beberapa detik." binding.imageViewPreview.visibility = View.GONE binding.previewView.visibility = View.VISIBLE binding.verifyButton.visibility = View.GONE @@ -672,7 +681,11 @@ class FaceProcessorActivity : AppCompatActivity() { private fun startExpressionTimeout() { cancelExpressionTimeout() // if (currentIndex == 0) return - + val timeout = if (selectedExpressions[currentIndex] in staticExpressions) { + STATIC_EXPRESSION_TIME_MS // 3 detik untuk ekspresi statis + } else { + MAX_EXPRESSION_TIME_MS // 7 detik untuk ekspresi dinamis + } expressionTimeoutHandler = Handler(Looper.getMainLooper()) expressionTimeoutRunnable = Runnable { timeoutWarningCount++ @@ -701,7 +714,7 @@ class FaceProcessorActivity : AppCompatActivity() { } } } - expressionTimeoutHandler?.postDelayed(expressionTimeoutRunnable!!, MAX_EXPRESSION_TIME_MS) + expressionTimeoutHandler?.postDelayed(expressionTimeoutRunnable!!, timeout) Log.d("FaceProcessor", "Timeout dimulai untuk tahap ekspresi ke-${currentIndex + 1}") } @@ -888,4 +901,4 @@ class FaceProcessorActivity : AppCompatActivity() { companion object { const val EXTRA_FACE_EMBEDDING = "EXTRA_FACE_EMBEDDING" } -} \ No newline at end of file +} diff --git a/AndroidApps/app/src/main/java/com/mfa/view/activity/Simpanwajah.kt b/AndroidApps/app/src/main/java/com/mfa/view/activity/Simpanwajah.kt index f261d28..bb5f9b1 100644 --- a/AndroidApps/app/src/main/java/com/mfa/view/activity/Simpanwajah.kt +++ b/AndroidApps/app/src/main/java/com/mfa/view/activity/Simpanwajah.kt @@ -313,7 +313,6 @@ class Simpanwajah : AppCompatActivity(), CameraManager.OnTakeImageCallback { findViewById(R.id.tvMessage).text = """ - Rapikan rambut - Ekspresi datar - - Tidak memakai kacamata - Wajah agak dekat kamera """.trimIndent() From 231f854086ad8352fbf1e1727c8052abbc397b2c Mon Sep 17 00:00:00 2001 From: Dedeo3 Date: Wed, 30 Apr 2025 08:50:10 +0700 Subject: [PATCH 2/4] update db --- Backend/mfa_presensi.db | Bin 73728 -> 73728 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Backend/mfa_presensi.db b/Backend/mfa_presensi.db index d5c1173b45beb34327da9509226fc0c18acc54e3..9d9c51384971996203bccc89a88149f12a9812a4 100644 GIT binary patch delta 22 dcmZoTz|wGlWr8$g^+XwG#_Gm|tqF_^ Date: Wed, 30 Apr 2025 10:36:16 +0700 Subject: [PATCH 3/4] turunin threshold --- .../main/java/com/mfa/view/activity/FaceProcessorActivity.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AndroidApps/app/src/main/java/com/mfa/view/activity/FaceProcessorActivity.kt b/AndroidApps/app/src/main/java/com/mfa/view/activity/FaceProcessorActivity.kt index 6307d8a..b0ade6b 100644 --- a/AndroidApps/app/src/main/java/com/mfa/view/activity/FaceProcessorActivity.kt +++ b/AndroidApps/app/src/main/java/com/mfa/view/activity/FaceProcessorActivity.kt @@ -72,7 +72,7 @@ class FaceProcessorActivity : AppCompatActivity() { private lateinit var binding: ActivityCaptureFaceBinding private lateinit var cameraEkspresi: CameraEkspresi private lateinit var ekspresiRecognizer: EkspresiRecognizer - private val EMBEDDING_THRESHOLD = 0.8f + private val EMBEDDING_THRESHOLD = 0.6f private lateinit var profileViewModel: ProfileViewModel private var expressionTimeoutHandler: Handler? = null private var expressionTimeoutRunnable: Runnable? = null @@ -901,4 +901,4 @@ class FaceProcessorActivity : AppCompatActivity() { companion object { const val EXTRA_FACE_EMBEDDING = "EXTRA_FACE_EMBEDDING" } -} +} \ No newline at end of file From c8655df09284f3e782f6766d516e917accbd5ffb Mon Sep 17 00:00:00 2001 From: Dedeo3 Date: Wed, 30 Apr 2025 10:36:27 +0700 Subject: [PATCH 4/4] update --- Backend/mfa_presensi.db | Bin 73728 -> 73728 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Backend/mfa_presensi.db b/Backend/mfa_presensi.db index 9d9c51384971996203bccc89a88149f12a9812a4..8a4a5586b888e9a31e29a569aa8a7c49ef97e289 100644 GIT binary patch delta 22 dcmZoTz|wGlWr8$g{X`jO#`?yDtqF_^