From 368572b731459ece3fb9d70eb11198ea92bc0870 Mon Sep 17 00:00:00 2001 From: David Jia Date: Fri, 1 Dec 2023 21:33:17 +0000 Subject: Third-Party Import of: https://github.com/google/jetpack-camera-app Request Document: go/android3p For CL Reviewers: go/android3p#cl-review For Build Team: go/ab-third-party-imports Bug: http://b/309514655 Test: manual - built successfully Change-Id: I4330a42c6fd18f8a3fbfb9ef5ab9273be34fecf9 --- Android.bp | 17 +++++++ METADATA | 20 ++++++++ MODULE_LICENSE_APACHE2 | 0 OWNERS | 7 +++ app/Android.bp | 35 ++++++++++++++ app/src/main/AndroidManifest.xml | 5 +- .../jetpackcamera/JetpackCameraApplication.kt | 4 +- .../java/com/google/jetpackcamera/MainActivity.kt | 4 +- .../java/com/google/jetpackcamera/ui/JcaApp.kt | 27 ++++++----- .../com/google/jetpackcamera/ui/PermissionsUi.kt | 31 ++++++------ camera-viewfinder-compose/Android.bp | 23 +++++++++ .../src/main/AndroidManifest.xml | 4 +- .../jetpackcamera/viewfinder/CameraPreview.kt | 15 +++++- core/common/Android.bp | 19 ++++++++ core/common/src/main/AndroidManifest.xml | 4 +- data/settings/Android.bp | 43 +++++++++++++++++ data/settings/src/main/AndroidManifest.xml | 4 +- domain/camera/Android.bp | 25 ++++++++++ domain/camera/src/main/AndroidManifest.xml | 5 +- .../domain/camera/CameraXCameraUseCase.kt | 55 +++++++++++----------- .../domain/camera/CoroutineCameraProvider.kt | 2 +- feature/preview/Android.bp | 35 ++++++++++++++ feature/preview/src/main/AndroidManifest.xml | 4 +- feature/quicksettings/Android.bp | 28 +++++++++++ feature/quicksettings/src/main/AndroidManifest.xml | 4 +- feature/settings/Android.bp | 31 ++++++++++++ feature/settings/src/main/AndroidManifest.xml | 4 +- .../settings/ui/SettingsComponents.kt | 8 ++-- 28 files changed, 383 insertions(+), 80 deletions(-) create mode 100644 Android.bp create mode 100644 METADATA create mode 100644 MODULE_LICENSE_APACHE2 create mode 100644 OWNERS create mode 100644 app/Android.bp create mode 100644 camera-viewfinder-compose/Android.bp create mode 100644 core/common/Android.bp create mode 100644 data/settings/Android.bp create mode 100644 domain/camera/Android.bp create mode 100644 feature/preview/Android.bp create mode 100644 feature/quicksettings/Android.bp create mode 100644 feature/settings/Android.bp diff --git a/Android.bp b/Android.bp new file mode 100644 index 0000000..efeb54e --- /dev/null +++ b/Android.bp @@ -0,0 +1,17 @@ +package { + default_applicable_licenses: [ + "Android-Apache-2.0", + ], +} + +subdirs = [ + "app", + "core/common", + "camera-viewfinder-compose", + "data/settings", + "domain/camera", + "feature", + + ] + + diff --git a/METADATA b/METADATA new file mode 100644 index 0000000..11465c3 --- /dev/null +++ b/METADATA @@ -0,0 +1,20 @@ +name: "jetpack-camera-app" +description: + "Jetpack Camera App is (will be) a fully functional camera app, focused on " + "features used by app developers, and built entirely with CameraX, Kotlin " + "and Jetpack Compose. It follows Android design and development best " + "practices and it's intended to be a useful reference for developers." + +third_party { + url { + type: HOMEPAGE + value: "https://github.com/google/jetpack-camera-app" + } + url { + type: GIT + value: "https://github.com/google/jetpack-camera-app" + } + version: "3ae0900e248937bd7439b3d3c22360f2a7265153" + last_upgrade_date { year: 2023 month: 11 day: 17 } + license_type: NOTICE +} diff --git a/MODULE_LICENSE_APACHE2 b/MODULE_LICENSE_APACHE2 new file mode 100644 index 0000000..e69de29 diff --git a/OWNERS b/OWNERS new file mode 100644 index 0000000..6a44f69 --- /dev/null +++ b/OWNERS @@ -0,0 +1,7 @@ +# Default owners are top 3 active developers of the past 1 or 2 years +# or people with more than 10 commits last year. +# Please update this list if you find better owner candidates. +trevormcguire@google.com +yasith@google.com +davidjia@google.com +kcrevecoeur@google.com diff --git a/app/Android.bp b/app/Android.bp new file mode 100644 index 0000000..778e3cd --- /dev/null +++ b/app/Android.bp @@ -0,0 +1,35 @@ +package { + default_applicable_licenses: [ + "Android-Apache-2.0", + ], +} + +android_app { + name: "jetpack-camera-app", + static_libs:[ + "androidx.compose.material3_material3", + "androidx.compose.ui_ui-tooling-preview", + "androidx.compose.ui_ui-tooling", + "androidx.lifecycle_lifecycle-viewmodel-compose", + "androidx.activity_activity-compose", + "androidx.core_core-ktx", + "androidx.lifecycle_lifecycle-runtime-ktx", + "androidx.navigation_navigation-compose", + "hilt_android", + "androidx.compose.runtime_runtime", + "jetpack-camera-app_data_settings", + "jetpack-camera-app_feature_preview", + "jetpack-camera-app_feature_settings", + ], + srcs: [ + "src/main/**/*.kt", + ], + + resource_dirs: [ + "src/main/res", + ], + manifest: "src/main/AndroidManifest.xml", + sdk_version: "34", + min_sdk_version: "21", +} + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 40f0301..4e5c9ce 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,7 +15,8 @@ ~ limitations under the License. --> + xmlns:tools="http://schemas.android.com/tools" + package="com.google.jetpackcamera"> - \ No newline at end of file + diff --git a/app/src/main/java/com/google/jetpackcamera/JetpackCameraApplication.kt b/app/src/main/java/com/google/jetpackcamera/JetpackCameraApplication.kt index aca5cdd..fc87bfc 100644 --- a/app/src/main/java/com/google/jetpackcamera/JetpackCameraApplication.kt +++ b/app/src/main/java/com/google/jetpackcamera/JetpackCameraApplication.kt @@ -21,5 +21,5 @@ import dagger.hilt.android.HiltAndroidApp /** * [Application] class for JetpackCameraApp. */ -@HiltAndroidApp -class JetpackCameraApplication : Application() +@HiltAndroidApp(Application::class) +class JetpackCameraApplication : Hilt_JetpackCameraApplication() diff --git a/app/src/main/java/com/google/jetpackcamera/MainActivity.kt b/app/src/main/java/com/google/jetpackcamera/MainActivity.kt index 64d39a7..a499bb9 100644 --- a/app/src/main/java/com/google/jetpackcamera/MainActivity.kt +++ b/app/src/main/java/com/google/jetpackcamera/MainActivity.kt @@ -56,8 +56,8 @@ import kotlinx.coroutines.launch /** * Activity for the JetpackCameraApp. */ -@AndroidEntryPoint -class MainActivity : ComponentActivity() { +@AndroidEntryPoint(ComponentActivity::class) +class MainActivity : Hilt_MainActivity() { private val viewModel: MainActivityViewModel by viewModels() @VisibleForTesting diff --git a/app/src/main/java/com/google/jetpackcamera/ui/JcaApp.kt b/app/src/main/java/com/google/jetpackcamera/ui/JcaApp.kt index 64b9754..8fadcbf 100644 --- a/app/src/main/java/com/google/jetpackcamera/ui/JcaApp.kt +++ b/app/src/main/java/com/google/jetpackcamera/ui/JcaApp.kt @@ -23,32 +23,32 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController -import com.google.accompanist.permissions.ExperimentalPermissionsApi -import com.google.accompanist.permissions.isGranted -import com.google.accompanist.permissions.rememberPermissionState +//import com.google.accompanist.permissions.ExperimentalPermissionsApi +//import com.google.accompanist.permissions.isGranted +//import com.google.accompanist.permissions.rememberPermissionState import com.google.jetpackcamera.feature.preview.PreviewScreen import com.google.jetpackcamera.feature.preview.PreviewViewModel import com.google.jetpackcamera.settings.SettingsScreen import com.google.jetpackcamera.ui.Routes.PREVIEW_ROUTE import com.google.jetpackcamera.ui.Routes.SETTINGS_ROUTE -@OptIn(ExperimentalPermissionsApi::class) +//@OptIn(ExperimentalPermissionsApi::class) @Composable fun JcaApp( onPreviewViewModel: (PreviewViewModel) -> Unit /*TODO(b/306236646): remove after still capture*/ ) { - val permissionState = - rememberPermissionState(permission = Manifest.permission.CAMERA) +// val permissionState = Manifest.permission.CAMERA +// rememberPermissionState(permission = Manifest.permission.CAMERA) - if (permissionState.status.isGranted) { +// if (permissionState.status.isGranted) { JetpackCameraNavHost(onPreviewViewModel) - } else { - CameraPermission( - modifier = Modifier.fillMaxSize(), - cameraPermissionState = permissionState - ) - } +// } else { +// CameraPermission( +// modifier = Modifier.fillMaxSize(), +// cameraPermissionState = permissionState +// ) +// } } @Composable @@ -70,3 +70,4 @@ private fun JetpackCameraNavHost( } } } + diff --git a/app/src/main/java/com/google/jetpackcamera/ui/PermissionsUi.kt b/app/src/main/java/com/google/jetpackcamera/ui/PermissionsUi.kt index 5100dff..adb56e1 100644 --- a/app/src/main/java/com/google/jetpackcamera/ui/PermissionsUi.kt +++ b/app/src/main/java/com/google/jetpackcamera/ui/PermissionsUi.kt @@ -43,16 +43,16 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import com.google.accompanist.permissions.ExperimentalPermissionsApi -import com.google.accompanist.permissions.PermissionState +//import com.google.accompanist.permissions.ExperimentalPermissionsApi +//import com.google.accompanist.permissions.PermissionState import com.google.jetpackcamera.R -@OptIn(ExperimentalPermissionsApi::class) +//@OptIn(ExperimentalPermissionsApi::class) @Composable -fun CameraPermission(modifier: Modifier = Modifier, cameraPermissionState: PermissionState) { +fun CameraPermission(modifier: Modifier = Modifier) { PermissionTemplate( modifier = modifier, - permissionState = cameraPermissionState, +// permissionState = cameraPermissionState, painter = painterResource(id = R.drawable.photo_camera), iconAccessibilityText = stringResource(id = R.string.camera_permission_accessibility_text), title = stringResource(id = R.string.camera_permission_screen_title), @@ -61,11 +61,11 @@ fun CameraPermission(modifier: Modifier = Modifier, cameraPermissionState: Permi ) } -@OptIn(ExperimentalPermissionsApi::class) +//@OptIn(ExperimentalPermissionsApi::class) @Composable fun PermissionTemplate( modifier: Modifier = Modifier, - permissionState: PermissionState, +// permissionState: PermissionState, onSkipPermission: (() -> Unit)? = null, painter: Painter, iconAccessibilityText: String, @@ -100,7 +100,7 @@ fun PermissionTemplate( .fillMaxWidth() .align(Alignment.CenterHorizontally) .height(IntrinsicSize.Min), - permissionState = permissionState, +// permissionState = permissionState, requestButtonText = requestButtonText, onSkipPermission = onSkipPermission ) @@ -123,11 +123,11 @@ fun PermissionImage(modifier: Modifier = Modifier, painter: Painter, accessibili } } -@OptIn(ExperimentalPermissionsApi::class) +//@OptIn(ExperimentalPermissionsApi::class) @Composable fun PermissionButtonSection( modifier: Modifier = Modifier, - permissionState: PermissionState, +// permissionState: PermissionState, requestButtonText: String, onSkipPermission: (() -> Unit)? ) { @@ -138,7 +138,7 @@ fun PermissionButtonSection( .align(Alignment.Center) ) { PermissionButton( - permissionState = permissionState, +// permissionState = permissionState, requestButtonText = requestButtonText ) Spacer(modifier = Modifier.height(20.dp)) @@ -156,11 +156,11 @@ fun PermissionButtonSection( } } -@OptIn(ExperimentalPermissionsApi::class) +//@OptIn(ExperimentalPermissionsApi::class) @Composable fun PermissionButton( modifier: Modifier = Modifier, - permissionState: PermissionState, +// permissionState: PermissionState, requestButtonText: String ) { Button( @@ -169,7 +169,9 @@ fun PermissionButton( containerColor = MaterialTheme.colorScheme.primaryContainer, contentColor = MaterialTheme.colorScheme.onPrimaryContainer ), - onClick = { permissionState.launchPermissionRequest() } + onClick = { +// permissionState.launchPermissionRequest() + } ) { Text( modifier = Modifier.padding(10.dp), @@ -233,3 +235,4 @@ fun PermissionBodyText(modifier: Modifier = Modifier, text: String, color: Color textAlign = TextAlign.Center ) } + diff --git a/camera-viewfinder-compose/Android.bp b/camera-viewfinder-compose/Android.bp new file mode 100644 index 0000000..2b55a3f --- /dev/null +++ b/camera-viewfinder-compose/Android.bp @@ -0,0 +1,23 @@ +package { + default_applicable_licenses: [ + "Android-Apache-2.0", + ], +} + +android_library { + name: "jetpack-camera-app_camera-viewfinder-compose", + srcs: ["src/main/**/*.kt"], + static_libs: [ + "androidx.compose.material3_material3", + "androidx.compose.runtime_runtime", + "androidx.compose.ui_ui-tooling-preview", + "androidx.compose.ui_ui-tooling", + "androidx.camera_camera-core", + "androidx.camera_camera-viewfinder", + "androidx.core_core", + ], + sdk_version: "34", + min_sdk_version: "21", + manifest:"src/main/AndroidManifest.xml" +} + diff --git a/camera-viewfinder-compose/src/main/AndroidManifest.xml b/camera-viewfinder-compose/src/main/AndroidManifest.xml index 5c675bb..426a891 100644 --- a/camera-viewfinder-compose/src/main/AndroidManifest.xml +++ b/camera-viewfinder-compose/src/main/AndroidManifest.xml @@ -14,6 +14,6 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - + - \ No newline at end of file + diff --git a/camera-viewfinder-compose/src/main/java/com/google/jetpackcamera/viewfinder/CameraPreview.kt b/camera-viewfinder-compose/src/main/java/com/google/jetpackcamera/viewfinder/CameraPreview.kt index 0bdc770..97009b8 100644 --- a/camera-viewfinder-compose/src/main/java/com/google/jetpackcamera/viewfinder/CameraPreview.kt +++ b/camera-viewfinder-compose/src/main/java/com/google/jetpackcamera/viewfinder/CameraPreview.kt @@ -21,7 +21,6 @@ import android.view.Surface import android.view.View import androidx.camera.core.Preview.SurfaceProvider import androidx.camera.core.SurfaceRequest -import androidx.camera.view.PreviewView.ImplementationMode import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -39,6 +38,20 @@ import kotlinx.coroutines.flow.mapNotNull private const val TAG = "Preview" +enum class ImplementationMode { + /** + * Use a [SurfaceView] for the preview when possible. If the device + * doesn't support [SurfaceView], [PreviewView] will fall back to use a + * [TextureView] instead. + */ + PERFORMANCE, + + /** + * Use a [TextureView] for the preview. + */ + COMPATIBLE +} + @Composable fun CameraPreview( modifier: Modifier, diff --git a/core/common/Android.bp b/core/common/Android.bp new file mode 100644 index 0000000..552b888 --- /dev/null +++ b/core/common/Android.bp @@ -0,0 +1,19 @@ +package { + default_applicable_licenses: [ + "Android-Apache-2.0", + ], +} + +android_library { + name: "jetpack-camera-app_core_common", + srcs: ["src/main/**/*.kt"], + static_libs: [ + "androidx.core_core-ktx", + "hilt_android", + "androidx.appcompat_appcompat", + "com.google.android.material_material", + ], + sdk_version: "34", + min_sdk_version: "21", + manifest:"src/main/AndroidManifest.xml" +} diff --git a/core/common/src/main/AndroidManifest.xml b/core/common/src/main/AndroidManifest.xml index 5c675bb..1609b38 100644 --- a/core/common/src/main/AndroidManifest.xml +++ b/core/common/src/main/AndroidManifest.xml @@ -14,6 +14,6 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - + - \ No newline at end of file + diff --git a/data/settings/Android.bp b/data/settings/Android.bp new file mode 100644 index 0000000..2abb0b4 --- /dev/null +++ b/data/settings/Android.bp @@ -0,0 +1,43 @@ +package { + default_applicable_licenses: [ + "Android-Apache-2.0", + ], +} + +java_library { + name: "jetpack-camera-app-protos-java-gen", + installable: false, + proto: { + type: "lite", + canonical_path_from_root: false, + local_include_dirs: ["src/main/proto"], + }, + srcs: [ + "src/main/proto/**/*.proto", + ], + min_sdk_version: "21", + sdk_version: "34", + + static_libs: [ + "libprotobuf-java-lite", + ] +} + + +android_library { + name: "jetpack-camera-app_data_settings", + srcs: [ + "src/main/**/*.kt", + ], + static_libs: [ + "hilt_android", + "kotlinx-coroutines-core", + "androidx.datastore_datastore", + "jetpack-camera-app-protos-java-gen", + "libprotobuf-java-lite", + ], + sdk_version: "34", + min_sdk_version: "21", + manifest:"src/main/AndroidManifest.xml", +} + diff --git a/data/settings/src/main/AndroidManifest.xml b/data/settings/src/main/AndroidManifest.xml index 5c675bb..da78212 100644 --- a/data/settings/src/main/AndroidManifest.xml +++ b/data/settings/src/main/AndroidManifest.xml @@ -14,6 +14,6 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - + - \ No newline at end of file + diff --git a/domain/camera/Android.bp b/domain/camera/Android.bp new file mode 100644 index 0000000..b22d7e4 --- /dev/null +++ b/domain/camera/Android.bp @@ -0,0 +1,25 @@ +package { + default_applicable_licenses: [ + "Android-Apache-2.0", + ], +} + +android_library { + name: "jetpack-camera-app_domain_camera", + srcs: ["src/main/**/*.kt"], + static_libs: [ + "androidx.concurrent_concurrent-futures-ktx", + "hilt_android", + "androidx.camera_camera-core", + "androidx.camera_camera-viewfinder", + "androidx.camera_camera-camera2", + "androidx.camera_camera-lifecycle", + "androidx.camera_camera-extensions", + "jetpack-camera-app_data_settings", + "jetpack-camera-app_core_common", + ], + sdk_version: "34", + min_sdk_version: "21", + manifest:"src/main/AndroidManifest.xml" +} + diff --git a/domain/camera/src/main/AndroidManifest.xml b/domain/camera/src/main/AndroidManifest.xml index 1e7c244..2aa7dee 100644 --- a/domain/camera/src/main/AndroidManifest.xml +++ b/domain/camera/src/main/AndroidManifest.xml @@ -14,6 +14,7 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - + - \ No newline at end of file + diff --git a/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CameraXCameraUseCase.kt b/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CameraXCameraUseCase.kt index 556e778..e04bdd9 100644 --- a/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CameraXCameraUseCase.kt +++ b/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CameraXCameraUseCase.kt @@ -33,10 +33,10 @@ import androidx.camera.core.UseCaseGroup import androidx.camera.core.ViewPort import androidx.camera.core.ZoomState import androidx.camera.lifecycle.ProcessCameraProvider -import androidx.camera.video.MediaStoreOutputOptions -import androidx.camera.video.Recorder -import androidx.camera.video.Recording -import androidx.camera.video.VideoCapture +//import androidx.camera.video.MediaStoreOutputOptions +//import androidx.camera.video.Recorder +//import androidx.camera.video.Recording +//import androidx.camera.video.VideoCapture import androidx.concurrent.futures.await import androidx.core.content.ContextCompat import com.google.jetpackcamera.domain.camera.CameraUseCase.Companion.INVALID_ZOOM_SCALE @@ -71,11 +71,11 @@ constructor( // TODO apply flash from settings private val imageCaptureUseCase = ImageCapture.Builder().build() - private val recorder = Recorder.Builder().setExecutor( - defaultDispatcher.asExecutor() - ).build() - private val videoCaptureUseCase = VideoCapture.withOutput(recorder) - private var recording: Recording? = null +// private val recorder = Recorder.Builder().setExecutor( +// defaultDispatcher.asExecutor() +// ).build() +// private val videoCaptureUseCase = VideoCapture.withOutput(recorder) +// private var recording: Recording? = null private lateinit var previewUseCase: Preview private lateinit var useCaseGroup: UseCaseGroup @@ -161,27 +161,27 @@ constructor( ContentValues().apply { put(MediaStore.Video.Media.DISPLAY_NAME, name) } - val mediaStoreOutput = - MediaStoreOutputOptions.Builder( - application.contentResolver, - MediaStore.Video.Media.EXTERNAL_CONTENT_URI - ) - .setContentValues(contentValues) - .build() - - recording = - videoCaptureUseCase.output - .prepareRecording(application, mediaStoreOutput) - .start(ContextCompat.getMainExecutor(application)) { videoRecordEvent -> - run { - Log.d(TAG, videoRecordEvent.toString()) - } - } +// val mediaStoreOutput = +// MediaStoreOutputOptions.Builder( +// application.contentResolver, +// MediaStore.Video.Media.EXTERNAL_CONTENT_URI +// ) +// .setContentValues(contentValues) +// .build() + +// recording = +// videoCaptureUseCase.output +// .prepareRecording(application, mediaStoreOutput) +// .start(ContextCompat.getMainExecutor(application)) { videoRecordEvent -> +// run { +// Log.d(TAG, videoRecordEvent.toString()) +// } +// } } override fun stopVideoRecording() { Log.d(TAG, "stopRecording") - recording?.stop() +// recording?.stop() } override fun setZoomScale(scale: Float): Float { @@ -267,7 +267,7 @@ constructor( ) .addUseCase(previewUseCase) .addUseCase(imageCaptureUseCase) - .addUseCase(videoCaptureUseCase) +// .addUseCase(videoCaptureUseCase) if (captureMode == CaptureMode.SINGLE_STREAM) { useCaseGroupBuilder.addEffect(SingleSurfaceForcingEffect()) @@ -320,3 +320,4 @@ constructor( else -> throw IllegalArgumentException("Invalid lens facing type: $lensFacing") } } + diff --git a/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CoroutineCameraProvider.kt b/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CoroutineCameraProvider.kt index a056ec0..e55ae35 100644 --- a/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CoroutineCameraProvider.kt +++ b/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CoroutineCameraProvider.kt @@ -71,5 +71,5 @@ private class CoroutineLifecycleOwner(coroutineContext: CoroutineContext) : } } - override fun getLifecycle() = lifecycleRegistry + override public val lifecycle: Lifecycle = lifecycleRegistry } diff --git a/feature/preview/Android.bp b/feature/preview/Android.bp new file mode 100644 index 0000000..ed5c86e --- /dev/null +++ b/feature/preview/Android.bp @@ -0,0 +1,35 @@ +package { + default_applicable_licenses: [ + "Android-Apache-2.0", + ], +} + +android_library { + name: "jetpack-camera-app_feature_preview", + srcs: ["src/main/**/*.kt"], + resource_dirs: [ + "src/main/res", + ], + static_libs: [ + "androidx.compose.runtime_runtime", + "androidx.compose.material3_material3", + "androidx.compose.ui_ui-tooling-preview", + "hilt_android", + "androidx.hilt_hilt-navigation-compose", + "androidx.compose.ui_ui-tooling", + "kotlinx_coroutines_guava", + "androidx.datastore_datastore", + "libprotobuf-java-lite", + "androidx.camera_camera-core", + "androidx.camera_camera-viewfinder", + "jetpack-camera-app_data_settings", + "jetpack-camera-app_domain_camera", + "jetpack-camera-app_camera-viewfinder-compose", + "jetpack-camera-app_feature_quicksettings", + + ], + sdk_version: "34", + min_sdk_version: "21", + manifest:"src/main/AndroidManifest.xml" +} + diff --git a/feature/preview/src/main/AndroidManifest.xml b/feature/preview/src/main/AndroidManifest.xml index 5c675bb..1fb3b89 100644 --- a/feature/preview/src/main/AndroidManifest.xml +++ b/feature/preview/src/main/AndroidManifest.xml @@ -14,6 +14,6 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - + - \ No newline at end of file + diff --git a/feature/quicksettings/Android.bp b/feature/quicksettings/Android.bp new file mode 100644 index 0000000..8b0e3b6 --- /dev/null +++ b/feature/quicksettings/Android.bp @@ -0,0 +1,28 @@ +package { + default_applicable_licenses: [ + "Android-Apache-2.0", + ], +} + +android_library { + name: "jetpack-camera-app_feature_quicksettings", + srcs: ["src/main/**/*.kt"], + static_libs: [ + "androidx.compose.material3_material3", + "androidx.compose.runtime_runtime", + "androidx.compose.ui_ui-tooling-preview", + "androidx.compose.ui_ui-tooling", + "androidx.camera_camera-core", + "androidx.camera_camera-viewfinder", + "kotlinx_coroutines_guava", + "jetpack-camera-app_data_settings", + ], + sdk_version: "34", + min_sdk_version: "21", + manifest:"src/main/AndroidManifest.xml", + resource_dirs: [ + "src/main/res", + ], +} + + diff --git a/feature/quicksettings/src/main/AndroidManifest.xml b/feature/quicksettings/src/main/AndroidManifest.xml index 5c675bb..331bca7 100644 --- a/feature/quicksettings/src/main/AndroidManifest.xml +++ b/feature/quicksettings/src/main/AndroidManifest.xml @@ -14,6 +14,6 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - + - \ No newline at end of file + diff --git a/feature/settings/Android.bp b/feature/settings/Android.bp new file mode 100644 index 0000000..2e21fb8 --- /dev/null +++ b/feature/settings/Android.bp @@ -0,0 +1,31 @@ +package { + default_applicable_licenses: [ + "Android-Apache-2.0", + ], +} + +android_library { + name: "jetpack-camera-app_feature_settings", + srcs: ["src/main/**/*.kt"], + resource_dirs: [ + "src/main/res", + ], + static_libs: [ + "androidx.compose.material3_material3", + "androidx.compose.material_material-icons-core", + "androidx.compose.runtime_runtime", + "androidx.compose.ui_ui-tooling-preview", + "hilt_android", + "androidx.compose.ui_ui-tooling", + "kotlinx_coroutines_guava", + "androidx.datastore_datastore", + "libprotobuf-java-lite", + "jetpack-camera-app_data_settings", + "androidx.hilt_hilt-navigation-compose", + + ], + sdk_version: "34", + min_sdk_version: "21", + manifest:"src/main/AndroidManifest.xml" +} + diff --git a/feature/settings/src/main/AndroidManifest.xml b/feature/settings/src/main/AndroidManifest.xml index 5c675bb..cfecf54 100644 --- a/feature/settings/src/main/AndroidManifest.xml +++ b/feature/settings/src/main/AndroidManifest.xml @@ -14,6 +14,6 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - + - \ No newline at end of file + diff --git a/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt b/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt index 31b2d08..738d489 100644 --- a/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt +++ b/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt @@ -26,7 +26,7 @@ import androidx.compose.foundation.selection.selectable import androidx.compose.foundation.selection.selectableGroup import androidx.compose.foundation.selection.toggleable import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.AlertDialog import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -68,7 +68,7 @@ fun SettingsPageHeader(modifier: Modifier = Modifier, title: String, navBack: () }, navigationIcon = { IconButton(onClick = { navBack() }) { - Icon(Icons.Filled.ArrowBack, stringResource(id = R.string.nav_back_accessibility)) + Icon(Icons.AutoMirrored.Filled.ArrowBack, stringResource(id = R.string.nav_back_accessibility)) } } ) @@ -332,8 +332,8 @@ fun SettingUI( ) { ListItem( modifier = modifier, - headlineText = { Text(title) }, - supportingText = when (description) { + headlineContent = { Text(title) }, + supportingContent = when (description) { null -> null else -> { { Text(description) } -- cgit v1.2.3