feat(longrun): 장시간 측정 중단 감지 + 설정에 준비 점검 항목

같은 빌드가 태블릿 34시간 / Xiaomi 40분 이었던 문제 대응.
앱 구조(Foreground Service + connectedDevice + WakeLock)는 이미 맞았고
제조사 배터리 관리자가 프로세스를 죽인 것이라, 구조 변경이 아니라
감지와 안내로 접근한다.

- LongRunGuard: 측정 시작/생존/정상종료를 기록해 비정상 종료를 감지.
  다음 실행 때 "언제부터 언제까지 몇 분" 을 알려준다. 제조사 무관하게 동작.
- BLE 로그 헤더에 기기/제한 상태 진단줄 (실패 후 원인 판별용).
- 설정 패널에 "장시간 측정 준비" — 배터리 최적화·미사용앱 제한 상태 확인 및
  해제 진입. 자동시작은 상태를 읽을 수 없어 안내만 제공.

측정 시작을 모달로 막지 않는다. 초안에서는 Auto Scan 에 사전점검을 걸었는데
OEM_AUTOSTART 를 제조사 이름만으로 판단해서(상태 조회 API 가 없음) 설정을
완벽히 해둔 기기에도 영원히 뜨는 문제가 있었다. 고칠 수도 없는 항목으로
측정을 가로막으면 경고가 무시된다. 추측으로 경고하지 않고, 실제로 중단됐을
때만 알린다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-24 11:13:46 +09:00
parent a86fefe321
commit f025bbc0a3
6 changed files with 587 additions and 0 deletions
+23
View File
@@ -379,4 +379,27 @@
<string name="device_scan_signal_good">좋음</string>
<string name="device_scan_signal_fair">보통</string>
<string name="device_scan_signal_weak">약함</string>
<string name="longrun_preflight_title">장시간 측정 준비</string>
<string name="longrun_preflight_desc">장시간 측정 중 시스템이 앱을 멈추지 않도록 아래를 확인해 주세요.</string>
<string name="longrun_battery_title">배터리 최적화</string>
<string name="longrun_battery_desc">화면을 꺼도 앱이 계속 동작하도록 합니다.</string>
<string name="longrun_hibernation_title">사용하지 않는 경우 앱 활동 일시정지</string>
<string name="longrun_hibernation_desc">이 항목을 꺼야 앱이 중단되지 않습니다.</string>
<string name="longrun_autostart_title">백그라운드 자동시작</string>
<string name="longrun_autostart_desc">앱이 대신 켤 수 없어 직접 켜주셔야 합니다.</string>
<string name="longrun_fix">해제하기</string>
<string name="longrun_open_settings">설정 열기</string>
<string name="longrun_start_anyway">그래도 시작</string>
<string name="longrun_all_clear">설정에 문제가 없습니다.</string>
<string name="longrun_guide_xiaomi">설정 → 배터리 → 앱 배터리 절약 → VesiScan → 제한 없음
설정 → 앱 → VesiScan → 자동시작 → 켜기</string>
<string name="longrun_guide_samsung">설정 → 디바이스 케어 → 배터리 → 백그라운드 앱 사용 제한 → 자동 절전 예외 앱 → VesiScan 추가</string>
<string name="longrun_guide_oppo">설정 → 배터리 → 앱 배터리 관리 → VesiScan → 백그라운드 실행 허용</string>
<string name="longrun_guide_vivo">설정 → 배터리 → 백그라운드 전력 소모 관리 → VesiScan → 허용</string>
<string name="longrun_guide_generic">휴대폰의 절전 모드를 끄고 앱의 백그라운드 실행을 허용해 주세요.</string>
<string name="longrun_interrupted_title">이전 측정이 중단되었습니다</string>
<string name="longrun_interrupted_body">%1$s ~ %2$s (약 %3$d분)
시스템이 앱을 종료한 것으로 보입니다. 배터리 설정을 확인하면 다음 측정에서 줄일 수 있습니다.</string>
<string name="longrun_interrupted_dismiss">닫기</string>
<string name="longrun_interrupted_fix">준비 확인</string>
</resources>