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:
@@ -125,6 +125,9 @@ class BleDebugLogger private constructor(private val context: Context) {
|
||||
w.write("=== VesiScan BLE Debug Log ===\n")
|
||||
w.write("Process start: ${dateFmt.format(Date(processStart))}\n")
|
||||
w.write("File: ${f.absolutePath}\n")
|
||||
// 기기/제조사 제한 상태 — 장시간 측정이 중간에 죽었을 때 원인 판별용.
|
||||
// (같은 빌드가 태블릿 34시간 / Xiaomi 40분 이었던 사례)
|
||||
w.write(LongRunGuard.diagnosticLine(context) + "\n")
|
||||
w.write("=".repeat(60) + "\n")
|
||||
w.flush()
|
||||
return w
|
||||
|
||||
Reference in New Issue
Block a user