Kotlin

Anpassen der Benutzeroberfläche der Beispielanwendung

Das Android SDK stellt die Videostreams (sowohl veröffentlichte als auch abonnierte) als View Objekte. Sie können diese Ansichten mit jeder zusammensetzbaren Ansicht in Ihrem Layout verbinden.

  1. Erstellen einer zusammensetzbaren Ansicht

Unter Android-Studio:

  • Eine neue Datei erstellen VideoChatScreen.kt
  • Füllen Sie den Inhalt der Datei mit:
@Composable
fun VideoChatScreen(
    publisherView: View?,
    subscriberView: View?
) {
    Box(modifier = Modifier.fillMaxSize()) {

        // Subscriber full-screen
        subscriberView?.let { view ->
            AndroidView(
                factory = { view },
                modifier = Modifier
                    .fillMaxSize()
            )
        }?: run {
            Text(
                "Connect another subscriber to this session to see his/hers video",
                modifier = Modifier
                .fillMaxSize()
                    .padding(vertical =
                    150.dp)
            )
        }


        publisherView?.let { view ->
            // Publisher picture-in-picture
            AndroidView(
                factory = { view },
                modifier = Modifier
                    .size(width = 90.dp, height = 120.dp)
                    .align(Alignment.BottomEnd)
                    .padding(16.dp)
                    .background(Color.LightGray)
            )
        }
    }
}
  1. Erklären Sie jetzt publisherView und subscriberView als Eigenschaften der Klasse MainActivity (direkt nach der Deklaration für die session Eigenschaft):
private var publisherView by mutableStateOf<View?>(null)
private var subscriberView by mutableStateOf<View?>(null)
  1. Schließlich ist in der bestehenden onCreate() Methode, initialisieren Sie die VideoChatScreen durch Hinzufügen der Ansicht über die setContent() Methodenaufruf:
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enableEdgeToEdge()

    setContent {
        VideoChatScreen(
            publisherView = publisherView,
            subscriberView = subscriberView
        )
    }

    requestPermissions()
}