Skip to content

Microdegree-Track/Final_Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

7 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Ask Eye (gaze_tts_app)

์ „๋ฉด ์นด๋ฉ”๋ผ์˜ ์‹œ์„  ์ถ”์ •(Gaze Tracking) ์„ ํ™œ์šฉํ•ด ๋ฒ„ํŠผ์„ ์‘์‹œํ•˜์—ฌ ๋ฌธ์žฅ์„ ๋ฐœํ™”(TTS)ํ•˜๊ฑฐ๋‚˜
๊ธด๊ธ‰(SOS) ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ ‘๊ทผ์„ฑ ๋ณด์กฐ ์•ฑ์ž…๋‹ˆ๋‹ค.
์›น/๊ถŒํ•œ ๊ฑฐ๋ถ€/์—๋ฎฌ๋ ˆ์ดํ„ฐ ํ™˜๊ฒฝ์—์„œ๋Š” ํ„ฐ์น˜ ์ œ์Šค์ฒ˜๋กœ ์‹œ์„ ์„ ๋ชจ์˜ ์ž…๋ ฅ(Mock) ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



๋ชฉ์ฐจ


๊ฐœ๋ฐœ ๋™๊ธฐ

์ฒญ๊ฐยท์–ธ์–ด ์žฅ์• ๋กœ ์ธํ•ด ๋ฐœ์„ฑ์ด ์–ด๋ ต๊ฑฐ๋‚˜ ์† ์‚ฌ์šฉ์ด ์ œํ•œ๋œ ์‚ฌ์šฉ์ž๊ฐ€
์‹œ์„ ๋งŒ์œผ๋กœ ๋น ๋ฅด๊ณ  ์ง๊ด€์ ์ธ ์˜์‚ฌ ํ‘œํ˜„์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐ˜๋ณต๋˜๋Š” ์ผ์ƒ ํ‘œํ˜„(๋ฌผยทํ™”์žฅ์‹คยท๋„์›€ ์š”์ฒญ ๋“ฑ)์„ ๋น ๋ฅด๊ฒŒ ์ „๋‹ฌ โ†’ ๋ฐ˜์‘ ์‹œ๊ฐ„ ๋‹จ์ถ• / ํ”ผ๋กœ๋„ ๊ฐ์†Œ
  • ๋ณดํ˜ธ์ž ๋ถ€์žฌ ์ƒํ™ฉ์—์„œ๋„ ๊ธฐ๋ณธ์  ์˜์‚ฌ ํ‘œํ˜„ ๋ฐ ๊ธด๊ธ‰ ํ˜ธ์ถœ(SOS) ๊ฐ€๋Šฅ โ†’ ์•ˆ์ „์„ฑ ํ–ฅ์ƒ
  • ๊ฐœ์ธ ๋งž์ถค ๋ณด๋“œ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ โ†’ ํ•™์Šต ๋ฐ ์žฌํ™œ ํ™˜๊ฒฝ์— ์ ์‘

๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์˜จ๋””๋ฐ”์ด์Šค(on-device) ์ถ”๋ก ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ,
๊ถŒํ•œ์ด ์—†๊ฑฐ๋‚˜ ๋ฏธ์ง€์› ํ”Œ๋žซํผ์—์„œ๋Š” Mock Gaze ๋กœ ์ž๋™ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.


ํ•ต์‹ฌ ๊ธฐ๋Šฅ

๋ถ„๋ฅ˜ ์„ค๋ช…
์‹œ์„  ์ถ”์ • Google ML Kit ์–ผ๊ตด ๊ฒ€์ถœ ๊ธฐ๋ฐ˜ ์‹œ์„  ํฌ์ธํŠธ ๊ณ„์‚ฐ (์•ˆ๋“œ๋กœ์ด๋“œ)
๋ชจ์˜ ์‹œ์„ (Mock) ๊ถŒํ•œ ๊ฑฐ๋ถ€ยท์›นยท๋ฐ์Šคํฌํ†ฑ ํ™˜๊ฒฝ์—์„œ ํ„ฐ์น˜๋กœ ์‹œ์„  ๋Œ€์ฒด
๋ณด์ •(Calibration) 3ร—3 ํƒ€๊นƒ ์‘์‹œ๋กœ ์›์‹œ ์ขŒํ‘œ โ†’ ํ™”๋ฉด ์ขŒํ‘œ ๋ณ€ํ™˜ ํ–‰๋ ฌ ์ƒ์„ฑ
์‘์‹œ ์„ ํƒ(Dwell) ์ผ์ • ์‹œ๊ฐ„ ์‘์‹œ ์‹œ ์นด๋“œ ํŠธ๋ฆฌ๊ฑฐ (๋ง, ์ง„๋™, ํ”Œ๋ž˜์‹œ ํ”ผ๋“œ๋ฐฑ)
TTS ๋ฐœํ™” ์–ธ์–ด/์†๋„/ํ”ผ์น˜ ์„ค์ • ๊ฐ€๋Šฅ, ์‹ค์‹œ๊ฐ„ ์ฝ์–ด์ฃผ๊ธฐ ์˜ต์…˜ ํฌํ•จ
SOS ๊ธฐ๋Šฅ 112/119/์‚ฌ์šฉ์ž ๋ฒˆํ˜ธ๋กœ ํ†ตํ™”ยท๋ฌธ์ž ๋ฐœ์†ก, ์ง„๋™+TTS ์•ˆ๋‚ด
๋ณด๋“œ ํŽธ์ง‘๊ธฐ ์นด๋“œ ์ถ”๊ฐ€/์‚ญ์ œ/์ˆ˜์ • ๋ฐ JSON ์ €์žฅ
์ ‘๊ทผ์„ฑ ์˜ต์…˜ ๊ณ ๋Œ€๋น„ยทํฐํŠธ ์Šค์ผ€์ผยท๋‹คํฌ๋ชจ๋“œยทํฐ ํ„ฐ์น˜ ํƒ€๊นƒยท์‹œ๊ฐ ํ”ผ๋“œ๋ฐฑ
๋กœ๊ทธ ์ €์žฅ sqflite ๊ธฐ๋ฐ˜ ๋™์ž‘ ๋กœ๊ทธ, CSV ๋‚ด๋ณด๋‚ด๊ธฐ ๊ฐ€๋Šฅ

๊ธฐ์ˆ  ์Šคํƒ

Framework
ML / Camera
TTS / Vibration
Device / Permissions
Storage / DB
Localization / UI

๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • IDE: Visual Studio Code / Android Studio
  • Flutter SDK: 3.x ์ด์ƒ
  • ํ…Œ์ŠคํŠธ ๊ธฐ๊ธฐ: Pixel 9 (Android 15 Emulator)

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

final/
โ”œโ”€ lib/
โ”‚  โ”œโ”€ main.dart                 # ์—”ํŠธ๋ฆฌ, AppRoot ๊ตฌ๋™
โ”‚  โ”œโ”€ app.dart                  # ๋ถ€ํŠธ์ŠคํŠธ๋žฉ(TTS/DB/๊ถŒํ•œ), ๋ผ์šฐํŒ…/ํ…Œ๋งˆ
โ”‚  โ”œโ”€ core/                     # ํ…Œ๋งˆ/๋กœ๊น…/์ ‘๊ทผ์„ฑ
โ”‚  โ”œโ”€ data/                     # prefs / DB / storage
โ”‚  โ”œโ”€ domain/
โ”‚  โ”‚  โ”œโ”€ gaze/                  # ์‹œ์„  FSM, ๋ณด์ •, Mock, Repo
โ”‚  โ”‚  โ”œโ”€ tts/                   # TTS ์„œ๋น„์Šค
โ”‚  โ”‚  โ”œโ”€ sos/                   # SOS ์„œ๋น„์Šค
โ”‚  โ”‚  โ””โ”€ models/                # Card / Board / Settings ๋ชจ๋ธ
โ”‚  โ”œโ”€ platform/                 # Android ์ฑ„๋„ ๊ธฐ๋ฐ˜ Gaze (Stub ํฌํ•จ)
โ”‚  โ””โ”€ ui/
โ”‚     โ”œโ”€ screens/               # ๋ฉ”์ธ / ์„ค์ • / ๋ณด์ • / SOS / ํŽธ์ง‘ ํ™”๋ฉด
โ”‚     โ””โ”€ widgets/               # ์ปค์„œ, ์นด๋“œ ๊ทธ๋ฆฌ๋“œ, ์ง„ํ–‰ ๋ง ๋“ฑ
โ”œโ”€ assets/
โ”‚  โ””โ”€ boards/cards_default.json # ๊ธฐ๋ณธ ๋ณด๋“œ ํ…œํ”Œ๋ฆฟ
โ”œโ”€ l10n/                        # ์–ธ์–ด ๋ฆฌ์†Œ์Šค(ko/en)
โ”œโ”€ pubspec.yaml
โ””โ”€ .gitignore

์„ค์น˜ ๋ฐ ์‹คํ–‰

์˜์กด์„ฑ ์„ค์น˜

flutter pub get

์‹คํ–‰

# Android (๊ถŒ์žฅ)
flutter run -d android

# iOS
flutter run -d ios

# Web (Mock Gaze ์‚ฌ์šฉ)
flutter run -d chrome

๋นŒ๋“œ

flutter build apk   # ๋˜๋Š” ios / web / windows / macos

๊ถŒํ•œ ๋ฐ ํ”Œ๋žซํผ ๋™์ž‘

ํ”Œ๋žซํผ ๋™์ž‘ ๋ฐฉ์‹
Android ML Kit + Camera ์ด๋ฏธ์ง€ ์ŠคํŠธ๋ฆผ์œผ๋กœ on-device ์‹œ์„  ์ถ”์ •
iOS ML Kit Face Detection ์ง€์› (๊ถŒํ•œ ํ•„์š”)
Web / ๋ฐ์Šคํฌํ†ฑ / ๊ถŒํ•œ ๊ฑฐ๋ถ€ 5์ดˆ ๋‚ด ์ด๋ฒคํŠธ ์—†์„ ์‹œ Mock Gaze ์ž๋™ ์ „ํ™˜
ํ”„๋ฆฌ๋ทฐ ์ฒ˜๋ฆฌ GazeHiddenPreview๋กœ 1ร—1 ์˜คํ”„์Šคํฌ๋ฆฐ ๋ Œ๋”๋ง

๊ถŒํ•œ ์š”์ฒญ: ์นด๋ฉ”๋ผ / ์ „ํ™” / ์ง„๋™
(permission_handler ํŒจํ‚ค์ง€๋กœ ๋Ÿฐํƒ€์ž„ ์š”์ฒญ)


์‚ฌ์šฉ ๋ฐฉ๋ฒ•

์ฒซ ์‹คํ–‰

  • ์นด๋ฉ”๋ผ ๋ฐ ์ „ํ™” ๊ถŒํ•œ์„ ํ—ˆ์šฉ
  • ๊ฑฐ๋ถ€ ์‹œ Mock Gaze ์ž๋™ ํ™œ์„ฑํ™” (์Œ์„ฑ ์•ˆ๋‚ด)

๋ณด์ •(Calibration)

  • 3ร—3 ์ ์„ ์ˆœ์ฐจ ์‘์‹œ โ†’ ๋ณด์ • ํ–‰๋ ฌ ์ž๋™ ๊ณ„์‚ฐ ํ›„ ์ €์žฅ

๋ฉ”์ธ ํ™”๋ฉด

  • ์‹œ์„  ์ปค์„œ๊ฐ€ ์นด๋“œ์— ๋จธ๋ฌผ๋ฉด ์ง„ํ–‰ ๋ง์ด ์ฐจ์˜ค๋ฅด๊ณ 
    ์™„๋ฃŒ ์‹œ TTS ๋ฐœํ™” ๋ฐ ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต

SOS ๋ชจ๋“œ

  • 112/119/์‚ฌ์šฉ์ž ์ง€์ • ๋ฒ„ํŠผ ์‘์‹œ ์‹œ
    ์ง„๋™ + ์Œ์„ฑ ์•ˆ๋‚ด ํ›„ ํ†ตํ™” ๋˜๋Š” ๋ฌธ์ž ์ „์†ก ์‹œ๋„

์„ค์ • ํ™”๋ฉด

  • ์‘์‹œ ์‹œ๊ฐ„, ์ปค์„œ ํฌ๊ธฐ, ๊ณ ๋Œ€๋น„, ๊ธ€์ž ํฌ๊ธฐ,
    TTS ์†๋„/ํ”ผ์น˜, Mock Gaze ์—ฌ๋ถ€, ์‹ค์‹œ๊ฐ„ ์ฝ์–ด์ฃผ๊ธฐ ๋“ฑ ์„ค์ •

๋ณด๋“œ ํŽธ์ง‘๊ธฐ

  • ์นด๋“œ ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ ๊ฐ€๋Šฅ
  • SharedPreferences ์— JSON ํ˜•ํƒœ๋กœ ์ €์žฅ๋จ

ํ…Œ์ŠคํŠธ ๋ฐ ๋นŒ๋“œ

flutter test        # ๋‹จ์œ„/์œ„์ ฏ ํ…Œ์ŠคํŠธ
dart format .       # ์ฝ”๋“œ ํฌ๋งท ์ •๋ฆฌ
flutter analyze     # ๋ฆฐํŠธ ๊ฒ€์‚ฌ

ํ…Œ์ŠคํŠธ ํ…œํ”Œ๋ฆฟ์€ ํ˜„์žฌ ๊ตฌ์กฐ(AppRoot)์— ๋งž๊ฒŒ ๋ณด์™„ ํ•„์š”
๊ณต์‹ lints(flutter_lints) ์ ์šฉ ์ค‘


Gitignore ์ฐธ๊ณ 

Flutter ํ‘œ์ค€ .gitignore ๊ธฐ๋ฐ˜:

  • /build/, .dart_tool/, .pub-cache/, .idea/, .DS_Store
  • ํ”Œ๋žซํผ ๋นŒ๋“œ ์‚ฐ์ถœ๋ฌผ, IDE ๋ฉ”ํƒ€, ์ž„์‹œ ํŒŒ์ผ ๋“ฑ ์ œ์™ธ
  • ์™ธ๋ถ€ API ํ‚ค/๋น„๋ฐ€ ์ •๋ณด ์—†์Œ (ํ•„์š” ์‹œ .gitignore์— ์ถ”๊ฐ€)

ยฉ 2025 NanoLab-Vibe-Coding โ€” Ask Eye Flutter Project

About

fluuter-Ask_Eye

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors