OSAM 국방 모바일 반납
  • 국방 모바일 반납
  • ABOUT PROJECT
    • 개발 동기
    • 개발 목표
    • 개발 일정
  • HOW TO COLLABORATE
    • Notion
    • Git Workflow
    • Git Contribution
    • CI/CD
    • API Documenation
  • Technical Note
    • 시스템 구성
    • 작동 시나리오
    • 분야별 기능
      • WEB 기능
      • APP 기능
      • IoT 기능
    • Time-based OTP 인증
  • HOW TO BUILD
    • WEB
    • APP
    • IoT
  • HOW TO USE
    • 관리자 설정
    • 기기 등록
    • 기기 반납
    • 현황 파악
  • ADVANCED
    • QR코드 색상암호화
    • 1:N 반납기
    • 아두이노 미사용
    • 관리자용 APP
    • 본 프로젝트에 대한 비평
  • License
    • WEB License
    • APP License
    • IoT License
Powered by GitBook
On this page
  • Repository
  • 기기 등록 페이지
  • 페이지 주요 기능
  • 실제 구동 이미지
  • 등록 이후 메인페이지
  • 페이지 주요 기능
  • 실제 구동 이미지
  • 반납시 QR코드 생성 페이지
  • 페이지 주요 기능
  • 실제 구동 이미지
  • 추후 개발 사항
  • 색상 암호화된 QR코드 생성
  • 색상 암호화된 QR코드 생성 예시
  • 사용 라이브러리

Was this helpful?

  1. Technical Note
  2. 분야별 기능

APP 기능

PreviousWEB 기능NextIoT 기능

Last updated 4 years ago

Was this helpful?

Repository

​​

기기 등록 페이지

페이지 주요 기능

  • 사용자 휴대폰의 제조사 정보를 자동으로 불러온다.

  • 사용자 식별과 미등록 휴대폰(투폰) 및 앱 무단 재설치를 방지하기 위해 앱 설치 시 고유 ID인 GUID를 생성한다.

  • 위 정보들과 사용자로부터 이름, 군번, 초대 코드를 입력받아 서버에 병사 정보를 등록한다.

  • 잘못된 초대 코드를 입력할 경우 가입을 거절한다.

  • 서버와의 통신 실패 시 "로그인 실패" 토스트를 띄운다.

  • 정상적으로 가입이 완료될 경우 "로그인 성공" 토스트를 띄운다.

  • 로그인 성공 시 입력한 초대 코드에 맞는 관리자 정보를 알려주는 토스트를 띄운다.

  • 입력받은 사용자 정보를 저장하여 다음 앱 실행부터는 등록 이후 메인 페이지가 띄워지도록 한다.

실제 구동 이미지

등록 이후 메인페이지

페이지 주요 기능

  • 뒤로 가기 버튼을 누를 경우 앱 종료 알림 토스트를 띄운다. (기기 등록 페이지로 돌아가는 것 방지)

  • 뒤로 가기 버튼을 두 번 누를 경우 앱을 종료한다.

실제 구동 이미지

반납시 QR코드 생성 페이지

페이지 주요 기능

  • TOTP 키와 사용자 정보 이용하여 QR코드 생성한다.

  • 10초마다 서버로부터 반납 성공 여부를 불러오고, 반납 실패 시 새로운 TOTP값을 이용하여 QR코드를 재생성한다. 이때, 메인 쓰레드에서 무한 루프를 실행하면 실행이 되지 않기 때문에 coroutine 블록을 생성하여 작업을 실행한다.

실제 구동 이미지

​ ​

추후 개발 사항

색상 암호화된 QR코드 생성

이미지의 픽셀을 앱 자체적으로 수정하는 것은 시스템에 부하가 많이 걸리는 작업이기 때문에 본 프로젝트에서 QR코드 암호화 기능은 구현하지 않았다. 이 기능을 구현하기 위해서는 다음과 같은 로직이 필요하다.

  1. QR코드 이미지의 픽셀 정보를 불러와 검정색 픽셀인지 흰색 픽셀인지 체크한다.

  2. 암호화 방식에 따라 각 픽셀에 랜덤한 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 License
https://github.com/osamhack2020/APP_KookMoBanUser_PonJohmNaimann
로그인 화면 로그인 실패시 오류 화면
로그인 성공 페이지 뒤로가기 버튼을 눌렀을 때 경고 토스트 화면
QR코드 생성 화면 10초 후 재생성된 QR 코드
원본 이미지와 다양하게 암호화된 QR코드들