David Liu

minor sample app improvements

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M12,2C6.47,2 2,6.47 2,12s4.47,10 10,10 10,-4.47 10,-10S17.53,2 12,2zM17,15.59L15.59,17 12,13.41 8.41,17 7,15.59 10.59,12 7,8.41 8.41,7 12,10.59 15.59,7 17,8.41 13.41,12 17,15.59z"/>
</vector>
... ...
... ... @@ -12,6 +12,7 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.material.*
import androidx.compose.material.ripple.rememberRipple
import androidx.compose.runtime.*
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.ui.Alignment
... ... @@ -98,6 +99,7 @@ class CallActivity : AppCompatActivity() {
videoEnabled,
flipButtonEnabled,
screencastEnabled,
onExitClick = { finish() }
)
}
}
... ... @@ -122,6 +124,7 @@ class CallActivity : AppCompatActivity() {
videoEnabled: Boolean = true,
flipButtonEnabled: Boolean = true,
screencastEnabled: Boolean = false,
onExitClick: () -> Unit = {},
) {
AppTheme(darkTheme = true) {
ConstraintLayout(
... ... @@ -187,8 +190,13 @@ class CallActivity : AppCompatActivity() {
horizontalArrangement = Arrangement.SpaceEvenly,
verticalAlignment = Alignment.Bottom,
) {
val controlSize = 40.dp
val controlPadding = 4.dp
Surface(
onClick = { viewModel.setMicEnabled(!micEnabled) },
indication = rememberRipple(false),
modifier = Modifier.size(controlSize)
.padding(controlPadding)
) {
val resource =
if (micEnabled) R.drawable.outline_mic_24 else R.drawable.outline_mic_off_24
... ... @@ -200,6 +208,9 @@ class CallActivity : AppCompatActivity() {
}
Surface(
onClick = { viewModel.setCameraEnabled(!videoEnabled) },
indication = rememberRipple(false),
modifier = Modifier.size(controlSize)
.padding(controlPadding)
) {
val resource =
if (videoEnabled) R.drawable.outline_videocam_24 else R.drawable.outline_videocam_off_24
... ... @@ -211,6 +222,9 @@ class CallActivity : AppCompatActivity() {
}
Surface(
onClick = { viewModel.flipCamera() },
indication = rememberRipple(false),
modifier = Modifier.size(controlSize)
.padding(controlPadding)
) {
Icon(
painterResource(id = R.drawable.outline_flip_camera_android_24),
... ... @@ -226,6 +240,9 @@ class CallActivity : AppCompatActivity() {
viewModel.stopScreenCapture()
}
},
indication = rememberRipple(false),
modifier = Modifier.size(controlSize)
.padding(controlPadding)
) {
val resource =
if (screencastEnabled) R.drawable.baseline_cast_connected_24 else R.drawable.baseline_cast_24
... ... @@ -235,6 +252,18 @@ class CallActivity : AppCompatActivity() {
tint = Color.White,
)
}
Surface(
onClick = { onExitClick() },
indication = rememberRipple(false),
modifier = Modifier.size(controlSize)
.padding(controlPadding)
) {
Icon(
painterResource(id = R.drawable.ic_baseline_cancel_24),
contentDescription = "Flip Camera",
tint = Color.White,
)
}
}
}
}
... ...
... ... @@ -151,6 +151,8 @@ class CallActivity : AppCompatActivity() {
)
}
binding.exit.setOnClickListener { finish() }
// Grab audio focus for video call
val audioManager = getSystemService(AUDIO_SERVICE) as AudioManager
with(audioManager) {
... ...
... ... @@ -103,5 +103,13 @@
android:background="?android:attr/selectableItemBackground"
android:padding="@dimen/control_padding"
android:src="@drawable/baseline_cast_24" />
<ImageView
android:id="@+id/exit"
android:layout_width="@dimen/control_size"
android:layout_height="@dimen/control_size"
android:background="?android:attr/selectableItemBackground"
android:padding="@dimen/control_padding"
android:src="@drawable/ic_baseline_cancel_24" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
... ...