Skip to content
sstreamzet/docs
Android SDK 0.2.0-rc.3Open console
Developer docs / Android SDK
API and integration guide · Updated 2026-09-23

Android API reference

Complete public configuration and method contracts. Kotlin names are stable across all documentation languages.

Downloads and public test settings

Download the files below directly. The downloads guide provides the public test key and configuration; pair the device code in your own account for testing.

Android SDK package

0.2.0-rc.3

Maven repository, AAR, sample source, both test APKs, public test configuration and offline guides.

Android 8+ / API 26+ · 45.8 MiB · ZIP

Download

streamzet-android-0.2.0-rc.3-public-20260923.zip

Verify SHA-256
sha256
86ae2b2b3f5df527c302e4ae96f334f9919127a9fae77b114f69cdbfdf045896
Download checksum file

Business sample APK

0.2.0-rc.3

English UI. An SDK embedded in a business screen. Test product entry and remote support. Debug signed for evaluation.

Android 8+ / API 26+ · 44.2 MiB · APK

Download

streamzet-business-sample-0.2.0-rc.3.apk

Verify SHA-256
sha256
470239bdb25f013cf8cab53503d1a93093f41957184af30d31769bf82644edbd
Download checksum file

Standalone support APK

0.2.0-rc.3

English UI. A standalone app for starting and stopping screen sharing and control. Public configuration included; debug signed for evaluation.

Android 8+ / API 26+ · 44.2 MiB · APK

Download

streamzet-support-0.2.0-rc.3.apk

Verify SHA-256
sha256
19b064db0702fdd39c22ea8d94a0b10cd2914a7c887f14a1274f6c2b22de6c1f
Download checksum file

SupportConfig

Field / APIType / defaultContract
apiKeyString · requiredStreamZet key: sz_test_public for evaluation, or an issued sz_live_ key for tenant enrollment. The SDK manages service endpoints and its public transport key.
deviceNameString · requiredNonblank, at most 128 Kotlin UTF-16 code units (String.length), not bytes.
sessionTimeoutSecondsInt · 0Seconds. 0 disables elapsed-time expiry; otherwise 60–14400 inclusive. User/operator/system stop still applies.
connectionTimeoutSecondsInt · 120Seconds, 15–300 inclusive. Negotiation watchdog retries; it does not end sharing consent.
framesPerSecondInt · 30Capture request rate, 1–30 inclusive; actual delivered FPS depends on load/network.
maxVideoDimensionInt · 1600Pixels on longest encoded edge. 0 preserves display resolution; otherwise 640–3840 inclusive. Aspect ratio retained.

Configuration is immutable. Invalid fields throw at construction (IllegalArgumentException; malformed URI syntax may throw URISyntaxException). No network is performed by the constructor. toString redacts credentials.

SupportLauncher · recommended flow

Field / APIType / defaultContract
bind(activity, support, listener)→ SupportLauncheractivity: ComponentActivity before STARTED; support: initialized process instance; listener: SupportUiListener main-thread callback. Once per Activity. Reuse support across rotation; invalid lifecycle/duplicate binding throws IllegalStateException.
stateSupportUiStateSnapshot for rendering. See the state reference for every field.
start()→ SupportStartResultMain thread, explicit user action in RESUMED Activity. ACCEPTED only schedules preparation; registration, permissions and connection may still fail.
stop()→ UnitMain thread. Cancels preparation or stops active support; repeatable. Destroying the Activity alone only detaches the coordinator.

StreamzetSupport · lifecycle and manual flow

Field / APIType / defaultContract
initialize(context, config)→ StreamzetSupportcontext: Android Context, retained as applicationContext; config: SupportConfig. Main thread, once per process; duplicate initialization throws IllegalStateException.
getInstance()→ StreamzetSupport?Existing process instance, or null before initialize/after close. Does not initialize automatically.
register()suspend → Result<DeviceRegistration>Any dispatcher; concurrent calls share one request. Active support returns failure. Network/auth errors return sanitized failure and ERROR/REGISTRATION_FAILED. Closed SDK throws; coroutine cancellation propagates. Registration alone does not share the screen or report online.
stateStateFlow<SupportState>Read-only latest state. Collect with the host lifecycle.
isControlAvailableBooleanCurrent accessibility input-service availability. true does not prove a viewer is connected or that every widget is controllable.
createScreenCaptureIntent()→ IntentManual flow only: after register, visible user request, main thread, inactive support. Marks AWAITING_CONSENT. Launch through Activity Result API. Missing registration/active/closed state throws IllegalStateException.
onScreenCaptureResult(activity, resultCode, data)→ Booleanactivity: live Activity; resultCode: system Int; data: Intent?. Consumes one pending result. false for denial, null/stale/duplicate data or service-start failure. true means service start accepted, not connected. Never persist/reuse projection data.
accessibilitySettingsIntent()→ IntentIntent for Android accessibility settings; launch from host UI. Does not grant permission.
addListener(listener)→ UnitSupportListener receives current and future SupportState on main thread. Duplicate same listener is deduplicated; callback exceptions are isolated.
removeListener(listener)→ UnitMain thread. Remove the exact listener instance when the host view is destroyed. Missing listener is harmless.
stop()→ UnitMain thread; repeatable, including pending registration/consent. Stops capture/input/signaling; closed SDK is a no-op.
close()→ UnitMain thread. Stops support, releases listeners/network resources and clears singleton; repeatable. Use only when the host no longer needs the SDK, not Activity rotation.

Non-suspending lifecycle methods are main-thread APIs; wrong-thread calls may throw IllegalStateException. SupportListener.onStateChanged(state: SupportState) and SupportUiListener.onStateChanged(state: SupportUiState) return Unit. RemoteInputService is registered for Android to bind; do not instantiate or call its framework lifecycle methods.