MelonSense is an experimental native Android app for comparing watermelons with local visual models, a knock-test audio heuristic, and personal outcome history.
Important
MelonSense is a personal-use alpha, not a reliable or scientifically validated ripeness detector. Current model results do not include a physical-phone, grocery-store holdout, and knock scoring is not yet backed by a trained audio model.
- Photo-first assessment using packaged PyTorch Lite models on the device.
- Metered automatic photo flash with explicit On and Off overrides.
- Guided three-knock audio capture and local signal analysis.
- Combined
Strong Pick,Good Candidate,Maybe, orSkipresult. I Picked Thishistory with sweetness and texture outcome ratings.- Default-on training capture with app-private storage and 14-day media cleanup.
- Shareable training-data ZIP export and Python retraining tools.
- Versioned local model catalog with no server inference requirement.
The app requests camera and microphone access. It does not request location or internet access, Android backup is disabled, and retained media stays in the app's private storage unless the user explicitly shares an export.
Download an APK from the latest GitHub release. For most current Android phones,
use the arm64-v8a APK. Use the universal APK only when the device ABI is
unknown; it is substantially larger.
MelonSense requires Android 8.0 (API 26) or newer. Because releases are published outside Google Play, Android may ask for permission to install an unknown app.
- Capture a clear photo of one watermelon.
- Review the visual signal and continue to the knock test.
- Record three knocks in a reasonably quiet environment.
- Review the combined result and tap
I Picked Thiswhen applicable. - After opening the melon, rate sweetness and texture from History.
Those outcome ratings can be exported for future model training. They do not automatically retrain or replace the model on the phone.
./gradlew :app:testStableDebugUnitTest spotlessCheck \
:app:compileStableDebugKotlin :app:lintStableDebug
./gradlew :app:assembleStableDebug
./gradlew :app:assembleStableRelease
python3 -m unittest discover -s tests -vABI-specific and universal APKs are written below
app/build/outputs/apk/stable/.
- Visual performance on public-dataset splits does not establish grocery-store accuracy.
- Audio scoring uses peak, RMS, estimated frequency, and consistency heuristics; it is not a trained ripeness model.
- Runtime ripeness remains binary until the overripe data gate is met.
- The PyTorch runtime makes ABI APKs roughly 60-85 MB and the universal APK about 250 MB.
- Real-device testing with varied phones, stores, and watermelons remains the next model-quality milestone.
- Changelog
- Training pipeline
- Dataset qualification
- Model quality
- Audio model hardening
- Emulator media QA
- Android packaging size
No project license has been granted yet. Third-party datasets and model inputs retain their respective licenses and attribution requirements.