Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
xuning
/
livekitAndroidXuningTest
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
davidliu
2022-01-30 22:02:32 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
1e0b2171a5abe1cb8c9e0214302daf9413614ed2
1e0b2171
1 parent
66200b20
mute indicators for sample app
显示空白字符变更
内嵌
并排对比
正在显示
3 个修改的文件
包含
44 行增加
和
6 行删除
livekit-android-sdk/src/main/java/io/livekit/android/room/track/RemoteTrackPublication.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/track/TrackPublication.kt
sample-app/src/main/java/io/livekit/android/sample/ParticipantItem.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/track/RemoteTrackPublication.kt
查看文件 @
1e0b217
...
...
@@ -79,12 +79,13 @@ class RemoteTrackPublication(
}
}
override var muted: Boolean = false
override var muted: Boolean
get() = super.muted
set(v) {
if (
fiel
d == v) {
if (
super.mute
d == v) {
return
}
fiel
d = v
super.mute
d = v
val participant = this.participant.get() as? RemoteParticipant ?: return
if (v) {
participant.onTrackMuted(this)
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/track/TrackPublication.kt
查看文件 @
1e0b217
...
...
@@ -21,7 +21,9 @@ open class TrackPublication(
private set
var kind: Track.Kind
private set
open var muted: Boolean = false
@get:FlowObservable
open var muted: Boolean by flowDelegate(false)
internal set
open val subscribed: Boolean
get() {
...
...
sample-app/src/main/java/io/livekit/android/sample/ParticipantItem.kt
查看文件 @
1e0b217
...
...
@@ -8,8 +8,14 @@ import io.livekit.android.room.Room
import io.livekit.android.room.participant.Participant
import io.livekit.android.room.participant.ParticipantListener
import io.livekit.android.room.participant.RemoteParticipant
import io.livekit.android.room.track.*
import io.livekit.android.room.track.RemoteTrackPublication
import io.livekit.android.room.track.Track
import io.livekit.android.room.track.VideoTrack
import io.livekit.android.sample.databinding.ParticipantItemBinding
import io.livekit.android.util.flow
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf
class ParticipantItem(
val room: Room,
...
...
@@ -17,6 +23,7 @@ class ParticipantItem(
) : BindableItem<ParticipantItemBinding>() {
private var boundVideoTrack: VideoTrack? = null
private var coroutineScope: CoroutineScope? = null
override fun initializeViewBinding(view: View): ParticipantItemBinding {
val binding = ParticipantItemBinding.bind(view)
...
...
@@ -24,8 +31,34 @@ class ParticipantItem(
return binding
}
private fun ensureCoroutineScope() {
if (coroutineScope == null) {
coroutineScope = CoroutineScope(SupervisorJob() + Dispatchers.Main)
}
}
override fun bind(viewBinding: ParticipantItemBinding, position: Int) {
viewBinding.identityText.text = participant.identity
ensureCoroutineScope()
coroutineScope?.launch {
participant::identity.flow.collect { identity ->
viewBinding.identityText.text = identity
}
}
coroutineScope?.launch {
participant::audioTracks.flow
.flatMapLatest { tracks ->
val audioTrack = tracks.values.firstOrNull()
if (audioTrack != null) {
audioTrack::muted.flow
} else {
flowOf(true)
}
}
.collect { muted ->
viewBinding.muteIndicator.visibility = if (muted) View.VISIBLE else View.INVISIBLE
}
}
participant.listener = object : ParticipantListener {
override fun onTrackSubscribed(
track: Track,
...
...
@@ -67,6 +100,8 @@ class ParticipantItem(
}
override fun unbind(viewHolder: GroupieViewHolder<ParticipantItemBinding>) {
coroutineScope?.cancel()
coroutineScope = null
super.unbind(viewHolder)
boundVideoTrack?.removeRenderer(viewHolder.binding.renderer)
boundVideoTrack = null
...
...
请
注册
或
登录
后发表评论