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

Integrate into your app

From the delivered Maven package to a compilable Activity, permissions, lifecycle and release checks.

Downloads and public test settings

This page is for developers who can edit and build the host app. To try the features first, use the no-code walkthrough or test-app guide above.

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

1. Prerequisites and compatibility

Use SDK 0.2.0-rc.3, declared minSdk 26, compileSdk 35 and JDK/JVM target 17. The example is built with AGP 8.7.3, Kotlin 2.0.21 and Gradle 8.14.3. This RC is for integration evaluation; it is not certification of every manufacturer device.

Use a StreamZet SDK key and your own account. For evaluation, use sz_test_public. The SDK manages endpoints and the public transport key; no separate environment variables or URLs are required. Public APKs already include the evaluation key.

2. Add the Maven dependency

Copy the ZIP’s maven directory to vendor/streamzet-maven in your host project. Paths below are relative to the host project root. Preserve the POM and Gradle module files. Third-party dependencies require access to Google Maven and Maven Central.

kotlin
// settings.gradle.kts — inside dependencyResolutionManagement
repositories {
    google()
    mavenCentral()
    maven { url = uri("vendor/streamzet-maven") }
}

// app/build.gradle.kts
android {
    compileSdk = 35
    defaultConfig { minSdk = 26 }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    kotlinOptions { jvmTarget = "17" }
}
dependencies {
    implementation("com.streamzet:remote-support-android:0.2.0-rc.3")
}

3. Complete minimal Activity

This file includes every import, complete UI and public test connection settings. In an existing app, copy initialization, bind, state rendering and start/stop calls. The test project uses package/namespace com.example.support.

kotlin
package com.example.support

import android.os.Bundle
import android.widget.Button
import android.widget.LinearLayout
import android.widget.TextView
import androidx.activity.ComponentActivity
import com.streamzet.sdk.StreamzetSupport
import com.streamzet.sdk.SupportConfig
import com.streamzet.sdk.SupportLauncher

/** Public evaluation settings. Pair this device with your own StreamZet account. */
class MinimalSupportActivity : ComponentActivity() {
    private lateinit var launcher: SupportLauncher

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val status = TextView(this)
        val code = TextView(this)
        val start = Button(this).apply { text = "Start support" }
        val stop = Button(this).apply { text = "Stop support" }
        setContentView(LinearLayout(this).apply {
            orientation = LinearLayout.VERTICAL
            setPadding(32, 96, 32, 32)
            addView(status)
            addView(code)
            addView(start)
            addView(stop)
        })
        val support = StreamzetSupport.getInstance() ?: StreamzetSupport.initialize(
            applicationContext,
            SupportConfig(
                apiKey = "sz_test_public",
                deviceName = "Integration test",
            ),
        )
        launcher = SupportLauncher.bind(this, support) { ui ->
            status.text = ui.message
            code.text = ui.deviceCode.orEmpty()
            start.isEnabled = ui.canStart
            stop.isEnabled = ui.canStop
        }
        start.setOnClickListener { launcher.start() }
        stop.setOnClickListener { launcher.stop() }
    }
}
xml
<!-- app/src/main/AndroidManifest.xml: standalone example Activity -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <application android:theme="@android:style/Theme.Material.Light.NoActionBar">
        <activity android:name=".MinimalSupportActivity" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

4. Permissions and app identification

The AAR merges INTERNET, foreground service/mediaProjection, POST_NOTIFICATIONS and the capture/accessibility services. Inspect Android Studio’s Merged Manifest instead of duplicating them. Each session needs fresh screen-sharing consent; remote input also requires this app’s accessibility permission.

Override the following resource in the host and translate it for your supported languages so the accessibility entry identifies your app. If Android shows restricted settings, follow that device’s approved user/management flow.

xml
<!-- app/src/main/res/values/strings.xml -->
<resources>
    <string name="streamzet_accessibility_label">My Store remote support</string>
</resources>

5. Lifecycle and error handling

  1. Bind once in Activity.onCreate, not in a button handler or onStart. Rebind the same SDK instance when the Activity is recreated after rotation.
  2. Call start/stop from user actions on the main thread. ACCEPTED acknowledges the request; CONNECTED indicates the session. Drive buttons from canStart/canStop and branch on error, stopReason and preparationError enums.
  3. Do not call SDK stop/close in the business screen’s onStop/onDestroy. Navigation does not end support. Provide an explicit stop button to end capture and input.
  4. Display ui.message, but never compare translated text for program logic. Existing ViewBinding, Compose or Fragment UI can call the launcher owned by the host Activity.

6. Before releasing the host app

Test sharing, input, stop and reconnect in your signed minified release, beyond a debug build. Updates preserving applicationId, signing identity and app data preserve registration. Clearing data, uninstalling or changing backend may require registration again. The SDK does not update the host APK.