Android API 명세
공개 설정과 메서드 계약 전체입니다. Kotlin 식별자는 문서 언어와 무관하게 동일합니다.
SupportConfig
| 필드 / API | 형식 / 기본값 | 계약 |
|---|---|---|
| supabaseUrl | String · required | HTTPS origin. 포트·끝 / 허용. 사용자 정보·하위 경로·쿼리·fragment 금지. |
| publishableKey | String · required | 공백이 아닌 public/anon 키. 운영자 또는 service-role 자격 증명이 아닙니다. |
| signalingUrl | String · required | supabaseUrl과 같은 제한을 따르는 WSS origin. |
| deviceName | String · required | 공백 불가, Kotlin UTF-16 코드 유닛 128개 이하(String.length). 바이트 기준이 아닙니다. |
| sessionTimeoutSeconds | Int · 0 | 초 단위. 0은 시간 제한 없음, 그 외 60~14400 포함. 사용자·운영자·OS 종료는 계속 적용됩니다. |
| connectionTimeoutSeconds | Int · 120 | 초 단위, 15~300 포함. 연결 협상 재시도 watchdog이며 공유 동의를 종료하지 않습니다. |
| framesPerSecond | Int · 30 | 요청 캡처 속도, 1~30 포함. 실제 FPS는 부하·통신에 따라 달라집니다. |
| maxVideoDimension | Int · 1600 | 인코딩 영상의 긴 변 픽셀 수. 0은 원본 해상도, 그 외 640~3840 포함. 비율 유지. |
| registrationKey | String? · null | 선택적 테넌트 등록 키. sz_live_ 접두사, 길이 128 이하. 등록에만 사용. null이면 기기 코드 연결. |
설정은 불변입니다. 잘못된 필드는 생성 시 예외를 발생시킵니다(IllegalArgumentException, URI 구문 오류는 URISyntaxException 가능). 생성자는 통신하지 않으며 toString은 키를 숨깁니다.
SupportLauncher · 권장 흐름
| 필드 / API | 형식 / 기본값 | 계약 |
|---|---|---|
| bind(activity, support, listener) | → SupportLauncher | activity: STARTED 이전 ComponentActivity. support: 초기화된 프로세스 인스턴스. listener: 메인 스레드 SupportUiListener. Activity당 한 번, 회전 시 support 재사용. 잘못된 생명주기·중복 bind는 IllegalStateException. |
| state | SupportUiState | 렌더링용 스냅샷. 모든 필드는 상태 명세에 설명합니다. |
| start() | → SupportStartResult | 메인 스레드, RESUMED Activity의 사용자 동작에서 호출. ACCEPTED는 준비 접수이며 등록·권한·접속 성공을 보장하지 않습니다. |
| stop() | → Unit | 메인 스레드. 준비 취소 또는 지원 종료. 반복 호출 가능. Activity 파괴만으로는 코디네이터만 분리합니다. |
StreamzetSupport · 수명주기와 수동 흐름
| 필드 / API | 형식 / 기본값 | 계약 |
|---|---|---|
| initialize(context, config) | → StreamzetSupport | context: Android Context, applicationContext로 보관. config: SupportConfig. 메인 스레드·프로세스당 한 번. 중복 초기화는 IllegalStateException. |
| getInstance() | → StreamzetSupport? | 기존 인스턴스. 초기화 전·close 후 null. 자동 초기화하지 않습니다. |
| register() | suspend → Result<DeviceRegistration> | 모든 dispatcher. 동시 호출은 요청 공유. 지원 중에는 실패 Result. 통신·인증 오류는 정제된 실패와 ERROR/REGISTRATION_FAILED. 닫힌 SDK는 예외, 코루틴 취소는 전파. 등록만으로 화면공유·온라인 보고하지 않습니다. |
| state | StateFlow<SupportState> | 읽기 전용 최신 상태. 호스트 생명주기에 맞춰 수집. |
| isControlAvailable | Boolean | 현재 접근성 입력 서비스 사용 가능 여부. true여도 운영자 연결이나 모든 위젯 조작을 보장하지 않습니다. |
| createScreenCaptureIntent() | → Intent | 수동 흐름 전용. 등록 후 표시된 화면의 사용자 요청·메인 스레드·지원 비활성 상태에서 호출. AWAITING_CONSENT로 전환. Activity Result API로 실행. 미등록·활성·닫힘 상태는 IllegalStateException. |
| onScreenCaptureResult(activity, resultCode, data) | → Boolean | activity: 살아 있는 Activity. resultCode: 시스템 Int. data: Intent?. 대기 결과 1회 소비. 거부·null·오래되거나 중복된 결과·서비스 시작 실패는 false. true는 서비스 시작 접수이며 연결 상태가 아닙니다. 승인 data는 저장·재사용 금지. |
| accessibilitySettingsIntent() | → Intent | Android 접근성 설정 Intent. 호스트 UI에서 실행. 권한을 자동 부여하지 않습니다. |
| addListener(listener) | → Unit | SupportListener에 현재·향후 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 바인딩용이며 직접 생성하거나 프레임워크 생명주기를 호출하지 마세요.