Show GN: RepUnlock – 카메라로 스쿼트를 세어 SNS 잠금을 푸는 안드로이드 앱

3 days ago 13

HS솔루션에서 만든 앱입니다. 인스타그램이나 유튜브를 열기 전에 몸을 한 번 움직이게 하는 방법이 없을까 하다가 만들었습니다. 의지로는 잘 안 되니, 앱 쪽에서 잠가 두고 운동을 해야 열리게 했습니다. 무엇을 하나 잠글 앱을 고르면, 그 앱을 열 때 잠금 화면이 뜹니다. 휴대폰 카메라 앞에서 운동하면 횟수를 세고, 목표를 채우면 이용 시간이 적립됩니다. 스쿼트 15회 = 10분, 푸시업 10회 = 10분, 플랭크 30초 = 5분입니다. 목표에 못 미치면 비례해서 줍니다(최소 1분). 적립된 시간 동안만 잠근 앱을 쓸 수 있고, 시간이 다 되면 다시 잠깁니다. 회원가입은 없습니다. 무료는 잠글 앱 1개·스쿼트만이고, Pro(월 $4.99, 연 $24.99, 평생 $49.99)는 앱 개수 제한이 없고 푸시업·플랭크도 됩니다. 기술적으로 한 일 자세 인식은 기기 안에서 합니다. Flutter에서 ML Kit 포즈 인식(google_mlkit_pose_detection)을 스트림 모드·기본 모델로 돌리고, 카메라 프레임(NV21)을 넘깁니다. 처리가 안 끝난 동안 들어온 프레임은 버립니다. 영상은 저장하거나 서버로 보내지 않습니다. 횟수는 관절 각도로 셉니다. 스쿼트는 엉덩이-무릎-발목 각도가 100도 아래로 내려갔다 160도 위로 펴지면 1회입니다. 값 떨림은 지수이동평균(계수 0.5)으로 누르고, 400ms 안의 연속 카운트는 떨림으로 보고 버립니다. 140도까지만 굽히고 올라오면 «더 깊게» 안내를 띄웁니다. 푸시업은 몸통(어깨-엉덩이-발목)이 150도 이상 곧아야 세고, 플랭크는 160도 이상일 때만 시간이 흐릅니다. 몸이 화면에서 사라진 구간은 세지 않습니다. 이 계산 부분은 카메라와 플러그인을 모르는 순수 Dart 로직이라, 관절 좌표만 넣어 단위 테스트합니다. 어떤 앱이 앞에 있는지는 사용 기록 접근 권한(PACKAGE_USAGE_STATS)으로 확인합니다. 한계 안드로이드만 있습니다. 아이폰 판은 없습니다. 몸 전체(스쿼트는 엉덩이·무릎·발목)가 카메라에 보여야 셉니다. 가까이 세워 두면 인식이 안 되고, 3초 넘게 몸이 안 잡히면 «뒤로 물러서세요» 띠를 띄웁니다. 아직 사용자가 적습니다. 초기 사용 기록을 보면 첫 운동을 끝내기 전에 나가는 경우가 많아서, 인식이 안 잡히는 원인과 첫 세트 목표를 줄이는 쪽(5회→3회)을 고치는 중입니다. 화면 문구는 한국어·영어·일본어입니다. 피드백 요청 써 보시고...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵