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
David Liu
2021-11-29 16:34:03 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
6145daa80d8779601c03e8b42ec6e6bbc0e11aa5
6145daa8
1 parent
df6fb617
comments for compose sample app
显示空白字符变更
内嵌
并排对比
正在显示
3 个修改的文件
包含
20 行增加
和
0 行删除
sample-app-compose/src/main/java/io/livekit/android/composesample/CallActivity.kt
sample-app-compose/src/main/java/io/livekit/android/composesample/ParticipantItem.kt
sample-app-compose/src/main/java/io/livekit/android/composesample/VideoItem.kt
sample-app-compose/src/main/java/io/livekit/android/composesample/CallActivity.kt
查看文件 @
6145daa
...
...
@@ -62,6 +62,7 @@ class CallActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Obtain audio focus.
val audioManager = getSystemService(AUDIO_SERVICE) as AudioManager
with(audioManager) {
previousSpeakerphoneOn = isSpeakerphoneOn
...
...
@@ -81,6 +82,7 @@ class CallActivity : AppCompatActivity() {
Timber.v { "Audio focus request failed" }
}
// Setup compose view.
setContent {
val room by viewModel.room.collectAsState()
val participants by viewModel.participants.collectAsState(initial = emptyList())
...
...
@@ -134,6 +136,7 @@ class CallActivity : AppCompatActivity() {
) {
val (speakerView, audienceRow, buttonBar) = createRefs()
// Primary speaker view
Surface(modifier = Modifier.constrainAs(speakerView) {
top.linkTo(parent.top)
start.linkTo(parent.start)
...
...
@@ -150,6 +153,8 @@ class CallActivity : AppCompatActivity() {
)
}
}
// Audience row to display all participants.
LazyRow(
modifier = Modifier
.constrainAs(audienceRow) {
...
...
@@ -178,6 +183,7 @@ class CallActivity : AppCompatActivity() {
}
}
// Control bar for any switches such as mic/camera enable/disable.
Row(
modifier = Modifier
.padding(top = 10.dp, bottom = 20.dp)
...
...
@@ -272,6 +278,7 @@ class CallActivity : AppCompatActivity() {
override fun onDestroy() {
super.onDestroy()
// release audio focus and revert audio settings.
val audioManager = getSystemService(AUDIO_SERVICE) as AudioManager
with(audioManager) {
isSpeakerphoneOn = previousSpeakerphoneOn
...
...
sample-app-compose/src/main/java/io/livekit/android/composesample/ParticipantItem.kt
查看文件 @
6145daa
...
...
@@ -23,6 +23,9 @@ import io.livekit.android.room.track.Track
import io.livekit.android.room.track.VideoTrack
import io.livekit.android.util.flow
/**
* Widget for displaying a participant.
*/
@Composable
fun ParticipantItem(
room: Room,
...
...
sample-app-compose/src/main/java/io/livekit/android/composesample/VideoItem.kt
查看文件 @
6145daa
...
...
@@ -14,6 +14,10 @@ import io.livekit.android.room.track.TrackPublication
import io.livekit.android.room.track.VideoTrack
import io.livekit.android.room.track.video.ComposeVisibility
/**
* Widget for displaying a VideoTrack. Handles the Compose <-> AndroidView interop needed to use
* [TextureViewRenderer].
*/
@Composable
fun VideoItem(
room: Room,
...
...
@@ -23,6 +27,7 @@ fun VideoItem(
val videoSinkVisibility = remember(room, videoTrack) { ComposeVisibility() }
var boundVideoTrack by remember { mutableStateOf<VideoTrack?>(null) }
var view: TextureViewRenderer? by remember { mutableStateOf(null) }
fun cleanupVideoTrack() {
view?.let { boundVideoTrack?.removeRenderer(it) }
boundVideoTrack = null
...
...
@@ -42,12 +47,14 @@ fun VideoItem(
videoTrack.addRenderer(view)
}
}
DisposableEffect(room, videoTrack) {
onDispose {
videoSinkVisibility.onDispose()
cleanupVideoTrack()
}
}
AndroidView(
factory = { context ->
TextureViewRenderer(context).apply {
...
...
@@ -65,6 +72,9 @@ fun VideoItem(
)
}
/**
* This widget primarily serves as a way to observe changes in [videoTracks].
*/
@Composable
fun VideoItemTrackSelector(
room: Room,
...
...
请
注册
或
登录
后发表评论