A native Android app that receives photos from Wi-Fi SD cards (Eye-Fi Mobi and Pro/X2 series). Connect your phone to your card's network and your shots are transferred straight to the device and saved to your gallery - the Android counterpart of seefi-ios.
- Receive photos from Wi-Fi SD cards (Mobi and Pro/X2 series) while the app runs a small foreground service
- Photos are saved to Pictures/Seefi through MediaStore, so they appear in the system gallery and other apps
- In-app gallery to browse, open and delete received photos
- Card configuration for Pro/X2 upload keys and the card's Wi-Fi credentials
- Best-effort Wi-Fi network suggestion so the OS can join the card's network
- Android 10 (API 29) or newer
- A physical device on the card's Wi-Fi network (an emulator has no Wi-Fi radio)
The app implements the Wi-Fi SD card SOAP protocol on port 59278:
StartSession- authentication handshakeGetPhotoStatus- card verification before uploadUpload- multipart TAR file uploadMarkLastPhotoInRoll- end of roll notification
Credential computation follows the Mobi (zero key) and Pro (upload_key)
variants.
./gradlew assembleDebug # build
./gradlew testDebugUnitTest # run unit tests
./gradlew installDebug # install on a connected deviceThe Android SDK is auto-downloaded by Gradle when ANDROID_HOME is set and
licenses are accepted. version.txt at the repository root is the release
version (kept in sync by release-please).
Releases are automated with release-please.
Use Conventional Commits (feat:, fix:, etc.)
in your commits; release-please creates Release PRs and, when merged, builds the
release APK and attaches it to the GitHub release.
The APK is signed when repository secrets are configured:
| Secret | Description |
|---|---|
SEEFI_KEYSTORE_BASE64 |
A keystore (.jks/.keystore), base64-encoded |
SEEFI_KEYSTORE_PASSWORD |
Keystore password |
SEEFI_KEY_ALIAS |
Key alias |
SEEFI_KEY_PASSWORD |
Key password (defaults to the keystore password) |
Without the secrets, an unsigned release APK is attached (signed with debug keys is intentionally avoided). To create a base64 keystore:
keytool -genkey -v -keystore seefi.keystore -alias seefi -keyalg RSA -keysize 2048 -validity 10000
base64 -w0 seefi.keystoreSee LICENSE file (GPL-3.0), same as seefi-ios.