@@ -35,6 +35,7 @@ import androidx.compose.foundation.layout.height
3535import androidx.compose.foundation.layout.offset
3636import androidx.compose.foundation.layout.padding
3737import androidx.compose.foundation.layout.size
38+ import androidx.compose.foundation.layout.wrapContentSize
3839import androidx.compose.foundation.shape.CircleShape
3940import androidx.compose.material.icons.Icons
4041import androidx.compose.material.icons.automirrored.filled.ArrowBack
@@ -63,6 +64,7 @@ import androidx.compose.ui.unit.round
6364import androidx.lifecycle.LifecycleOwner
6465import androidx.lifecycle.compose.LocalLifecycleOwner
6566import androidx.lifecycle.compose.collectAsStateWithLifecycle
67+ import androidx.lifecycle.viewmodel.compose.viewModel
6668import coil.compose.rememberAsyncImagePainter
6769import com.google.accompanist.permissions.ExperimentalPermissionsApi
6870import com.google.accompanist.permissions.PermissionState
@@ -92,14 +94,14 @@ fun CameraXBasic(modifier: Modifier = Modifier) {
9294 }
9395 }
9496
95- Box (modifier = Modifier .fillMaxSize()) {
97+ Box (modifier = modifier .fillMaxSize()) {
9698 ContentWithPermissionHandling (
9799 cameraPermissionState = cameraPermissionState,
98100 showCapturedImage = showCapturedImage,
99101 onShowCapturedImageChange = { showCapturedImage = it },
100102 viewModel = viewModel,
101103 imageCaptureCallbackExecutor = imageCaptureCallbackExecutor,
102- modifier = modifier ,
104+ modifier = Modifier ,
103105 )
104106 }
105107}
@@ -131,7 +133,7 @@ private fun ContentWithPermissionHandling(
131133 when (cameraPermissionState.status) {
132134 is PermissionStatus .Granted -> {
133135 if (showCapturedImage != null ) {
134- CapturedImageView (uri = showCapturedImage) {
136+ CapturedImageView (uri = showCapturedImage, modifier = modifier ) {
135137 onShowCapturedImageChange(null )
136138 }
137139 } else {
@@ -152,8 +154,9 @@ private fun ContentWithPermissionHandling(
152154 }
153155
154156 is PermissionStatus .Denied -> CameraPermissionDeniedView (
155- cameraPermissionState.status,
156- cameraPermissionState,
157+ status = cameraPermissionState.status,
158+ cameraPermissionState = cameraPermissionState,
159+ modifier = modifier
157160 )
158161 }
159162}
@@ -171,9 +174,10 @@ private fun ContentWithPermissionHandling(
171174private fun CameraPermissionDeniedView (
172175 status : PermissionStatus ,
173176 cameraPermissionState : PermissionState ,
177+ modifier : Modifier = Modifier
174178) {
175179 Column (
176- modifier = Modifier
180+ modifier = modifier
177181 .fillMaxSize()
178182 .padding(16 .dp),
179183 horizontalAlignment = Alignment .CenterHorizontally ,
@@ -232,7 +236,7 @@ private fun CameraPreviewContent(
232236
233237 surfaceRequest?.let { request ->
234238 val coordinateTransformer = remember { MutableCoordinateTransformer () }
235- Box (modifier = Modifier .fillMaxSize()) {
239+ Box (modifier = modifier .fillMaxSize()) {
236240 CameraXViewfinder (
237241 surfaceRequest = request,
238242 coordinateTransformer = coordinateTransformer,
@@ -263,14 +267,13 @@ private fun CameraPreviewContent(
263267 .size(48 .dp),
264268 )
265269 }
266- Column (
267- modifier = Modifier
270+
271+ Button (
272+ onClick = onTakePhotoClick,
273+ modifier
268274 .align(Alignment .BottomCenter )
269275 .padding(16 .dp),
270- horizontalAlignment = Alignment .CenterHorizontally ,
271- ) {
272- Button (onClick = onTakePhotoClick) { Text (" Take Photo" ) }
273- }
276+ ) { Text (" Take Photo" ) }
274277 }
275278 }
276279}
@@ -283,9 +286,9 @@ private fun CameraPreviewContent(
283286 * (e.g., clicks the back button).
284287 */
285288@Composable
286- fun CapturedImageView (uri : Uri , onDismiss : () -> Unit ) {
289+ fun CapturedImageView (uri : Uri , modifier : Modifier = Modifier , onDismiss : () -> Unit = {} ) {
287290 Box (
288- modifier = Modifier .fillMaxSize(),
291+ modifier = modifier .fillMaxSize(),
289292 ) {
290293 Image (
291294 painter = rememberAsyncImagePainter(uri),
0 commit comments