AI 기반 감정 분석 스마트 일기장

일기 내용을 온디바이스 TensorFlow Lite 모델로 분석하고 사진·위치·감정 기록을 Firebase와 Google Maps에 연결한 Android 앱

프로젝트 개요

이 프로젝트는 사용자가 작성한 일기의 감정을 자동으로 분석하고, 당시의 사진과 위치를 함께 기록하는 Android 스마트 일기장 앱입니다. 한국어 일기 내용을 Papago API로 영어로 번역한 뒤 앱에 내장된 TensorFlow Lite 텍스트 분류 모델로 감정을 추론합니다. 저장된 기록은 날짜순 목록과 상세 화면에서 다시 확인할 수 있으며, 작성 위치는 Google 지도 위에 감정별 색상의 마커로 시각화됩니다.

2025년 부산대학교 소프트웨어설계및실험 수업에서 2인 팀으로 진행한 텀프로젝트입니다. Android의 화면 구성과 외부 앱 연동부터 온디바이스 AI 추론, 네트워크 API, 위치 서비스와 클라우드 데이터베이스까지 하나의 모바일 애플리케이션 흐름으로 통합했습니다.

일기의 감정과 작성 위치를 함께 기록하고 시각화하는 Android 스마트 일기장 앱.

주요 기능

  • 일기 작성과 임시 저장: 제목, 장소와 본문을 입력하고 작성 중인 내용을 Firestore에 임시 저장해 다음 실행에서 이어서 작성합니다.
  • 사진 첨부: Android 카메라 앱을 호출해 촬영하거나 갤러리에서 이미지를 선택하고 작성 화면에서 미리 봅니다.
  • AI 감정 분석: 한국어 본문을 영어로 번역한 뒤 앱 내부의 MobileBERT 기반 TensorFlow Lite 모델로 감정을 분류합니다.
  • 위치 기록: Fused Location Provider로 작성 시점의 위도와 경도를 가져와 일기 데이터와 함께 저장합니다.
  • 기록 조회: Firestore의 일기를 날짜 내림차순으로 불러와 RecyclerView에 표시하고, 선택한 기록의 사진·본문·장소·감정을 상세 화면에서 확인합니다.
  • 지도 시각화: 저장된 위치에 감정별 색상 마커를 생성하고, 마커 정보 창을 누르면 해당 일기의 상세 화면으로 이동합니다.

감정 분석 및 저장 흐름

한국어 일기 입력 → Papago 번역 API → 영어 텍스트 → MobileBERT TFLite 추론 → 감정 등급 결정

사진 업로드 → Firebase Storage URL 생성 → 본문·감정·위치·날짜와 함께 Firestore 저장

감정 분류기는 앱의 assets에 포함된 mobilebert.tflite 모델을 로드하고 별도의 executor에서 추론을 수행합니다. 모델이 반환하는 부정 점수 구간을 기준으로 결과를 긍정·다소 긍정·중립·다소 부정·부정의 다섯 단계로 변환했습니다. 모델 추론과 네트워크·데이터베이스 작업을 UI 스레드에서 분리하고, Coroutine과 비동기 콜백을 사용해 저장 중에도 화면이 멈추지 않도록 구성했습니다.

Firestore에는 일기 ID, 날짜, 감정, 이미지 URL, 위도·경도, 장소, 제목과 본문을 하나의 문서로 저장합니다. 이미지는 Firebase Storage에 먼저 업로드하고 발급받은 URL을 일기 문서에 연결했습니다.

앱 화면

사진을 첨부하는 작성 화면, 감정 결과가 표시되는 기록 목록, 감정별 마커로 구성한 Google 지도 화면.
Firebase Storage의 사진과 일기 내용, 날짜, 장소, 분석된 감정을 함께 보여주는 상세 화면.

담당 역할

최종 발표자료에 기록된 역할 분담을 기준으로 다음 기능을 담당했습니다.

  • 홈·작성·목록·상세 화면의 UI와 XML 레이아웃 구성
  • ViewBinding과 RecyclerView Adapter를 이용한 일기 목록 및 상세 화면 연결
  • Activity Result API를 이용한 카메라 촬영 및 갤러리 이미지 선택 기능 구현
  • Firestore 일기 데이터의 저장·조회 흐름과 Firebase Storage 이미지 연동 관리
  • 화면 간 Intent 데이터 전달과 감정 결과에 따른 색상·상태 표현

구현 결과와 배운 점

일기 작성부터 번역, 온디바이스 감정 추론, 이미지 업로드와 데이터 저장까지 이어지는 비동기 파이프라인을 구현했습니다. 저장된 기록은 날짜순 목록과 상세 화면에서 조회할 수 있고, 위치가 있는 일기는 Google 지도에서 감정별 색상으로 구분됩니다. 카메라·갤러리·위치 권한과 외부 앱 호출도 실제 Android 환경에서 연결했습니다.

이 프로젝트를 통해 Activity와 RecyclerView 중심의 Android UI 구조, ViewBinding, 런타임 권한 처리와 Activity Result API를 익혔습니다. 또한 AI 모델의 결과를 앱 데이터 모델과 시각적 피드백으로 변환하고, 네트워크·스토리지·데이터베이스 작업이 포함된 비동기 흐름을 사용자 인터페이스와 안정적으로 연결하는 경험을 쌓았습니다.

기술 스택

Android Studio · Kotlin · Android SDK · ViewBinding · RecyclerView · Kotlin Coroutines · TensorFlow Lite · MobileBERT · Papago API · Google Maps SDK · Fused Location Provider · Firebase Firestore · Firebase Storage · Retrofit · Glide