Update Android tutorial to use ViewBinding

This commit is contained in:
juancarmore 2024-07-22 12:58:26 +02:00
parent 824eca10d2
commit 495f780fa9
4 changed files with 31 additions and 54 deletions

View File

@ -7,6 +7,7 @@
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
/.idea/deploymentTargetSelector.xml
.DS_Store
/build
/captures

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetSelector">
<selectionStates>
<SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" />
<DropdownSelection timestamp="2024-07-11T11:01:29.457817100Z">
<Target type="DEFAULT_BOOT">
<handle>
<DeviceId pluginId="LocalEmulator" identifier="path=C:\Users\usuario\.android\avd\Pixel_4_API_30.avd" />
</handle>
</Target>
</DropdownSelection>
<DialogSelection />
</SelectionState>
</selectionStates>
</component>
</project>

View File

@ -3,45 +3,38 @@ package io.openvidu.android
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.widget.Button
import android.widget.EditText
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.floatingactionbutton.FloatingActionButton
import io.openvidu.android.databinding.ActivityMainBinding
import io.openvidu.android.databinding.DialogSettingsBinding
class MainActivity : AppCompatActivity() {
private lateinit var participantField: EditText
private lateinit var roomField: EditText
private lateinit var joinButton: Button
private lateinit var binding: ActivityMainBinding
private var applicationServerUrl = "https://192-168-1-136.openvidu-local.dev:6443/"
private var livekitUrl = "wss://192-168-1-136.openvidu-local.dev:7443/"
private var applicationServerUrl = "https://{YOUR-LAN-IP}.openvidu-local.dev:6443/"
private var livekitUrl = "wss://{YOUR-LAN-IP}.openvidu-local.dev:7443/"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
participantField = findViewById(R.id.participantName)
roomField = findViewById(R.id.roomName)
joinButton = findViewById(R.id.joinButton)
val settingsButton = findViewById<FloatingActionButton>(R.id.settingsButton)
binding.participantName.setText("Participant %d".format((1..100).random()))
participantField.setText("Participant %d".format((1..100).random()))
joinButton.setOnClickListener {
binding.joinButton.setOnClickListener {
navigateToRoomLayoutActivity()
}
settingsButton.setOnClickListener {
binding.settingsButton.setOnClickListener {
showSettingsDialog()
}
}
private fun navigateToRoomLayoutActivity() {
joinButton.isEnabled = false
binding.joinButton.isEnabled = false
val participantName = participantField.text.toString()
val roomName = roomField.text.toString()
val participantName = binding.participantName.text.toString()
val roomName = binding.roomName.text.toString()
if (participantName.isNotEmpty() && roomName.isNotEmpty()) {
val intent = Intent(this, RoomLayoutActivity::class.java)
@ -52,23 +45,21 @@ class MainActivity : AppCompatActivity() {
startActivity(intent)
}
joinButton.isEnabled = true
binding.joinButton.isEnabled = true
}
private fun showSettingsDialog() {
val dialogView = LayoutInflater.from(this).inflate(R.layout.dialog_settings, null)
val serverUrl = dialogView.findViewById<EditText>(R.id.serverUrl)
val liveKitUrl = dialogView.findViewById<EditText>(R.id.livekitUrl)
val dialogBinding = DialogSettingsBinding.inflate(LayoutInflater.from(this))
serverUrl.setText(applicationServerUrl)
liveKitUrl.setText(livekitUrl)
dialogBinding.serverUrl.setText(applicationServerUrl)
dialogBinding.livekitUrl.setText(livekitUrl)
val builder = AlertDialog.Builder(this)
builder.setTitle("Configure URLs")
.setView(dialogView)
.setView(dialogBinding.root)
.setPositiveButton("Save") { dialog, _ ->
applicationServerUrl = serverUrl.text.toString()
livekitUrl = liveKitUrl.text.toString()
applicationServerUrl = dialogBinding.serverUrl.text.toString()
livekitUrl = dialogBinding.livekitUrl.text.toString()
dialog.dismiss()
}
.setNegativeButton("Cancel") { dialog, _ ->

View File

@ -22,12 +22,14 @@ import io.livekit.android.LiveKit
import io.livekit.android.events.RoomEvent
import io.livekit.android.events.collect
import io.livekit.android.room.Room
import io.livekit.android.renderer.SurfaceViewRenderer
import io.livekit.android.room.track.VideoTrack
import io.openvidu.android.databinding.ActivityRoomLayoutBinding
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable
class RoomLayoutActivity : AppCompatActivity() {
private lateinit var binding: ActivityRoomLayoutBinding
private lateinit var APPLICATION_SERVER_URL: String
private lateinit var LIVEKIT_URL: String
@ -42,7 +44,8 @@ class RoomLayoutActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_room_layout)
binding = ActivityRoomLayoutBinding.inflate(layoutInflater)
setContentView(binding.root)
APPLICATION_SERVER_URL = intent.getStringExtra("serverUrl") ?: ""
LIVEKIT_URL = intent.getStringExtra("livekitUrl") ?: ""
@ -51,7 +54,7 @@ class RoomLayoutActivity : AppCompatActivity() {
room = LiveKit.create(applicationContext)
// Setup the video renderer
room.initVideoRenderer(findViewById<SurfaceViewRenderer>(R.id.renderer))
room.initVideoRenderer(binding.renderer)
requestNeededPermissions { connectToRoom() }
}
@ -101,8 +104,8 @@ class RoomLayoutActivity : AppCompatActivity() {
}
private fun attachVideo(videoTrack: VideoTrack) {
videoTrack.addRenderer(findViewById<SurfaceViewRenderer>(R.id.renderer))
findViewById<View>(R.id.progress).visibility = View.GONE
videoTrack.addRenderer(binding.renderer)
binding.progress.visibility = View.GONE
}
private fun onTrackUnsubscribed(event: RoomEvent.TrackUnsubscribed) {
@ -114,8 +117,8 @@ class RoomLayoutActivity : AppCompatActivity() {
}
private fun detachVideo(videoTrack: VideoTrack) {
videoTrack.removeRenderer(findViewById<SurfaceViewRenderer>(R.id.renderer))
findViewById<View>(R.id.progress).visibility = View.VISIBLE
videoTrack.removeRenderer(binding.renderer)
binding.progress.visibility = View.VISIBLE
}
private fun leaveRoom() {