diff --git a/app/src/main/java/com/medithings/vesiscan/ui/views/monitoring/PlacementGuideView.kt b/app/src/main/java/com/medithings/vesiscan/ui/views/monitoring/PlacementGuideView.kt
index 72d4b5f..e78538b 100644
--- a/app/src/main/java/com/medithings/vesiscan/ui/views/monitoring/PlacementGuideView.kt
+++ b/app/src/main/java/com/medithings/vesiscan/ui/views/monitoring/PlacementGuideView.kt
@@ -1096,15 +1096,19 @@ fun PlacementGuideView(appState: AppState) {
if (lastLedMode != 6) { bleManager.sendLedMode(6); lastLedMode = 6 }
bleManager.debugLogger.info("PLACEMENT_GREEN cv=${"%.3f".format(guideResult.cv)} lr_dev=${"%.3f".format(guideResult.lrDev)} score=${guideResult.score} otsu=${"%.0f".format(analyzer.lastOtsuThreshold)}")
} else if (isLocked && !greenHeld) {
- // hold 지남 + 실패 → 3회 연속 실패해야 이탈
+ // hold 지남 + 실패 → N 회 연속 실패해야 이탈.
+ // 2026-07-07 fix: 3-strike → 10-strike 완화. 사용자가 GREEN 진입 후
+ // 버튼을 누르지 않고 그대로 기다릴 때, 미세한 자세 흔들림 (1~2초)
+ // 만으로 3회 실패 → "0/3 정렬시작" 완전 리셋되어 처음부터 재시작하는
+ // 불쾌한 UX 발생. 10회 (약 5초+) 는 되어야 진짜 이탈로 간주.
greenFailCount++
- if (greenFailCount < 3) {
+ if (greenFailCount < 10) {
// 아직 이탈 안 함 — GREEN 유지
directionHint = context.getString(R.string.placement_in_position)
directionIcon = "checkmark.circle"
placementPhase = PlacementPhase.GREEN
} else {
- // 3회 연속 실패 → 진짜 이탈
+ // 10회 연속 실패 → 진짜 이탈
isLocked = false
greenLockedAtMs = 0L
greenFailCount = 0
@@ -1120,7 +1124,7 @@ fun PlacementGuideView(appState: AppState) {
maxCenterSeen = 0; stableAtMax = 0; boundaryHit = false
sweepLastDetected = 0; sweepEverSawAll = false
rTracker.reset()
- bleManager.debugLogger.info("PLACEMENT_GREEN_EXIT after 3 consecutive fails")
+ bleManager.debugLogger.info("PLACEMENT_GREEN_EXIT after 10 consecutive fails")
}
} else if (!greenHeld) {
// GREEN 아닌 상태 + hold 아닌 상태에서 실패
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index f4f24e1..e17e62d 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -320,7 +320,7 @@
정렬 완료
측정 시작
건너뛰기
- 제 위치입니다!
+ 최적의 위치입니다!
위치를 놓쳤습니다. 치골 위에서 다시 시작해주세요.
센서가 분리되었습니다. 치골 위에서 다시 시작해주세요.
신호를 놓쳤습니다 — 위로 올려주세요 ↑
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b73fb40..c676676 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -320,7 +320,7 @@
Complete Alignment
Start Scanning
Skip
- In position!
+ Optimal position!
Position lost. Restart above pubic bone.
Sensor detached. Restart above pubic bone.
Signal lost — slide up ↑