@@ -35,6 +35,7 @@ import androidx.compose.foundation.layout.height
35
35
import androidx.compose.foundation.layout.offset
36
36
import androidx.compose.foundation.layout.padding
37
37
import androidx.compose.foundation.layout.size
38
+ import androidx.compose.foundation.layout.wrapContentSize
38
39
import androidx.compose.foundation.shape.CircleShape
39
40
import androidx.compose.material.icons.Icons
40
41
import androidx.compose.material.icons.automirrored.filled.ArrowBack
@@ -63,6 +64,7 @@ import androidx.compose.ui.unit.round
63
64
import androidx.lifecycle.LifecycleOwner
64
65
import androidx.lifecycle.compose.LocalLifecycleOwner
65
66
import androidx.lifecycle.compose.collectAsStateWithLifecycle
67
+ import androidx.lifecycle.viewmodel.compose.viewModel
66
68
import coil.compose.rememberAsyncImagePainter
67
69
import com.google.accompanist.permissions.ExperimentalPermissionsApi
68
70
import com.google.accompanist.permissions.PermissionState
@@ -92,14 +94,14 @@ fun CameraXBasic(modifier: Modifier = Modifier) {
92
94
}
93
95
}
94
96
95
- Box (modifier = Modifier .fillMaxSize()) {
97
+ Box (modifier = modifier .fillMaxSize()) {
96
98
ContentWithPermissionHandling (
97
99
cameraPermissionState = cameraPermissionState,
98
100
showCapturedImage = showCapturedImage,
99
101
onShowCapturedImageChange = { showCapturedImage = it },
100
102
viewModel = viewModel,
101
103
imageCaptureCallbackExecutor = imageCaptureCallbackExecutor,
102
- modifier = modifier ,
104
+ modifier = Modifier ,
103
105
)
104
106
}
105
107
}
@@ -131,7 +133,7 @@ private fun ContentWithPermissionHandling(
131
133
when (cameraPermissionState.status) {
132
134
is PermissionStatus .Granted -> {
133
135
if (showCapturedImage != null ) {
134
- CapturedImageView (uri = showCapturedImage) {
136
+ CapturedImageView (uri = showCapturedImage, modifier = modifier ) {
135
137
onShowCapturedImageChange(null )
136
138
}
137
139
} else {
@@ -152,8 +154,9 @@ private fun ContentWithPermissionHandling(
152
154
}
153
155
154
156
is PermissionStatus .Denied -> CameraPermissionDeniedView (
155
- cameraPermissionState.status,
156
- cameraPermissionState,
157
+ status = cameraPermissionState.status,
158
+ cameraPermissionState = cameraPermissionState,
159
+ modifier = modifier
157
160
)
158
161
}
159
162
}
@@ -171,9 +174,10 @@ private fun ContentWithPermissionHandling(
171
174
private fun CameraPermissionDeniedView (
172
175
status : PermissionStatus ,
173
176
cameraPermissionState : PermissionState ,
177
+ modifier : Modifier = Modifier
174
178
) {
175
179
Column (
176
- modifier = Modifier
180
+ modifier = modifier
177
181
.fillMaxSize()
178
182
.padding(16 .dp),
179
183
horizontalAlignment = Alignment .CenterHorizontally ,
@@ -232,7 +236,7 @@ private fun CameraPreviewContent(
232
236
233
237
surfaceRequest?.let { request ->
234
238
val coordinateTransformer = remember { MutableCoordinateTransformer () }
235
- Box (modifier = Modifier .fillMaxSize()) {
239
+ Box (modifier = modifier .fillMaxSize()) {
236
240
CameraXViewfinder (
237
241
surfaceRequest = request,
238
242
coordinateTransformer = coordinateTransformer,
@@ -263,14 +267,13 @@ private fun CameraPreviewContent(
263
267
.size(48 .dp),
264
268
)
265
269
}
266
- Column (
267
- modifier = Modifier
270
+
271
+ Button (
272
+ onClick = onTakePhotoClick,
273
+ modifier
268
274
.align(Alignment .BottomCenter )
269
275
.padding(16 .dp),
270
- horizontalAlignment = Alignment .CenterHorizontally ,
271
- ) {
272
- Button (onClick = onTakePhotoClick) { Text (" Take Photo" ) }
273
- }
276
+ ) { Text (" Take Photo" ) }
274
277
}
275
278
}
276
279
}
@@ -283,9 +286,9 @@ private fun CameraPreviewContent(
283
286
* (e.g., clicks the back button).
284
287
*/
285
288
@Composable
286
- fun CapturedImageView (uri : Uri , onDismiss : () -> Unit ) {
289
+ fun CapturedImageView (uri : Uri , modifier : Modifier = Modifier , onDismiss : () -> Unit = {} ) {
287
290
Box (
288
- modifier = Modifier .fillMaxSize(),
291
+ modifier = modifier .fillMaxSize(),
289
292
) {
290
293
Image (
291
294
painter = rememberAsyncImagePainter(uri),
0 commit comments