diff --git a/apps/android/README.md b/apps/android/README.md index 576f01e7c..76be2f226 100644 --- a/apps/android/README.md +++ b/apps/android/README.md @@ -1,10 +1,51 @@ ## Clawdis Node (Android) (internal) -Prototype Android “node” app (Iris parity): connects to the Gateway-owned bridge (`_clawdis-bridge._tcp`) over TCP and exposes Canvas + Chat + Camera. +Modern Android “node” app (Iris parity): connects to the **Gateway-owned bridge** (`_clawdis-bridge._tcp`) over TCP and exposes **Canvas + Chat + Camera**. -### Open in Android Studio +Notes: +- The node keeps the connection alive via a **foreground service** (persistent notification with a Disconnect action). +- Chat always uses the shared session key **`main`** (same session across iOS/macOS/WebChat/Android). +- Supports modern Android only (`minSdk 31`, Kotlin + Jetpack Compose). + +## Open in Android Studio - Open the folder `apps/android`. -### Run -- `./gradlew :app:installDebug` +## Build / Run +```bash +cd apps/android +./gradlew :app:assembleDebug +./gradlew :app:installDebug +./gradlew :app:testDebugUnitTest +``` + +`gradlew` auto-detects the Android SDK at `~/Library/Android/sdk` (macOS default) if `ANDROID_SDK_ROOT` / `ANDROID_HOME` are unset. + +## Connect / Pair + +1) Start the gateway (on your “master” machine): +```bash +pnpm clawdis gateway --port 18789 --verbose +``` + +2) In the Android app: +- Open **Settings** +- Either select a discovered bridge under **Discovered Bridges**, or use **Advanced → Manual Bridge** (host + port). + +3) Approve pairing (on the gateway machine): +```bash +clawdis nodes pending +clawdis nodes approve +``` + +More details: `docs/android/connect.md`. + +## Permissions + +- Discovery: + - Android 13+ (`API 33+`): `NEARBY_WIFI_DEVICES` + - Android 12 and below: `ACCESS_FINE_LOCATION` (required for NSD scanning) +- Foreground service notification (Android 13+): `POST_NOTIFICATIONS` +- Camera: + - `CAMERA` for `camera.snap` and `camera.clip` + - `RECORD_AUDIO` for `camera.clip` when `includeAudio=true`