본문으로 건너뛰기
sstreamzet/docs
Android SDK 0.2.0-rc.2콘솔 열기
개발자 문서 / Android SDK
API와 연동 가이드 · 수정 2026-09-22

Android API 명세

공개 설정과 메서드 계약 전체입니다. Kotlin 식별자는 문서 언어와 무관하게 동일합니다.

SupportConfig

필드 / API형식 / 기본값계약
supabaseUrlString · requiredHTTPS origin. 포트·끝 / 허용. 사용자 정보·하위 경로·쿼리·fragment 금지.
publishableKeyString · required공백이 아닌 public/anon 키. 운영자 또는 service-role 자격 증명이 아닙니다.
signalingUrlString · requiredsupabaseUrl과 같은 제한을 따르는 WSS origin.
deviceNameString · required공백 불가, Kotlin UTF-16 코드 유닛 128개 이하(String.length). 바이트 기준이 아닙니다.
sessionTimeoutSecondsInt · 0초 단위. 0은 시간 제한 없음, 그 외 60~14400 포함. 사용자·운영자·OS 종료는 계속 적용됩니다.
connectionTimeoutSecondsInt · 120초 단위, 15~300 포함. 연결 협상 재시도 watchdog이며 공유 동의를 종료하지 않습니다.
framesPerSecondInt · 30요청 캡처 속도, 1~30 포함. 실제 FPS는 부하·통신에 따라 달라집니다.
maxVideoDimensionInt · 1600인코딩 영상의 긴 변 픽셀 수. 0은 원본 해상도, 그 외 640~3840 포함. 비율 유지.
registrationKeyString? · null선택적 테넌트 등록 키. sz_live_ 접두사, 길이 128 이하. 등록에만 사용. null이면 기기 코드 연결.

설정은 불변입니다. 잘못된 필드는 생성 시 예외를 발생시킵니다(IllegalArgumentException, URI 구문 오류는 URISyntaxException 가능). 생성자는 통신하지 않으며 toString은 키를 숨깁니다.

SupportLauncher · 권장 흐름

필드 / API형식 / 기본값계약
bind(activity, support, listener)→ SupportLauncheractivity: STARTED 이전 ComponentActivity. support: 초기화된 프로세스 인스턴스. listener: 메인 스레드 SupportUiListener. Activity당 한 번, 회전 시 support 재사용. 잘못된 생명주기·중복 bind는 IllegalStateException.
stateSupportUiState렌더링용 스냅샷. 모든 필드는 상태 명세에 설명합니다.
start()→ SupportStartResult메인 스레드, RESUMED Activity의 사용자 동작에서 호출. ACCEPTED는 준비 접수이며 등록·권한·접속 성공을 보장하지 않습니다.
stop()→ Unit메인 스레드. 준비 취소 또는 지원 종료. 반복 호출 가능. Activity 파괴만으로는 코디네이터만 분리합니다.

StreamzetSupport · 수명주기와 수동 흐름

필드 / API형식 / 기본값계약
initialize(context, config)→ StreamzetSupportcontext: Android Context, applicationContext로 보관. config: SupportConfig. 메인 스레드·프로세스당 한 번. 중복 초기화는 IllegalStateException.
getInstance()→ StreamzetSupport?기존 인스턴스. 초기화 전·close 후 null. 자동 초기화하지 않습니다.
register()suspend → Result<DeviceRegistration>모든 dispatcher. 동시 호출은 요청 공유. 지원 중에는 실패 Result. 통신·인증 오류는 정제된 실패와 ERROR/REGISTRATION_FAILED. 닫힌 SDK는 예외, 코루틴 취소는 전파. 등록만으로 화면공유·온라인 보고하지 않습니다.
stateStateFlow<SupportState>읽기 전용 최신 상태. 호스트 생명주기에 맞춰 수집.
isControlAvailableBoolean현재 접근성 입력 서비스 사용 가능 여부. true여도 운영자 연결이나 모든 위젯 조작을 보장하지 않습니다.
createScreenCaptureIntent()→ Intent수동 흐름 전용. 등록 후 표시된 화면의 사용자 요청·메인 스레드·지원 비활성 상태에서 호출. AWAITING_CONSENT로 전환. Activity Result API로 실행. 미등록·활성·닫힘 상태는 IllegalStateException.
onScreenCaptureResult(activity, resultCode, data)→ Booleanactivity: 살아 있는 Activity. resultCode: 시스템 Int. data: Intent?. 대기 결과 1회 소비. 거부·null·오래되거나 중복된 결과·서비스 시작 실패는 false. true는 서비스 시작 접수이며 연결 상태가 아닙니다. 승인 data는 저장·재사용 금지.
accessibilitySettingsIntent()→ IntentAndroid 접근성 설정 Intent. 호스트 UI에서 실행. 권한을 자동 부여하지 않습니다.
addListener(listener)→ UnitSupportListener에 현재·향후 SupportState를 메인 스레드로 전달. 같은 리스너 중복 제거, 콜백 예외 격리.
removeListener(listener)→ Unit메인 스레드. 화면 파괴 시 같은 리스너 인스턴스를 제거. 미등록 리스너 제거는 무해.
stop()→ Unit메인 스레드. 등록·승인 대기 중에도 반복 호출 가능. 캡처·입력·시그널링 종료. 닫힌 SDK에는 아무 작업 없음.
close()→ Unit메인 스레드. 지원·리스너·통신 자원 해제 후 singleton 초기화. 반복 가능. Activity 회전이 아니라 호스트가 SDK를 더 이상 쓰지 않을 때 호출.

비-suspend 생명주기 메서드는 메인 스레드 API이며 다른 스레드 호출은 IllegalStateException을 발생시킬 수 있습니다. SupportListener.onStateChanged(state: SupportState), SupportUiListener.onStateChanged(state: SupportUiState)는 Unit 반환. RemoteInputService는 Android 바인딩용이며 직접 생성하거나 프레임워크 생명주기를 호출하지 마세요.