APP 기능
Repository
https://github.com/osamhack2020/APP_KookMoBanUser_PonJohmNaimann
기기 등록 페이지
페이지 주요 기능
사용자 휴대폰의 제조사 정보를 자동으로 불러온다.
사용자 식별과 미등록 휴대폰(투폰) 및 앱 무단 재설치를 방지하기 위해 앱 설치 시 고유 ID인 GUID를 생성한다.
위 정보들과 사용자로부터 이름, 군번, 초대 코드를 입력받아 서버에 병사 정보를 등록한다.
잘못된 초대 코드를 입력할 경우 가입을 거절한다.
서버와의 통신 실패 시 "로그인 실패" 토스트를 띄운다.
정상적으로 가입이 완료될 경우 "로그인 성공" 토스트를 띄운다.
로그인 성공 시 입력한 초대 코드에 맞는 관리자 정보를 알려주는 토스트를 띄운다.
입력받은 사용자 정보를 저장하여 다음 앱 실행부터는 등록 이후 메인 페이지가 띄워지도록 한다.
실제 구동 이미지

등록 이후 메인페이지
페이지 주요 기능
뒤로 가기 버튼을 누를 경우 앱 종료 알림 토스트를 띄운다. (기기 등록 페이지로 돌아가는 것 방지)
뒤로 가기 버튼을 두 번 누를 경우 앱을 종료한다.
실제 구동 이미지

반납시 QR코드 생성 페이지
페이지 주요 기능
TOTP 키와 사용자 정보 이용하여 QR코드 생성한다.
10초마다 서버로부터 반납 성공 여부를 불러오고, 반납 실패 시 새로운 TOTP값을 이용하여 QR코드를 재생성한다. 이때, 메인 쓰레드에서 무한 루프를 실행하면 실행이 되지 않기 때문에 coroutine 블록을 생성하여 작업을 실행한다.
실제 구동 이미지

추후 개발 사항
색상 암호화된 QR코드 생성
이미지의 픽셀을 앱 자체적으로 수정하는 것은 시스템에 부하가 많이 걸리는 작업이기 때문에 본 프로젝트에서 QR코드 암호화 기능은 구현하지 않았다. 이 기능을 구현하기 위해서는 다음과 같은 로직이 필요하다.
QR코드 이미지의 픽셀 정보를 불러와 검정색 픽셀인지 흰색 픽셀인지 체크한다.
암호화 방식에 따라 각 픽셀에 랜덤한 rgb 값을 입력한다.
위에서 볼 수 있듯이 QR코드 암호화의 기본 개념 자체는 단순하기 때문에 픽셀 정보 수정 알고리즘이 개선된다면 충분히 구현 가능한 기능이라고 여겨진다.
색상 암호화된 QR코드 생성 예시



사용 라이브러리
Package
Licenses
Android AppCompat Library v7 (1.1.0)
Apache-2.0
Android ConstraintLayout (1.1.3)
Apache-2.0
Android SDK (26.0.1)
Android-Sdk
CircleImageView (3.1.0)
Apache-2.0
Core Kotlin Extensions (1.2.0)
Apache-2.0
jackson-module-kotlin (2.10.2)
Apache-2.0
kotlin-stdlib (1.3.72)
Apache-2.0
kotlinx-coroutines-android (1.3.9)
Apache-2.0
org.jetbrains.kotlin:kotlin-android-extensions-runtime (1.3.72)
Apache-2.0
ZXing Core (3.3.0)
Apache-2.0
zxing-android-embedded (3.6.0)
Apache-2.0
프로젝트 라이센스와, 사용된 3rd-Party Software라이브러리 라이센스에 대한 내용은 아래 페이지 참고
APP LicenseLast updated
Was this helpful?