From 91d7f75cbda56b50e98c376349470a4b0264fe9c Mon Sep 17 00:00:00 2001 From: jjangddu Date: Wed, 24 Jun 2026 08:53:09 +0900 Subject: [PATCH] =?UTF-8?q?feat(posture):=20dev=20=EC=84=A4=EC=A0=95?= =?UTF-8?q?=EC=97=90=20Lying=20Duration=20=EC=8A=AC=EB=9D=BC=EC=9D=B4?= =?UTF-8?q?=EB=8D=94=20=EC=B6=94=EA=B0=80=20=E2=80=94=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=8B=9C=EA=B0=84=20=EB=8B=A8=EC=B6=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 증상: 기상 알람 테스트하려면 LYING 으로 3분 (default 180s) 유지해야 팝업 뜸 — 매번 너무 길어 테스트 비효율. 수정: PiezoMonitoring dev settings 의 기상 알람 토글 바로 아래에 Lying Duration 슬라이더 추가. - 범위: 5초 ~ 600초 (10분) - 표시: "5초" / "3분 0초" 형식 자동 - 변경 시: 1) WakeupAlarmPrefs.setLyingDurationSec(context, sec) — 저장 2) wakeupDetector.lyingDurationSec = sec — 즉시 적용 - 테스트: 슬라이더로 5초 정도로 줄임 → 평평히 5초 → 세움 → 즉시 팝업 상수가 GreenZoneConstants 대신 SharedPreferences 라서 앱 재시작 후에도 설정 유지. wakeupDetector 인스턴스에 동시 반영해 즉시 효과 확인 가능. Co-Authored-By: Claude Opus 4.7 --- .../views/monitoring/PiezoMonitoringView.kt | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt index a9eb0a3..5f95080 100644 --- a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt +++ b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt @@ -1823,6 +1823,36 @@ fun PiezoMonitoringView(appState: AppState) { colors = SwitchDefaults.colors(checkedTrackColor = Color(0xFFD32F2F)) ) } + + // Wakeup 알람 발동을 위한 LYING 유지 시간 (dev 조절 가능) + var lyingDurVal by remember { + mutableStateOf( + com.example.medilightv2android.services.WakeupAlarmPrefs.lyingDurationSec(context).toFloat() + ) + } + Row(verticalAlignment = Alignment.CenterVertically) { + Text("Lying Duration", fontSize = labelSize, fontWeight = FontWeight.SemiBold) + Spacer(modifier = Modifier.width(8.dp)) + Text( + if (lyingDurVal < 60) "${lyingDurVal.toInt()}초" + else "${(lyingDurVal / 60).toInt()}분 ${(lyingDurVal.toInt() % 60)}초", + fontSize = 13.sp, fontWeight = FontWeight.Bold, color = MlPrimary + ) + Spacer(modifier = Modifier.weight(1f)) + Text("이상 lying 후 일어나면 알람", fontSize = 10.sp, color = MlSecondaryText) + } + Slider( + value = lyingDurVal, + onValueChange = { + lyingDurVal = it + val sec = it.toInt() + com.example.medilightv2android.services.WakeupAlarmPrefs.setLyingDurationSec(context, sec) + wakeupDetector.lyingDurationSec = sec + }, + valueRange = 5f..600f, // 5초 ~ 10분 + steps = 0, + colors = SliderDefaults.colors(thumbColor = MlPrimary, activeTrackColor = MlPrimary) + ) } HorizontalDivider(modifier = Modifier.padding(vertical = dividerPadding))