Skip to content

Project Design

Youngseo Yoo edited this page Oct 31, 2020 · 13 revisions

🔎 주요 기능들

권한 허용

Permission 허용 비허용시
권한 권한 비체크시

앱을 설치 후 처음 실행할 시 접근성권한을 사용할것인지 묻는 화면을 띄우도록 설정하였다. 그 후 접근성권한을 사용하게 설정하면 LOCKA 앱의 권한이 허용되어있는지 확인한 후 첫화면을 Main화면으로 바꿔준다. 만약 접근성권한을 사용하지 않게 설정한다면 첫 화면은 권한설정화면으로 고정된다.

잠금/해제기능

자동 반납 자동 불출
자동반납 자동불출
앱 실행차단 수동잠금 해제 일시해제
잠금화면 수동잠금 로그인 성공 일시해제 (2)

LOCKA앱의 가장 핵심기능인 비대면 휴대폰 반납기능이다. 일단 기본적으로 휴대폰을 받는 시간은 국방부에서 지정한대로 평일 오후 6시부터 9시, 주말 오전 8시 30분부터 오후9시까지로 설정하였다. 지정된 시간에는 자동으로 잠금이 해제되고 지정된 시간이 지나면 자동으로 LOCKA를 제외한 모든 앱의 사용이 잠긴다. 이러한 방식으로 사용을 제한하는 방식으로 비대면 휴대폰 반납기능을 구현하였다.

앱을 잠그는 원리는 Accessibility Service를 이용하여 화면의 변화가 일어나는 것을 감지하는 것에 기반을 두고 있다. 그래서 현재 실행되고 있는 앱의 패키지명을 알아낸 후 LOCKA가 작동하는데 필요한 앱이 아닌 경우, 즉시 Android Home화면으로 이동하도록 설정하고 있다.

원래는 지정된 시간에 자동잠금/해제만 구현하고자 하였으나 실제로는 휴가를 나가거나 공휴일,전투휴무 등의 이유로 평일에도 휴대폰을 사용할 수 있는 경우도 있기 때문에 앱 잠금을 해제하는 기능도 구현하였다.

해제기능은 크게 일시해제기능완전해제기능으로 2개를 나누어 구현했는데 일시해제기능은 평일에 공휴일,전투휴무 등의 이윯 휴대폰의 잠금을 일시적으로 해제해야 할 경우에 사용하도록 구현하였다. 일시해제를 할 경우 그날 하루를 휴대폰을 사용할 수 있도록 설정하였고 당일 반납시간이 되면 자동으로 반납되도록 설정하였다. 완전해제기능은 휴가를 나갔을 떄처럼 하루단위의 휴식이 아닌 긴 시간동안 휴대폰 반납을 할 필효가 없는 경우에 사용하도록 설정하였다. 다시 완전해제를 풀고 잠그고 싶다면 Main화면에 있는 수동잠금을 통해 원래의 루틴대로 돌아오게끔 할 수 있다.

Calculation Screen

D-day 월급계산
dday 월급계산화면

처음에는 그저 비대면 반납기능에만 충실한 앱을 개발하고자 하였지만, 실제로 우리는 국방부에서 배포한 앱을 그렇게 많이 사용하면서 친근하게 느끼지 못한다는 문제점을 느꼈다. 그래서 실제로 군인들이 많이 사용하고 필요한 기능들을 앱에 구현해보자고 생각해서 계산화면이 등장하였다. 계산화면에는 D-day와 복무율을 계산해주는 기능들과 군복무동안의 벌어갈 수 있는 금액을 시뮬레이션으로 계산해주는 월급계산기능을 추가하였다.

D-day와 복무율을 계산해주는 기능은 입대일과 전역일을 입력하고 현재 날짜를 가져와서 %와 D-day를 알아내는 방식으로 구현하였고, 월급계산기능은 실제 군인들의 경험에서 필요한 기능들을 넣고자 노력했는데 대표적으로는 군적금기능과 진급여부에 대해서 물어보는 기능을 추가함으로 디테일을 더했다.

앱 삭제방지

앱 삭제방지(잠금) 앱 삭제(해제)
앱 삭제방지 앱 삭제

마지막으로 잠금상태시 함부로 앱을 삭제하는 것을 방지하기 위해 앱 삭제기능을 추가하였다. 처음에는 Device Administration API를 통해서 앱 삭제를 원천적으로 막으려고 하였으나 현재 Android 9(sdk level 28) 이상 버전에서는 Device Administration API가 지원되지 않아서 완전하게 삭제를 방지할 수는 없어서 차선책으로 삭제여부를 묻는 메시지를 감지하면 바로 그 메시지를 닫도록 설정하여 앱 삭제방지기능을 구현하였다.