Skip to content

이미지에서 텍스트를 추출하거나, QR을 스캔해서 url을 저장하는 메모장입니다

Notifications You must be signed in to change notification settings

ese111/ScannerMemo

Repository files navigation

Android OS Languages-Kotlin PRs

header

스캔 메모 app

Skill

Google Recommended App Architecture + Dependency injection with Hilt + Jetpack Compose + Navigation + ML kit + CameraX

Introduce

약품 설명서, QR 링크 등 일상에서 버리기도 아깝고, 그렇다고 다 모아 놓을 수도 없는 텍스트들이 굉장히 많습니다. 그래서 이런 텍스트를 사진으로 찍거나 QR을 스캔해서 해당 정보를 간편하게 저장할 수 있는 메모 앱을 만들어 보았습니다.

Skill Intro

  • AAC
  • Kotlin
  • Jetpack Compose
  • Accompanist-Permissions
  • Kotlin Coroutines & Flow
  • google Recommended app architecture
  • Material Design 3
  • Hilt
  • Navigation, DataStore in Jetpack
  • dateTime, Serialization in Kotlin
  • ML kit
  • MVVM

기술 설명

  • Android Application으로 AAC Activity 위에 Compose를 이용하여 UI를 구현 하였습니다.
  • State Holder 패턴을 이용하여 Compose의 State를 보관하고, AAC viewModel을 사용해서 비지니스 로직을 처리하도록 구현하였습니다.
    • UI -> StateHolder -> ViewModel -> Repository -> Data Layer 흐름으로 아키텍처를 구성하였습니다.
  • State Hoisting을 사용하여 StateHolder를 내려서 상태를 내리고 람다로 이벤트를 전달하여 State를 변경하였습니다.
  • Hilt를 이용한 DI를 이용하였습니다.
  • jetpack Navigation을 이용해 Composable간의 인자 전달과 화면 이동을 구현하였습니다.
  • jetpack DataStore를 이용하여 local storage를 이용하였습니다.
    • DataStore는 SharedPreferences의 단점을 보완하여 flow를 이용하여 비동기적으로 사용가능하고 에러핸들링이 가능합니다. UI Thread를 사용하지 않기때문 에 ANR을 예방이 가능합니다
  • ML kit의 OCR과 바코드 스캔 기능을 사용하여 텍스트 인식과 QR의 데이터를 받아 올수 있는 기능을 구현하였습니다.
  • Serialization을 이용해서 직렬화와 역직렬화를 구현하였습니다.
  • dateTime을 이용해서 날짜를 이용하였습니다.

Contact

Email : [email protected]

Medium : https://amuru.tistory.com

About

이미지에서 텍스트를 추출하거나, QR을 스캔해서 url을 저장하는 메모장입니다

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages