diff --git a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt index 9537a46..a720c11 100644 --- a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt +++ b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt @@ -226,7 +226,7 @@ fun PlacementGuideView(appState: AppState) { val hint = directionHint.ifEmpty { " " } append(hint) if (hint.startsWith("Slide") || hint.startsWith("Optimizing") || - hint.startsWith("Centering") || hint.startsWith("Adjust")) { + hint.startsWith("Checking") || hint.startsWith("Adjust")) { append(dots) } if (appState.isDevMode && !lastCv.isNaN()) { @@ -685,7 +685,17 @@ fun PlacementGuideView(appState: AppState) { } else if (phaseProtected && phaseHoldHint.isNotEmpty()) { // 보호 중 → 전환 힌트 강제 유지, lastHintChangeMs 안 건드림 directionHint = phaseHoldHint - directionIcon = "checkmark.circle" + // 힌트 텍스트에서 방향 아이콘 추론 (화살표 유지) + directionIcon = when { + phaseHoldHint.contains("up", ignoreCase = true) || phaseHoldHint.contains("↑") -> "arrow.up" + phaseHoldHint.contains("down", ignoreCase = true) || phaseHoldHint.contains("↓") -> "arrow.down" + phaseHoldHint.contains("left", ignoreCase = true) || phaseHoldHint.contains("←") -> "arrow.left" + phaseHoldHint.contains("right", ignoreCase = true) || phaseHoldHint.contains("→") -> "arrow.right" + else -> "checkmark.circle" + } + } else { + // 디바운스 중이라도 화살표 방향은 최신 상태로 갱신 + directionIcon = guideResult.icon } // GREEN hold 중이면 힌트 강제 유지 @@ -1234,7 +1244,7 @@ private fun computePlacementGuide( val detectedCount = detected.count { it } if (detectedCount == 0) { - return PlacementGuideResult("Slide up", "arrow.up", 0, + return PlacementGuideResult("Slide up ↑", "arrow.up", 0, phase = PlacementPhase.VERTICAL, nextPhase = PlacementPhase.VERTICAL) } @@ -1292,7 +1302,7 @@ private fun computePlacementGuide( val lrHint = when { l4 > 0 && l5 > 0 && l4 > l5 -> "Slide left ←" l4 > 0 && l5 > 0 && l5 > l4 -> "Slide right →" - else -> "Centering" + else -> "Checking" } val lrIcon = when { l4 > 0 && l5 > 0 && l4 > l5 -> "arrow.left" @@ -1328,13 +1338,13 @@ private fun computePlacementGuide( val hint: String; val icon: String when { (ch0det || ch1det) && !ch2det && !ch3det -> { - hint = "Slide up"; icon = "arrow.up" + hint = "Slide up ↑"; icon = "arrow.up" } (ch3det || ch2det) && !ch0det && !ch1det -> { - hint = "Slide down"; icon = "arrow.down" + hint = "Slide down ↓"; icon = "arrow.down" } else -> { - hint = "Slide up"; icon = "arrow.up" + hint = "Slide up ↑"; icon = "arrow.up" } } return PlacementGuideResult(hint, icon, centerDetected * 10, @@ -1379,7 +1389,7 @@ private fun computePlacementGuide( val ch5ok = detected.getOrElse(5) { false } // 항상 LATERAL 단계를 거침 — 전환 시 항상 Checking 표시 - val lrHint = "Centering" + val lrHint = "Checking" val lrIcon = "checkmark.circle" val score = (40 + ((1.0 - kotlin.math.abs(gradient) / gradientThr) * 20).toInt()) .coerceIn(40, 60) @@ -1396,16 +1406,16 @@ private fun computePlacementGuide( val ch4ok = detected.getOrElse(4) { false } val ch5ok = detected.getOrElse(5) { false } // 항상 LATERAL 단계를 거침 - return PlacementGuideResult("Centering", + return PlacementGuideResult("Checking", "checkmark.circle", 50, phase = PlacementPhase.VERTICAL, nextPhase = PlacementPhase.LATERAL) } else if (gradient > 0) { - val intensity = if (gradient > 0.8) "Slide down" else "Slide down slightly" + val intensity = if (gradient > 0.8) "Slide down ↓" else "Slide down slightly ↓" return PlacementGuideResult(intensity, "arrow.down", (20 + centerDetected * 5).coerceAtMost(35), phase = PlacementPhase.VERTICAL, nextPhase = PlacementPhase.VERTICAL) } else { - val intensity = if (gradient < -0.8) "Slide up" else "Slide up slightly" + val intensity = if (gradient < -0.8) "Slide up ↑" else "Slide up slightly ↑" return PlacementGuideResult(intensity, "arrow.up", (20 + centerDetected * 5).coerceAtMost(35), phase = PlacementPhase.VERTICAL, nextPhase = PlacementPhase.VERTICAL) @@ -1428,7 +1438,7 @@ private fun computePlacementGuide( // 절대 차이 10 sample 이하 → 좌우 충분히 균등, 바로 GREEN if (ch4det && ch5det && kotlin.math.abs(len4 - len5) <= 10) { return PlacementGuideResult( - "LR balanced. Final check...", + "Final check...", "checkmark.circle", 60, phase = PlacementPhase.LATERAL, nextPhase = PlacementPhase.GREEN) } @@ -1582,10 +1592,10 @@ private fun computePlacementGuide( adjustHint = "Slide right →"; adjustIcon = "arrow.right" } gradient > 0.3 -> { - adjustHint = "Slide down"; adjustIcon = "arrow.down" + adjustHint = "Slide down ↓"; adjustIcon = "arrow.down" } gradient < -0.3 -> { - adjustHint = "Slide up"; adjustIcon = "arrow.up" + adjustHint = "Slide up ↑"; adjustIcon = "arrow.up" } else -> { // 방향 애매 + CV 미달 → ch별 len 분석으로 방향 제시 @@ -1596,10 +1606,10 @@ private fun computePlacementGuide( // 최소 채널이 최대의 60% 미만 → 약한 쪽으로 안내 if (minCh <= 1) { // ch0/ch1 약함 → 위로 - adjustHint = "Slide up slightly"; adjustIcon = "arrow.up" + adjustHint = "Slide up slightly ↑"; adjustIcon = "arrow.up" } else { // ch2/ch3 약함 → 아래로 - adjustHint = "Slide down slightly"; adjustIcon = "arrow.down" + adjustHint = "Slide down slightly ↓"; adjustIcon = "arrow.down" } } else { adjustHint = "Optimizing"; adjustIcon = "checkmark.circle" diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index 8fde456..0000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index b070c76..0000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..8c3bd0e Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index c209e78..0000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..8c3bd0e Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index b2dfe3d..0000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..e4cc44a Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 4f0f1d6..0000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..e4cc44a Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp deleted file mode 100644 index 62b611d..0000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..d2da9db Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 948a307..0000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..d2da9db Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 1b9a695..0000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..079acbd Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index 28d4b77..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..079acbd Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp deleted file mode 100644 index 9287f50..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..d595cc2 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp deleted file mode 100644 index aa7d642..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..d595cc2 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp deleted file mode 100644 index 9126ae3..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and /dev/null differ