LAB · Experimental · Not for diving

Pressure DepthApprox

Galaxy Watch8 기압 센서로 얕은 물의 압력 변화를 다룬 개인 실험입니다. 센서 데이터가 끊기거나 사용자가 중지했을 때의 동작을 중심으로 설계했습니다. 다이빙용이 아닙니다.A personal experiment with shallow-water pressure changes using the Galaxy Watch8 barometer. I focused on how the prototype behaves when sensor data stops or the user ends a session. Not for diving.

DepthApprox ready screen
v0.4 에뮬레이터 UI · 준비 상태v0.4 emulator UI · ready state
DepthApprox emulator reading
0.06 m는 압력 리플레이 값이며 실제 수중 정확도 증거가 아닙니다.0.06 m is a pressure-replay value—not physical underwater accuracy evidence.
역할Role
Product framing · Safety requirements · Prototype validation
구현Build
AI-assisted engineering prototype · Wear OS
성숙도Maturity
엔지니어링 프로토타입 · 검증 진행 중Engineering prototype · Validation in progress
초점Focus
센서 한계 · 안전 정지 · 실기기 검증Sensor limits · Fail safe · Device validation
01 · REALITY CHECK

공개 API와 센서가 보장하지 않는 범위를 먼저 확인했습니다.First, I checked what the public APIs and sensor could not guarantee.

기압계는 수심계가 아닙니다.A barometer is not a depth gauge.

조사한 공개 API 범위에서는 서드파티 앱이 사용할 수 있는 인증된 전용 수심 센서나 공개 침수 이벤트를 확인하지 못했습니다. Android의 TYPE_PRESSURE는 주변 공기압 센서이며 수중 정확도, 선형성 또는 센서 포트 응답을 보장하지 않습니다.Within the public APIs I reviewed, I could not identify a certified depth sensor or public immersion event available to third-party apps. Android defines TYPE_PRESSURE as an ambient air-pressure sensor and does not guarantee underwater accuracy, linearity, or sensor-port response.

공개 API만으로 백그라운드에서 전체 화면이 자동으로 열리도록 보장할 수 없고, Samsung Water Lock을 자동 활성화하는 공개 Wear OS API도 확인하지 못했습니다. 따라서 목표를 “다이브 컴퓨터”가 아니라 “사용자가 명시적으로 시작하는 얕은 압력 변화 실험”으로 제한했습니다.Public APIs cannot guarantee a forced full-screen launch from the background, and I found no public Wear OS API for automatically enabling Samsung Water Lock. The product goal was therefore constrained to a user-started shallow pressure-change experiment—not a dive computer.

안전 경계Safety boundary
전용 수심계, 다이브 컴퓨터, 구조·의료·생명안전 장비가 아닙니다. 수온, 감압, 무감압 한계, 상승 속도, 비상 기능을 제공하지 않습니다.This is not a certified depth gauge, dive computer, rescue, medical, or life-safety device. It provides no temperature, decompression, no-decompression limit, ascent-rate, or emergency function.
02 · MODEL

상대 압력만 추정값으로 변환Convert relative pressure—only as an estimate

물 밖에서 안정된 기준 압력을 보정한 뒤, 현재 압력과의 차이를 물의 밀도와 중력가속도로 나눠 상대 수심을 추정합니다.After calibrating a stable out-of-water baseline, the pressure difference is divided by water density and gravity to estimate relative depth.

estimate (m) = Δ pressure (hPa) × 100 ÷ (density × 9.80665)

01

보정Calibrate

60개 표본과 최소 2.5초 안정 구간60 samples and at least 2.5 seconds stable

02

감시Monitor

사용자가 명시적으로 시작하는 포그라운드 서비스와 지속 알림User-initiated foreground service and persistent notification

03

추정Estimate

약 3 cm 상당 증가가 0.4초 지속될 때 후보 확정Candidate after ~3 cm-equivalent rise for 0.4 seconds

04

안전 정지Fail safe

오래된 데이터, 포화, 권한 차단 또는 사용자 중지 시 종료Stop on stale or saturated data, blocked permission, or user action

03 · FAILURE AS EVIDENCE

v0.1 실패에서 바뀐 요구사항What the v0.1 failure changed

v0.1 실기기 로그에서 기압계는 담수 약 4.67 cm와 5.79 cm 수준의 압력 변화에 반응했습니다. 그러나 앱은 입수 후보 상태를 한 번도 만들지 못했습니다. 신뢰하기 어려운 센서 범위 메타데이터와 절전 중 1–4.5초 표본 공백이 주요 원인이었습니다.In an early v0.1 device log, the barometer reacted to pressure changes equivalent to roughly 4.67 cm and 5.79 cm of fresh water. Yet the app never entered a candidate immersion state. Unreliable sensor-range metadata and 1–4.5-second sample gaps during sleep were key causes.

이 기록은 정확도를 증명하지 않습니다. 대신 “센서가 제한적으로 반응했다”와 “초기 탐지가 실패했다”를 동시에 보여 줍니다. 이후 센서 메타데이터 예외, 절전 중 처리, 오래된 데이터 감지, 사용자 중지와 앱 내부 오터치 처리를 명시적 요구사항으로 바꿨습니다.This does not prove accuracy. It shows both limited pressure response and failed detection. Those failures became explicit requirements for metadata exceptions, wake-up and CPU behavior, stale-data detection, user stop controls, and in-app accidental-touch handling.

01

Signal ≠ accuracy

압력 반응을 정확한 수심 측정으로 확대 해석하지 않습니다.Pressure response is not presented as accurate depth measurement.

02

Failure is a requirement

실패 로그를 삭제하지 않고 제품의 안전 정지 규칙으로 전환합니다.Keep failure logs and translate them into fail-safe product rules.

03

Control stays visible

감시 상태와 중지 경로를 알림·Ongoing Activity로 계속 보여 줍니다.Keep monitoring state and stop controls visible through notification and Ongoing Activity.

04 · CURRENT EVIDENCE

검증한 것과 다음 단계를 분리What is verified. What comes next.

v0.4는 Java/Android 리소스 컴파일, lintDebug/lintRelease, R8 release AAB 빌드를 완료했고 JUnit 52개가 모두 통과했습니다. API 36, 454×454 에뮬레이터 한 종류에서 권한, 보정, 대기/활성 주기, 0.06 m 압력 리플레이, 수면 복귀와 중지 흐름을 확인했습니다.v0.4 completed Java and Android resource compilation, debug and release lint, R8 release AAB build, and all 52 JUnit tests. On one API 36 emulator at 454 × 454, I verified permissions, calibration, idle/active sampling, a 0.06 m pressure replay, return to the surface, and stop control.

52/52

통과한 JUnit 단위 테스트JUnit unit tests passed

10

문서화된 UI 지원 언어Documented UI languages

1

검증한 에뮬레이터 구성Emulator configuration tested

0

아직 완료되지 않은 실기기 출시 검증Completed release validations on physical devices

다음 검증 단계Next validation steps

  • 서명된 릴리스 AAB와 Play 내부 테스트 트랙 설치 검증Signed release AAB and Play internal-track installation
  • 여러 기준 수심과 Watch8 변형의 반복 측정, 탐지율·오탐률·지연Repeated reference-depth tests across Watch8 variants, including detection, false positives, and latency
  • 8시간 및 24시간 배터리·발열과 일상 오탐 시나리오Eight/24-hour battery and heat tests plus everyday false-positive scenarios
  • 실기기 알림, 컴플리케이션, 재부팅 복원, 수중 입력 검증과 플랫폼 정책 준비On-device notification, complication, reboot restore, underwater input, and platform-policy preparation