QR 코드의 실시간 움직임을 추적하고 그래프로 시각화하는 Flutter 앱
- 실시간 QR 코드 감지: 카메라를 통해 QR 코드를 실시간으로 감지
- 움직임 추적: QR 코드의 X, Y 좌표를 매 프레임마다 추적
- 속도 계산: 실시간으로 X, Y 축의 이동 속도 계산
- 그래프 시각화:
- 위치 그래프 (X, Y 좌표)
- 속도 그래프 (X, Y 속도)
- 반응형 UI: Sizer를 사용한 모든 기기 대응
- 상태 관리: GetX를 사용한 효율적인 상태 관리
- Framework: Flutter 3.0+
- 상태 관리: GetX
- 반응형 UI: Sizer
- QR 스캔: mobile_scanner
- 차트: fl_chart
- 카메라: camera
- 권한 관리: permission_handler
flutter --versioncd qr_motion_tracker
flutter pub get# Android
flutter run
# iOS
flutter run -d ios
# 특정 디바이스
flutter devices
flutter run -d [device-id]lib/
├── main.dart # 앱 진입점
├── app/
│ ├── routes/
│ │ ├── app_pages.dart # 라우팅 설정
│ │ └── app_routes.dart # 라우트 정의
│ ├── data/
│ │ └── models/
│ │ └── qr_motion_data.dart # 움직임 데이터 모델
│ └── modules/
│ ├── home/
│ │ ├── home_view.dart # 홈 화면
│ │ ├── home_controller.dart # 홈 컨트롤러
│ │ └── home_binding.dart # 홈 바인딩
│ └── camera/
│ ├── camera_view.dart # 카메라 화면
│ ├── camera_controller.dart # 카메라 컨트롤러
│ └── camera_binding.dart # 카메라 바인딩
- 앱 실행: 홈 화면에서 "추적 시작" 버튼 클릭
- 카메라 고정: 휴대폰을 고정된 위치에 배치
- QR 코드 이동: QR 코드를 카메라 앞에서 이동
- 실시간 추적: 화면에서 실시간으로 위치와 속도 확인
- 그래프 확인: 하단 그래프에서 움직임 패턴 분석
- 실시간 QR 코드 감지
- 현재 위치 (X, Y)
- 데이터 포인트 개수
- X 위치 (파란색)
- Y 위치 (빨간색)
- X 속도 (초록색)
- Y 속도 (주황색)
- 위치 그래프: 시간에 따른 X, Y 좌표 변화
- 속도 그래프: 시간에 따른 X, Y 속도 변화
- 플래시: 어두운 환경에서 조명 사용
- 카메라 전환: 전면/후면 카메라 전환
- 데이터 초기화: 수집된 데이터 초기화
- 일시정지/시작: 추적 일시정지 및 재개
android.permission.CAMERA: 카메라 접근android.permission.FLASHLIGHT: 플래시 사용
NSCameraUsageDescription: 카메라 접근
flutter build apk --releaseflutter build ios --releaseflutter build appbundle --releasecamera_controller.dart에서 maxDataPoints 값을 수정:
final int maxDataPoints = 100; // 원하는 값으로 변경camera_view.dart의 _buildPositionChart() 및 _buildVelocityChart() 메서드에서 색상과 스타일 수정 가능
camera_controller.dart에서 DetectionSpeed 변경:
detectionSpeed: DetectionSpeed.normal, // normal, noDuplicates, unrestricted- 권한이 허용되었는지 확인
- 에뮬레이터가 아닌 실제 디바이스에서 테스트
- AndroidManifest.xml 및 Info.plist 권한 확인
- QR 코드가 올바르게 감지되는지 확인
- 충분한 조명이 있는지 확인
- QR 코드가 카메라 시야 내에 있는지 확인
이 프로젝트는 MIT 라이선스 하에 있습니다.
GenSpark AI Developer
- Flutter Team
- GetX Package
- mobile_scanner Package
- fl_chart Package
- Sizer Package