Android
Overview
Complete Android integration guide
Android SDK Architecture
Module: android-sdk/sdk/. Package root: com.kycis.sdk.
Public Surface (AI.kt)
AI.init(apiKey, userId, policy = RuntimePolicy())— Generates a UUIDsession_idper process init, buildsRuntimeContext, wiresHttpBackendClientwithpolicy.backendBaseUrland optionalpolicy.clientId/policy.mappingVersion.AI.setUser(id, phone?)— Delegates to runtime / backendsetUserpath.- **
AI.setKycStep(step)``** — Updates runtime hint; skipped whenKycStepStrategy.INFER_ONLY`. AI.trackError(code, properties)— Postserror_reportedwith optional JSON-serializableproperties; may invoke trigger evaluation whenautoTriggerEnabled.AI.trackValidationFailure(...)— Postsvalidation_failedwith optional component metadata; may invoke trigger evaluation the same way astrackError.AI.attach(application)— RegistersLifecycleTrackeronce (idempotent guard).AI.setStatusListener,AI.setVoiceSessionListener— Callbacks for status andVoiceSessionResultafter successfulsession/start.AI.startAssistant()— Manual start (SdkInvokeSource.MANUAL_START_ASSISTANT).AI.traceHeadersForRequest(invokeSource)— Header map for host-initiated HTTP to correlate with SDK.AI.onRequestPermissionsResult(...)— Forwards toSdkRuntime.handlePermissionResultwhen host uses non-FragmentActivity permission path.
Module Layout
com.kycis.sdk— publicAI,InvokeSources,VoiceSessionResultcom.kycis.sdk.core— runtime, HTTP, lifecycle, permissions, status, trace propagationcom.kycis.sdk.voice— LiveKit connector, FAB, overlays
Integration Tiers
| Tier | What to implement | What you get |
|---|---|---|
| Tier 0 — Required | AI.init(Application, …), AI.attach(), AI.setKycStep() | Voice agent aware of current screen; trigger evaluation runs; resource defaults load |
| Tier 1 — Recommended | AI.registerScreenSchema + AI.trackValidationFailure(...) | Backend receives screen_schema events; validation events carry structured metadata |
| Tier 2 — Optional | AI.reportComponentInput(), clientId / mappingVersion, AI.traceHeadersForRequest(), AI.getConfig() | Redacted value hints; multi-tenant routing; log correlation; read merged config |
Most teams should do Tier 0 + Tier 1.
Configuration
RuntimePolicy Defaults
triggerStartMode:CONFIRM_UIbackendBaseUrl:http://localhost:8000/v1- Optional
clientId/mappingVersion: sent on all SDK HTTP bodies for backend screen→business mapping passiveEvalEnabled: true, interval 10 secondsTriggerSettings:autoTriggerEnabledtrue; time spent and idle signals false by default
SDK XML Config
Located in android-sdk/sdk/src/main/res/values/kycis_config.xml:
kycis_lazy_schema_push_default— push schemas on navigationkycis_config_refresh_interval_seconds— remote config refresh intervalkycis_component_input_hints_masked_default— whether hints are masked
Next Steps
Continue through this section:
- Native Setup — initialize SDK in Application
- Platform Config — XML defaults and backend policy
- Runtime Config — dynamic config refresh behavior
- Triggers and Lifecycle — passive evaluation and session flow