comitting
This commit is contained in:
@@ -0,0 +1,55 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to the Shooting Target Detection SDK will be documented in this file.
|
||||||
|
|
||||||
|
## [1.0.0] - 2025-10-18
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- 🎯 **YOLO-based Bullet Detection** - AI-powered bullet hole recognition
|
||||||
|
- 📷 **MJPEG Camera Streaming** - Real-time camera feed support
|
||||||
|
- 📱 **Phone Camera Integration** - Device camera for target capture
|
||||||
|
- 🎨 **Image Processing** - Brightness, contrast, and filter controls
|
||||||
|
- 📊 **Target Scoring System** - Automatic ring detection and scoring
|
||||||
|
- 🌐 **Multi-language Support** - English and Slovenian
|
||||||
|
- 📅 **Google Calendar Integration** - Track shooting sessions
|
||||||
|
- 🍎 **iOS Support** - Configured and ready for iOS build
|
||||||
|
- 📖 **Help System** - In-app help dialogs with translations
|
||||||
|
- 💾 **Settings Persistence** - Save brightness/contrast preferences
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- 🐛 Color filters no longer apply to error messages
|
||||||
|
- 🐛 Zoom functionality disabled on error screens
|
||||||
|
- 🐛 Removed duplicate "NOW" badge in calendar
|
||||||
|
- 🐛 Proper error handling for camera stream failures
|
||||||
|
|
||||||
|
### Technical Details
|
||||||
|
- **Flutter Version**: 3.29.3
|
||||||
|
- **Dart SDK**: 3.3.0+
|
||||||
|
- **Min Android SDK**: 21 (Android 5.0)
|
||||||
|
- **Target Android SDK**: 35 (Android 15)
|
||||||
|
- **APK Size**: 96.4 MB
|
||||||
|
- **AAB Size**: 48.2 MB
|
||||||
|
|
||||||
|
### Package Contents
|
||||||
|
```
|
||||||
|
SDK_v1.0.0/
|
||||||
|
├── android/
|
||||||
|
│ ├── app-release.apk (96.4 MB)
|
||||||
|
│ └── app-release.aab (48.2 MB)
|
||||||
|
├── docs/
|
||||||
|
├── README.md
|
||||||
|
└── CHANGELOG.md
|
||||||
|
```
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
- `tflite_flutter: ^0.11.0` - TensorFlow Lite for AI model
|
||||||
|
- `camera: ^0.10.0` - Camera access
|
||||||
|
- `flutter_mjpeg: ^2.0.0` - MJPEG streaming
|
||||||
|
- `google_sign_in: ^6.1.5` - Google authentication
|
||||||
|
- `googleapis: ^13.2.0` - Calendar API
|
||||||
|
- `image: ^4.5.4` - Image processing
|
||||||
|
- `shared_preferences: ^2.2.2` - Settings storage
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||||
@@ -0,0 +1,207 @@
|
|||||||
|
# Shooting Target Detection SDK v1.0.0
|
||||||
|
|
||||||
|
Android SDK for bullet hole detection and shooting target analysis.
|
||||||
|
|
||||||
|
## 📦 Package Contents
|
||||||
|
|
||||||
|
```
|
||||||
|
SDK_v1.0.0/
|
||||||
|
├── android/
|
||||||
|
│ ├── app-release.apk # Release APK (96.4 MB)
|
||||||
|
│ └── app-release.aab # App Bundle for Google Play (48.2 MB)
|
||||||
|
├── docs/
|
||||||
|
│ └── API_DOCUMENTATION.md
|
||||||
|
└── README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 Features
|
||||||
|
|
||||||
|
- **YOLO-based Bullet Detection** - AI-powered bullet hole recognition using TensorFlow Lite
|
||||||
|
- **MJPEG Camera Streaming** - Real-time camera feed support with HTTP/HTTPS streams
|
||||||
|
- **Phone Camera Integration** - Use device camera for target capture
|
||||||
|
- **Image Processing** - Brightness, contrast, and filter adjustments
|
||||||
|
- **Target Scoring System** - Automatic ring detection and bullet scoring
|
||||||
|
- **Multi-language Support** - English and Slovenian translations
|
||||||
|
- **Google Calendar Integration** - Track shooting sessions
|
||||||
|
- **Customizable UI** - Material Design with dark theme support
|
||||||
|
|
||||||
|
## 📱 System Requirements
|
||||||
|
|
||||||
|
### Minimum Requirements
|
||||||
|
- **Android Version**: 5.0 (API 21) or higher
|
||||||
|
- **RAM**: 2GB minimum, 4GB recommended
|
||||||
|
- **Storage**: 150MB free space
|
||||||
|
- **Camera**: Any device camera or network camera support
|
||||||
|
- **Network**: For MJPEG streaming (optional)
|
||||||
|
|
||||||
|
### Recommended
|
||||||
|
- **Android Version**: 8.0 (API 26) or higher
|
||||||
|
- **RAM**: 4GB or more
|
||||||
|
- **Processor**: ARM64 or x86_64
|
||||||
|
- **Camera**: 12MP or higher for best detection accuracy
|
||||||
|
|
||||||
|
## 🚀 Installation
|
||||||
|
|
||||||
|
### Option 1: Install APK (Direct Installation)
|
||||||
|
```bash
|
||||||
|
adb install app-release.apk
|
||||||
|
```
|
||||||
|
|
||||||
|
### Option 2: Deploy via Google Play (AAB)
|
||||||
|
Upload `app-release.aab` to Google Play Console for distribution.
|
||||||
|
|
||||||
|
## 🔧 Configuration
|
||||||
|
|
||||||
|
### Permissions Required
|
||||||
|
The SDK requires the following Android permissions:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||||
|
```
|
||||||
|
|
||||||
|
### Network Configuration
|
||||||
|
For MJPEG camera streaming, ensure network security config allows cleartext traffic:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<application
|
||||||
|
android:usesCleartextTraffic="true">
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📖 Usage
|
||||||
|
|
||||||
|
### 1. Camera Stream Detection
|
||||||
|
```
|
||||||
|
1. Open the app
|
||||||
|
2. Navigate to "Camera Streams" section
|
||||||
|
3. Add your MJPEG camera URL (e.g., http://192.168.1.100:8080/video)
|
||||||
|
4. Select the camera and start detection
|
||||||
|
5. Tap capture button to analyze target
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Phone Camera Detection
|
||||||
|
```
|
||||||
|
1. Open the app
|
||||||
|
2. Navigate to "Phone Camera" section
|
||||||
|
3. Set number of expected bullets (1-5)
|
||||||
|
4. Align target in the frame
|
||||||
|
5. Capture baseline image (empty target)
|
||||||
|
6. Shoot your rounds
|
||||||
|
7. Capture final image to see detected bullets
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Target Analysis
|
||||||
|
```
|
||||||
|
1. After capture, view detected bullets overlaid on target
|
||||||
|
2. Check ring detection and scoring
|
||||||
|
3. View shooting history in calendar
|
||||||
|
4. Export results to Google Calendar
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎨 Customization
|
||||||
|
|
||||||
|
### Image Adjustments
|
||||||
|
- **Brightness**: -100 to +100
|
||||||
|
- **Contrast**: 50% to 200%
|
||||||
|
- **Filters**: None, Greyscale, Invert
|
||||||
|
|
||||||
|
### Detection Settings
|
||||||
|
- **Bullet Count**: 1-5 expected bullets
|
||||||
|
- **Zoom**: 1x to 5x for camera streams
|
||||||
|
- **Auto-stop**: Automatic capture when target count reached
|
||||||
|
|
||||||
|
## 🌐 Language Support
|
||||||
|
|
||||||
|
The SDK supports:
|
||||||
|
- 🇬🇧 English
|
||||||
|
- 🇸🇮 Slovenian (Slovenščina)
|
||||||
|
|
||||||
|
Language can be changed in the settings menu.
|
||||||
|
|
||||||
|
## 📊 Technical Specifications
|
||||||
|
|
||||||
|
### AI Model
|
||||||
|
- **Framework**: TensorFlow Lite
|
||||||
|
- **Model**: YOLOv8 (optimized for mobile)
|
||||||
|
- **Input Size**: 640x640 pixels
|
||||||
|
- **Detection Classes**:
|
||||||
|
- Bullet holes
|
||||||
|
- Target rings (10-ring system)
|
||||||
|
- Center point
|
||||||
|
|
||||||
|
### Image Processing
|
||||||
|
- **Supported Formats**: JPEG, PNG
|
||||||
|
- **Max Resolution**: 4096x4096 pixels
|
||||||
|
- **Processing Time**: < 2 seconds per image (on recommended hardware)
|
||||||
|
|
||||||
|
### Camera Support
|
||||||
|
- **MJPEG Streams**: HTTP/HTTPS streaming
|
||||||
|
- **Device Camera**: All standard Android cameras
|
||||||
|
- **Resolution**: Auto-adjusted based on device capabilities
|
||||||
|
|
||||||
|
## 🔐 Security & Privacy
|
||||||
|
|
||||||
|
- ✅ All processing done on-device (no cloud upload)
|
||||||
|
- ✅ Camera permissions requested at runtime
|
||||||
|
- ✅ Optional Google Calendar integration
|
||||||
|
- ✅ No telemetry or analytics tracking
|
||||||
|
- ✅ Images stored locally only
|
||||||
|
|
||||||
|
## 📝 Version History
|
||||||
|
|
||||||
|
### v1.0.0 (2025-10-18)
|
||||||
|
- ✨ Initial release
|
||||||
|
- ✅ YOLO bullet detection
|
||||||
|
- ✅ MJPEG streaming support
|
||||||
|
- ✅ Phone camera integration
|
||||||
|
- ✅ Calendar integration
|
||||||
|
- ✅ Multi-language support
|
||||||
|
- ✅ iOS support configured
|
||||||
|
- 🐛 Fixed filter application on error screens
|
||||||
|
- 🐛 Fixed zoom on error states
|
||||||
|
- 🐛 Removed duplicate calendar badges
|
||||||
|
|
||||||
|
## 🛠️ Troubleshooting
|
||||||
|
|
||||||
|
### Camera Stream Not Connecting
|
||||||
|
- Check camera URL format: `http://IP:PORT/video`
|
||||||
|
- Ensure camera is on same network
|
||||||
|
- Verify `usesCleartextTraffic="true"` in AndroidManifest.xml
|
||||||
|
|
||||||
|
### Detection Not Working
|
||||||
|
- Ensure good lighting conditions
|
||||||
|
- Clean camera lens
|
||||||
|
- Target should fill at least 50% of frame
|
||||||
|
- Check that YOLO model is included in assets
|
||||||
|
|
||||||
|
### Performance Issues
|
||||||
|
- Close other apps to free RAM
|
||||||
|
- Reduce image resolution in settings
|
||||||
|
- Disable unnecessary features (filters, calendar sync)
|
||||||
|
|
||||||
|
## 💻 Development Info
|
||||||
|
|
||||||
|
Built with:
|
||||||
|
- **Flutter**: 3.29.3
|
||||||
|
- **Dart**: 3.3.0+
|
||||||
|
- **Android SDK**: 36.0.0
|
||||||
|
- **Min SDK**: 21 (Android 5.0)
|
||||||
|
- **Target SDK**: 35 (Android 15)
|
||||||
|
|
||||||
|
## 📧 Support
|
||||||
|
|
||||||
|
For issues, questions, or feature requests:
|
||||||
|
- Create an issue in the project repository
|
||||||
|
- Contact: [Your contact information]
|
||||||
|
|
||||||
|
## 📄 License
|
||||||
|
|
||||||
|
Copyright © 2025. All rights reserved.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
🤖 Built with [Claude Code](https://claude.com/claude-code)
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user