Inference time should be displayed only on camera screen

This commit is contained in:
Pierre-Yves Nicolas
2025-06-01 07:43:15 +02:00
parent 734197f6e1
commit 77427c2695
2 changed files with 16 additions and 28 deletions

View File

@@ -10,19 +10,14 @@ import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.content.FileProvider import androidx.core.content.FileProvider
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import org.mydomain.myscan.ui.theme.MyScanTheme import org.mydomain.myscan.ui.theme.MyScanTheme
@@ -46,7 +41,6 @@ class MainActivity : ComponentActivity() {
Scaffold { innerPadding -> Scaffold { innerPadding ->
Column { Column {
Greeting(modifier = Modifier.padding(innerPadding)) Greeting(modifier = Modifier.padding(innerPadding))
MyMessageBox(cameraScreenState.detectionMessage, cameraScreenState.inferenceTime)
when (val screen = currentScreen) { when (val screen = currentScreen) {
is Screen.Camera -> { is Screen.Camera -> {
CameraScreen(viewModel, cameraScreenState, CameraScreen(viewModel, cameraScreenState,
@@ -97,18 +91,6 @@ class MainActivity : ComponentActivity() {
} }
} }
@Composable
fun MyMessageBox(msg: String?, inferenceTime: Long) {
Text(
text = (msg ?: "") + " / inferred in " + inferenceTime + "ms",
modifier = Modifier
.padding(16.dp)
.background(Color.Gray)
.fillMaxWidth(),
color = Color.Black,
)
}
@Composable @Composable
fun Greeting(modifier: Modifier = Modifier) { fun Greeting(modifier: Modifier = Modifier) {
Text( Text(
@@ -116,11 +98,3 @@ fun Greeting(modifier: Modifier = Modifier) {
modifier = modifier modifier = modifier
) )
} }
@Preview(showBackground = true)
@Composable
fun MyMessageBoxPreview() {
MyScanTheme {
MyMessageBox("Found 2 objects!", 42)
}
}

View File

@@ -22,7 +22,9 @@ import androidx.compose.foundation.Canvas
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -49,9 +51,9 @@ import androidx.core.graphics.scale
import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.LocalLifecycleOwner
import com.google.common.util.concurrent.ListenableFuture import com.google.common.util.concurrent.ListenableFuture
import org.mydomain.myscan.CameraScreenState
import org.mydomain.myscan.MainViewModel import org.mydomain.myscan.MainViewModel
import org.mydomain.myscan.Point import org.mydomain.myscan.Point
import org.mydomain.myscan.CameraScreenState
import org.mydomain.myscan.scaledTo import org.mydomain.myscan.scaledTo
import java.util.concurrent.ExecutorService import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors import java.util.concurrent.Executors
@@ -94,6 +96,7 @@ fun CameraScreen(
captureController = captureController) captureController = captureController)
AnalysisOverlay(uiState) AnalysisOverlay(uiState)
} }
MessageBox(uiState.inferenceTime)
Button( Button(
onClick = { onClick = {
captureController.takePicture( captureController.takePicture(
@@ -248,4 +251,15 @@ class CameraCaptureController {
} }
) )
} }
} }
@Composable
fun MessageBox(inferenceTime: Long) {
Text(
text = if(inferenceTime == 0L) "" else "Segmentation time: $inferenceTime ms",
modifier = Modifier
.padding(16.dp)
.fillMaxWidth(),
color = Color.Gray,
)
}