플러터를 이용해 만보계를 구현하는 도중 의문점이 생겨서 TYPE_STEP_COUNTER 관련해 리서치를 하다 읽어볼만한 글이 있어 읽어보려고 한다.
읽어보니 핸드폰이 켜진 순간부터 현재까지 누적된 카운트를 보여준다고 한다.
따라서 서비스를 이용한 백그라운드 앱실행을 하면서 센서 수치가 측정될때마다 측정할 필요는 없다. 센서가 자동으로 누적되기 때문에
다른 특징으로는 핸드폰을 껏다가 다시키면 수치가 0으로 초기화 된다.
다만 하루치의 걸음 수를 측정하려면 계산이 필요하다... 그랫군,,,
리턴값이 늘 1인 센서다.
TYPE_STEP_COUNTER처럼 자동으로 누적되는 수치가 아닌 개발자가 직접 더해서 사용해야하는값
항간에서는 TYPE_STEP_DETECTOR 보다 조금 더 정확한 수치측정이 가능하다고 하나 이는 개발자마다 말이 다 달라서 모르겠다
우선 TYPE_STEP_DETECTOR의 경우 센서가 움직여서 이벤트가 감지되면 1을 리턴하며 그 값을 개발자가 계산하여 관리해야하기 때문에 서비스 등록이 반 강제로 될수밖에 없다.
이 센서를 이용해서 걸음수를 계산하려면
어떤 센서를 사용하여 측정할 것인지에 대한 선택의 기준을 굳이 따지자면 위에 TYPE_STEP_DETECTOR에 작성해 놓은 것 처럼 서비스를 사용하여 상단에 Notification을 계속 띄워도 되는 앱인가? 에 대한 답이 먼저 나와야 한다.
Andriod OS 8.0 (API Level 26) 부터 service를 이용한 백그라운드 앱 실행시 startForeGround를 호출하여 사용자에게 Notification을 상시로 노출해야 하는 보안 정책이 생겼다.
우회하는 방법이 있지만 추천하지 않는다.
ForegroundService를 계속 띄워도 되는 앱이라면 TYPE_STEP_DETECTOR를 사용할 수 있는 선택도 할 수 있다.
Android OS 10 (API LEVEL 28)부터 SensorManager를 이용하려면 ACTIVITY_RECOGNITION 권한을 런타임으로 허용받아야 센서에 대한 접근이 가능하다.
이 글을 읽으니 만보계에 괴랄한 숫자가 나온게 이해가 된다.
폰을 껏다키니 토스앱(만보기기능)은 걸음수에 변화가 없었다.
센서는 초기화됐지만 아마 로컬디비를 활용해서 저장해놓은것이 아닌가 추측된다.
나도 상단에 만보계가 노출되기를 원한다. 따라서 TYPE_STEP_DETECTOR 를 활용한 만보계를 구현하면 더 좋겠다는 생각이 든다.
IOS도 한번 봐야겠다... swift가 낯선데 이해가 되었으면 좋겠다..