使用此 SDK 为你的 Android/Kotlin 应用添加实时视频、音频和数据功能。通过连接到 LiveKit Cloud 或自托管服务器,只需几行代码即可构建多模态 AI、直播或视频通话等应用。
文档和指南请访问 https://docs.livekit.io。
API 参考文档请访问 https://docs.livekit.io/client-sdk-android/index.html。
Note
这是 Android SDK 的 v2 版本。从 v1.x 迁移到 v2.x 时可能会遇到少量破坏性变更。 请阅读迁移指南了解变更的详细概述。
LiveKit for Android 以 Maven 包的形式发布。
...
dependencies {
def livekit_version = "2.25.3"
implementation "io.livekit:livekit-android:$livekit_version"
// CameraX 支持,含捏合缩放、闪光灯控制等
implementation "io.livekit:livekit-android-camerax:$livekit_version"
// 轨道处理器,如虚拟背景
implementation "io.livekit:livekit-android-track-processors:$livekit_version"
// 最新开发版本的快照:
// implementation "io.livekit:livekit-android:2.25.4-SNAPSHOT"
}基于 Compose 的应用请查看 Android Components SDK 获取 Compose 组件支持。
此外还需要 JitPack 作为仓库之一。在 settings.gradle 中:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
//...
maven { url 'https://jitpack.io' }
// 如需 SNAPSHOT 版本访问
// maven { url 'https://central.sonatype.com/repository/maven-snapshots/' }
}
}LiveKit 依赖 RECORD_AUDIO 和 CAMERA 权限来使用麦克风和摄像头。这些权限必须在运行时请求。参考示例应用了解示例。
room.localParticipant.setCameraEnabled(true)
room.localParticipant.setMicrophoneEnabled(true)// 创建一个用于屏幕采集的 intent launcher
// 必须在 onCreate() 之前注册,最好作为实例属性
val screenCaptureIntentLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
val resultCode = result.resultCode
val data = result.data
if (resultCode != Activity.RESULT_OK || data == null) {
return@registerForActivityResult
}
lifecycleScope.launch {
room.localParticipant.setScreenShareEnabled(true, data)
}
}
// 需要开启屏幕共享时,执行以下操作
val mediaProjectionManager =
getSystemService(MEDIA_PROJECTION_SERVICE) as MediaProjectionManager
screenCaptureIntentLauncher.launch(mediaProjectionManager.createScreenCaptureIntent())LiveKit 使用 SurfaceViewRenderer 来渲染视频轨道。同时也通过 TextureViewRenderer 提供了 TextureView 实现。订阅的音频轨道会自动播放。
class MainActivity : AppCompatActivity() {
lateinit var room: Room
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 创建 Room 对象。
room = LiveKit.create(applicationContext)
// 设置视频渲染器
room.initVideoRenderer(findViewById<SurfaceViewRenderer>(R.id.renderer))
connectToRoom()
}
private fun connectToRoom() {
val url = "wss://your_host"
val token = "your_token"
lifecycleScope.launch {
// 设置事件处理。
launch {
room.events.collect { event ->
when (event) {
is RoomEvent.TrackSubscribed -> onTrackSubscribed(event)
else -> {}
}
}
}
// 连接到服务器。
room.connect(
url,
token,
)
// 打开音频/视频录制。
val localParticipant = room.localParticipant
localParticipant.setMicrophoneEnabled(true)
localParticipant.setCameraEnabled(true)
}
}
private fun onTrackSubscribed(event: RoomEvent.TrackSubscribed) {
val track = event.track
if (track is VideoTrack) {
attachVideo(track)
}
}
private fun attachVideo(videoTrack: VideoTrack) {
videoTrack.addRenderer(findViewById<SurfaceViewRenderer>(R.id.renderer))
findViewById<View>(R.id.progress).visibility = View.GONE
}
}完整实现请参阅基础示例应用。
默认情况下,音频配置为双向通话模式。
如果你正在构建直播或媒体播放为主的应用,可以在创建 Room 对象时使用 MediaAudioType 预设以获得更好的音频质量。
val room = LiveKit.create(
appContext = application,
overrides = LiveKitOverrides(
audioOptions = AudioOptions(
audioOutputType = AudioType.MediaAudioType()
)
)
)注意:音频路由将由系统自动处理,无法手动控制。
如需更精细地控制音频属性和模式,可以传入 CustomAudioType。
标注 @FlowObservable 的属性可以作为 Kotlin Flow 来观察变更:
coroutineScope.launch {
room::activeSpeakers.flow.collectLatest { speakersList ->
/*...*/
}
}注意:如果想直接从本仓库运行示例应用,请参考开发环境说明。
我们有一个基础快速入门示例应用(链接),展示了如何连接到房间、发布设备音频/视频以及显示一个远程参与者的视频。
还有两个功能更完善的视频会议示例应用:
两者都使用 CallViewModel,它负责管理 Room 连接并暴露基础视频会议应用所需的数据。
每个应用中对应的 ParticipantItem ��负责各个参与者 UI 的展示:
要开发 Android SDK 或直接从本仓库运行示例应用,你需要:
- 克隆仓库到本地
- 确保 protocol 子模块仓库已初始化并更新
git clone https://github.com/livekit/client-sdk-android.git
cd client-sdk-android
git submodule update --init
如果你在 Apple Silicon Mac(如 M1、M2 等)上进行开发,请在 $HOME/.gradle/gradle.properties 中添加以下内容:
protoc_platform=osx-x86_64
- 从 https://webrtc.googlesource.com/src 下载 WebRTC 源码
- 在 Android Studio 中通过指向
webrtc/sdk/android文件夹添加源码。
| LiveKit 生态系统 | |
|---|---|
| Agents SDK | Python · Node.js |
| LiveKit SDK | 浏览器 · Swift · Android · Flutter · React Native · Rust · Node.js · Python · Unity · Unity (WebGL) · ESP32 · C++ |
| 入门应用 | Python Agent · TypeScript Agent · React App · SwiftUI App · Android App · Flutter App · React Native App · Web Embed |
| UI 组件 | React · Android Compose · SwiftUI · Flutter |
| 服务端 API | Node.js · Golang · Ruby · Java/Kotlin · Python · Rust · PHP (社区) · .NET (社区) |
| 资源 | 文档 · Docs MCP Server · CLI · LiveKit Cloud |
| LiveKit Server 开源 | LiveKit server · Egress · Ingress · SIP |
| 社区 | 开发者社区 · Slack · X · YouTube |