android(call): Increment 2b — native camera video + hole-punch tiles
Mirrors the iOS native-video path on Android, gated by ANDROID_NATIVE_VIDEO. - CallVideo (new): hole-punch (transparent WebView over a black parent with a container behind) + per-tile LiveKit TextureViewRenderer, positioned from the web's CSS-px tile rects scaled by display density. TextureView (not Surface) so it composites behind the transparent WebView. Local camera mirrored; camera = aspect-fill, screen = aspect-fit; stale renderers released. - CallMedia: setCameraEnabled / switchCamera (LocalVideoTrack.switchCamera) + cameraTrack/screenTrack lookup (by LiveKit identity = mesh peerId) + initRenderer. All LiveKit 2.29.2 APIs verified against source. - NativeCallPlugin: setCamera / switchCamera / setHolePunch / syncVideoTiles get real bodies (+ CAMERA runtime-permission prompt, video teardown on endCall). Screen-share (MediaProjection), tile zoom and #5 transcript stay no-ops. Web needs no change: the shared NativeCall bridge already drives these for any meetNative call; bzNativeVideoOn() enables hole-punch + the tile poll on Android once the flag is on. Flip ANDROID_NATIVE_VIDEO=1 after a 2b APK is installed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
ae607f44b5
commit
4baace83bc
4 files changed
+269
-8
No files matched your search
+8
-2
@@ -1,6 +1,6 @@
|
||||
# Tech Stack — BizGaze Connect
|
||||
|
||||
> Living document. **Last updated: 2026-10-30** (rev 3). Update this file whenever a dependency, platform, service, or
|
||||
> Living document. **Last updated: 2026-11-03** (rev 4). 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.
|
||||
|
||||
@@ -109,7 +109,9 @@ hash, per-user salt, timing-safe compare), opaque random session tokens, SHA-256
|
||||
(`SFSpeechRecognizer`). **Android:** Java, full-screen incoming-call UI over the lock screen + a
|
||||
`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.
|
||||
routing), gated by the server flag `ANDROID_NATIVE_MEDIA`. **Increment 2b** adds native **video** (Kotlin
|
||||
`CallVideo`: camera publish/flip + remote/local `TextureViewRenderer` tiles hole-punched behind a transparent
|
||||
WebView), gated by `ANDROID_NATIVE_VIDEO`; screen-share (MediaProjection) is still pending.
|
||||
- `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.
|
||||
@@ -201,6 +203,10 @@ Bump the **Last updated** date at the top and add a line to the Changelog below.
|
||||
|
||||
## Changelog
|
||||
|
||||
- **2026-11-03 (rev 4)** — Android native call **video** (Increment 2b): `CallVideo` renders camera/screen tiles
|
||||
with LiveKit `TextureViewRenderer` hole-punched behind a transparent WebView; `CallMedia` gains camera
|
||||
publish/flip + track lookup; new `ANDROID_NATIVE_VIDEO` server flag. Also fixed the white meeting background
|
||||
(hole-punch no longer turns on without native video).
|
||||
- **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. Build fix: `android-patch.js`
|
||||
|
||||
Reference in new issue
Block a user