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 ↑