VisioLock is a Flutter app for secure image transmission over audio.
The app converts an image into encrypted data, transmits it as an FSK WAV file, and reconstructs the original image on the receiver side.
- Sender picks an image.
- App derives an encryption key.
- Image payload is encrypted and FEC-protected.
- Data is modulated into audio and exported as WAV.
- Receiver imports WAV, demodulates, decrypts, and reconstructs the image.
- Sender pipeline: image -> encryption -> FSK audio export
- Receiver pipeline: audio import -> Goertzel-based FSK decoding -> image recovery
- Noise-resilient transmission path with forward error correction
- Android-friendly workflow with file picker and media permission handling
- Flutter / Dart
- Reed-Solomon error correction
- FSK modulation and Goertzel demodulation
- Secure local key material support
- Flutter SDK
- Dart SDK (via Flutter)
- Android SDK / Android Studio (for Android builds)
flutter pub get
flutter runflutter build apkRelease APK output:
build/app/outputs/flutter-apk/app-release.apk
This repository includes automated GitHub release publishing via:
.github/workflows/release.yml
When a tag matching v* is pushed, GitHub Actions creates a release and attaches the latest APK found in release/*.apk.
Typical release steps:
- Build the app:
flutter build apk - Copy APK to versioned file (example):
release/app-release-v1.0.2.apk - Commit changes
- Create tag:
git tag -a v1.0.2 -m "VisioLock v1.0.2" - Push:
git push origin main --follow-tags
release/app-release-v1.0.0.apkrelease/app-release-v1.0.1.apk
- Exported WAV and decoded image files are stored in the app documents directory.
- On Android 13+, media read permissions are requested when selecting image/audio files.