docs(techstack): record Android native call media (Increment 2a)

LiveKit Android 2.29.2 + audioswitch + Kotlin in the native-call plugin, the
microphone foreground service, the ANDROID_NATIVE_MEDIA flag, and minSdk 24.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
SravanandClaude Opus 4.8 committed 2026-10-30 17:27:01 +05:30
1 parent aa4aeeaba1
commit 0b3a8b0955
1 file changed
+14 -5
+14 -5
View File
@@ -1,6 +1,6 @@
# Tech Stack — BizGaze Connect
> Living document. **Last updated: 2026-10-27** (rev 2). Update this file whenever a dependency, platform, service, or
> Living document. **Last updated: 2026-10-30** (rev 3). Update this file whenever a dependency, platform, service, or
> tool is added/removed/version-bumped. See [Maintaining this file](#maintaining-this-file) and the
> [Changelog](#changelog) at the bottom.
@@ -85,7 +85,9 @@ hash, per-user salt, timing-safe compare), opaque random session tokens, SHA-256
- **LiveKit clients:**
- Web: self-hosted **`livekit-client` ~2.20** UMD (`server/public/vendor/livekit-client.umd.min.js`).
- iOS: **LiveKit Swift SDK `2.15.3`** (SPM, `client-sdk-swift`, product `LiveKit`).
- Android: **LiveKit Android SDK** (`io.livekit:livekit-android`) — planned for native-calling Increment 2.
- Android: **LiveKit Android SDK** `io.livekit:livekit-android` **2.29.2** (+ `com.twilio:audioswitch` for
output routing, Kotlin coroutines) — native call **audio** + Speaker/Bluetooth/Earpiece (Increment 2a); native
**video** is Increment 2b. Needs the JitPack repo; raises the app to **minSdk 24**.
## Web client (`server/public/`)
@@ -105,12 +107,16 @@ hash, per-user salt, timing-safe compare), opaque random session tokens, SHA-256
- `native-call` — native calling. **iOS:** Swift, CallKit + PushKit (VoIP) + LiveKit Swift SDK (native media,
video tiles, screen-share via a ReplayKit broadcast extension), on-device live transcription
(`SFSpeechRecognizer`). **Android:** Java, full-screen incoming-call UI over the lock screen + a
`FirebaseMessagingService` woken by high-priority FCM data messages (native LiveKit media = Increment 2, WIP).
`FirebaseMessagingService` woken by high-priority FCM data messages. **Increment 2a** adds native LiveKit
**audio** (Kotlin `CallMedia` + a `microphone` foreground service for background audio + `AudioSwitchHandler`
routing), gated by the server flag `ANDROID_NATIVE_MEDIA`; native video = Increment 2b.
- `audio-route` (iOS audio output routing), `media-library` (save to Photos/gallery), `share-inbox` (inbound
share sheet), `file-opener` (native Quick Look / open-with).
- **iOS build:** Capacitor 8 + **SPM** (CocoaPods retired); Xcode 26; a share extension + a broadcast extension.
- **Android build:** JDK **21**, AGP 8.7 / Gradle 8.11, target SDK 36, edge-to-edge; manifest patched in CI
(`mobile/scripts/android-patch.js`) since `mobile/android/` is generated fresh per build.
- **Android build:** JDK **21**, AGP 8.7 / Gradle 8.11, **minSdk 24** (raised for LiveKit), target SDK 36,
edge-to-edge; the native-call plugin module also applies **kotlin-android** for the LiveKit media layer.
`mobile/android/` is generated fresh per build, so permissions **and the minSdk bump** are applied in CI by
`mobile/scripts/android-patch.js`.
## Desktop app (`desktop/`) — Electron
@@ -194,6 +200,9 @@ Bump the **Last updated** date at the top and add a line to the Changelog below.
## Changelog
- **2026-10-30 (rev 3)** — Android native call media (Increment 2a): added `io.livekit:livekit-android` 2.29.2 +
`com.twilio:audioswitch` + Kotlin to the native-call plugin, a `microphone` foreground service, the
`ANDROID_NATIVE_MEDIA` server flag, and raised the Android app to minSdk 24.
- **2026-10-27 (rev 2)** — Added the **Identity & auth** section (sessions/cookies + bearer, refresh tokens,
TOTP MFA, BizGaze IdP/SSO, roles & tenancy, API keys, directory, audit).
- **2026-10-27** — Initial tech-stack document created.