These 54 commits are when the Protocol Buffers files have changed:
| Commit: | 4a780d8 | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | Trevor McGuire | |
chore: align proto enums with proto3 zero-value best practices Added <ENUM_NAME>_UNSPECIFIED = 0 to all proto enums to comply with official proto3 style guide requirements. Updated ModelMappers.kt to handle the new UNSPECIFIED values and safely fallback to defaults. Also added a rule enforcing this to the local styleguide.
| Commit: | 11ed164 | |
|---|---|---|
| Author: | Trevor McGuire | |
chore: align proto enums with proto3 zero-value best practices Added <ENUM_NAME>_UNSPECIFIED = 0 to all proto enums to comply with official proto3 style guide requirements. Updated ModelMappers.kt to handle the new UNSPECIFIED values and safely fallback to defaults. Also added a rule enforcing this to the local styleguide.
| Commit: | 97f9e98 | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | Trevor McGuire | |
Address review comments regarding datastore factory and imports
| Commit: | 2b21350 | |
|---|---|---|
| Author: | Trevor McGuire | |
chore: split proto generation into standalone modules
| Commit: | 190c006 | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | Trevor McGuire | |
Restore datastore-proto module and decouple via SettingsDataSource This PR restores the `datastore-proto` module that was removed in PR #525. It brings back the `.proto` files, mappers, and serializers, but in a separate module under `:core:settings:datastore-proto`. Key architectural changes: - The `datastore-proto` module encapsulates `DataStoreFactory.create()` so `androidx.datastore` is no longer exposed to `:app`. - The `datastore-proto` module is completely Hilt-free. - Updates `:app`'s `AppSettingsModule` to manually provide the `ProtoDataStoreSettingsDataSource`.
| Commit: | bda48ab | |
|---|---|---|
| Author: | davidjiagoogle | |
| Committer: | GitHub | |
Refactor settings storage to Preferences DataStore to remove Protobuf (#525) * Refactor settings storage to Preferences DataStore to remove Protobuf * Address code review comments on safe string parsing & apply spotless formatting * Remove unused androidx.datastore dependency from feature/settings and refactor tests to use SharedPreferences * Clean up unused datastore and protobuf version and plugin declarations from Gradle scripts and Proguard config * Remove obsolete protobuf files and ProtoConversionTest from data:settings * Refactor persistence into standalone :data:settings-datastore module * Refactor settings persistence using modular Preferences DataStore (Option B) * Address PR 525 review comments: optimize enum mapping performance, add rename warning comments, fix navigation encoding, and expand test coverage * Import onAllNodesWithTag in ComposeTestRuleExt.kt * Address PR #525 review feedback: rename data source to PrefsDataStoreSettingsDataSource, remove Hilt dependencies from core:settings, add KDocs, and fix dependencies * Add unit tests for DebugSettings and DebugSettingsNavType
This commit does not contain any .proto files.
| Commit: | 29eed2d | |
|---|---|---|
| Author: | davidjiagoogle | |
Merge branch 'main' into david/splitEffects and resolve conflicts
| Commit: | d9eb028 | |
|---|---|---|
| Author: | davidjiagoogle | |
Refactor JCA to use extensible String-based Camera Effects
| Commit: | c9e9606 | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
| Committer: | GitHub | |
Delete concurrent camera quick setting (#512) Deletes the concurrent camera quick setting in anticipation of a quick settings UI refactor wherein it is removed. The concurrent camerea setting has been made available in the main settings screen.
| Commit: | ed02201 | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | Trevor McGuire | |
Add Rule of Thirds grid overlay to camera preview Adds a toggleable "Rule of Thirds" grid overlay to the camera preview to help with shot composition. Key changes include: - A `GridType` enum (`NONE`, `RULE_OF_THIRDS`) was introduced to manage grid visibility, allowing for future extensibility. - The grid selection is persisted in DataStore through the `SettingsRepository`. - A toggle button has been added to the Quick Settings panel. - The grid overlay features a fade-in/fade-out animation. The fade-out is handled within a `NonCancellable` context to prevent the animation from being interrupted, which avoids visual flickering. - For iconography, the button uses the standard `Icons.Default.Grid3x3` for the "on" state and a local vector asset (`grid_3x3_off.xml`) for the "off" state.
| Commit: | c9e1b61 | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
| Committer: | Kimberly Crevecoeur | |
Refactor: Decouple DataStore from Settings Module Extracted Proto DataStore implementation into a new :data:settings-datastore module. This improves modularity and separation of concerns by isolating the persistence layer. :data:settings now solely defines interfaces and handles constraints.
| Commit: | 34896f9 | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
move proto models and mappers to core:model
| Commit: | a2ff088 | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
Refactor: Decouple Models from Data Persistence for Enhanced Modularity This pull request introduces a significant architectural refactoring focused on improving the internal modularity and maintainability of the codebase. The primary goal was to decouple the core data models from any specific data persistence implementation (namely Protobuf and DataStore). This change ensures that core application components can utilize fundamental data types and settings interfaces without inheriting dependencies on Protobuf or DataStore, thus promoting cleaner module boundaries and increased flexibility for internal system evolution. Key Changes: 1. Creation of `:data:settings` (API Module): * A new, lightweight module was created to define the public API for settings within the application. * It contains the SettingsRepository interface and pure data models for settings (JcaSettings). * This module depends only on :core:model, ensuring it has no knowledge of persistence details. 2. Creation of `:data:settings-datastore` (Implementation Module): * The original :data:settings module was renamed and repurposed to become the concrete implementation of the new API module. * It now contains the LocalSettingsRepository implementation, the DataStoreModule for Hilt, and all Protobuf-related logic. 3. Purification of `:core:model`: * All Protobuf dependencies, imports, and conversion functions (toProto/fromProto) have been completely removed from this module. * :core:model is now a pure-Kotlin module, containing only the fundamental data classes and enums. This makes it a lightweight and universal dependency within the application. 4. Centralized Proto Mappers: * All toProto/fromProto logic has been migrated into the :data:settings-datastore module under a new mappers package. * The conversion logic is now implemented as idiomatic Kotlin extension functions (toDomain()/toProto()) in dedicated files (e.g., AspectRatioMapper.kt). This co-locates mapping logic while maintaining a clean separation of concerns. 5. Decoupling Navigation from Persistence: * The DebugSettingsNavType was refactored to remove its dependency on Protobuf serialization. * The DebugSettings data class now contains self-sufficient toNavString() and fromNavString() methods for navigation-specific serialization, ensuring the UI/navigation layer is completely independent of the data storage layer.
| Commit: | 5b2e380 | |
|---|---|---|
| Author: | Donovan McMurray | |
| Committer: | GitHub | |
Gllb (#361) * Integrate Google Low Light Boost. * More gLLB integration. * Add LowLightBoostPriority to Settings. * Correcting how LowLightBoostPriority is persisted. * Separate LowLightBoostSessionContainer into its own file. * Re-add LLB AE Mode functionality. * Update gLLB version to 16.0.1-beta04 * Update LLB availability check to try to download LLB if available * Apply spotless * Only report gLLB support if it is supported AND available Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Fix bug where lowLightBoostSession.release() wasn't getting called. * Make LLB session container a singleton and release session when app is resumed. * Fix issue where release was called multiple times on LLB Session after backgrounding JCA for long periods of time. * Clean up SDK version logic. * Removing accidental git command from SettingsViewModel comment. * Fix conditional checking for lens support of flash modes. * Restrict HDR and Concurrent Camera Quick Settings when LLB is active. * Add new error message for Google LLB. * Turn off HDR and Concurrent Camera if LLB is seleted from Settings Page. * Make 2 separate Illuminants for LLB options. This allows us to remove expensive calls to getLowLightBoostAvailablity while the camera is running, and only call this method during setup. * Change LowLightBoostState from enum to a float to accomodate the boostStrength value coming from Google LLB. * Pass a callback to LowLightBoostEffect for scene detection instead of passing whole CameraState. * Restoring .idea/other.xml file * Make LowLightBoostSessionContainer an object for simplicity. * Remove unnecessary coroutineScope. * Remove unnecessary coroutineScope.launch call. * Revert effects->effect in createUseCaseGroup. * Update Google LLB library to version 16.0.1-beta05. * Fix the gLLB installation flow so it doesn't block the camera initialization. * Update Google LLB version. * Release LLB Surface when it's no longer in use (in all cases). * Clean up the error handling when LLB fails. * Add lowLightBoostEvents to alert subscribers when an error occurs. This class allows for other event types to be added in the future. * Change getLowLightBoostEvents() to return a SharedFlow. * Wrap all of gLLB setup in try/catch block. * Call LLB error callback in when LLB Session encounters an error. * Add check for Google Play Services version until fix lands in LLB library. * Refactor LowLightBoost event to state This removes LLB "events" which can be more simply represented as a state within the existing LowLightBoostState. This change merges the failure event into LowLightBoostState as a new 'Error' state. This allows for the removal of the lowLightBoostEvents channel from the CameraSystem interface, simplifying the public API and ensuring unidirectional data flow. The PreviewViewModel and associated UI have been updated to handle the new `Error` state correctly. * Removing check for SERVICE_RELEASED to call LLB error callback. All cases where onSessionDisconnected() is called should be treated as an error. * Add exception to error callback for LLB * Only handle LLB state change errors when the state changes Adds distinctUntilChanged() to the StateFlow being collected to ensure we only handle the state change once. * Replace LowLightBoostSessionContainer with LowLightBoostSessionState. This allows the app to share the state of the Google LLB Session as needed. * Fixing comment in LowLightBoostSessionState. * Remove redundant code for setting LLB Session State to ReleaseRequested. * Clean up LLB Session release code. LowLightBoostSessionState.ReleaseRequested should not be needed, as the release logic should all happen in LowLightBoostSurfaceProcessor. * Revert "Clean up LLB Session release code." This reverts commit 15dc24e3260cf358a1ed77ff5723d276f60f5a39. * Revert "Remove redundant code for setting LLB Session State to ReleaseRequested." This reverts commit 425c5afffd5a37269466e8462e972211d4c47e89. * Revert "Fixing comment in LowLightBoostSessionState." This reverts commit f5a101b951bee5842561d499432b465662ffdb4d. * Revert "Replace LowLightBoostSessionContainer with LowLightBoostSessionState." This reverts commit 4f4735534046ed0222ae89b636251fd90227e324. * Refactor LowLightBoostSurfaceProcessor to use structured concurrency This makes the LowLightBoostSurfaceProcessor a bit more resilient and relies on structured concurrency to ensure we don't create multiple low light boost sessions concurrently. TotalCaptureResults are fed to the LowLightBoostEffect via a StateFlow rather than using a singleton * Simplify error handling and remove unnecessary coroutineScope {} * Undo change where single stream mode won't be applied when LLB fails * Remove unused LowLightBoostEvent * Change FlashModeUiStateAdapter to take a boolean for LLB being active instead of the strength value. The state doesn't need to be updated on every change of the strength value, just when the threshold is crossed. * Only update LLB state from onCaptureCompleted when using LLB AE Mode. * Adjust line lengths to be under 100 for gLLB changes. * Fix remaining spotless errors. Before, the spotlessApply run was failing because of max line length errors due to too many nesting levels. This was circumvented by refactoring some code into their own functions in CameraXCameraSystem.kt. * Update FlashModeuiStateAdapterTest to use isLowLightBoostActive instead of strength. * Clean up some lint errors --------- Co-authored-by: Trevor McGuire <trevormcguire@google.com> Co-authored-by: Trevor McGuire <temcguir@gmail.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
| Commit: | cdf87cb | |
|---|---|---|
| Author: | helpingstar | |
| Committer: | GitHub | |
Rename capture_mode.proto to stream_config.proto (#409)
| Commit: | 33e1bc7 | |
|---|---|---|
| Author: | donovanfm | |
Resolve conflicts merging main -> gllb.
| Commit: | b463055 | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | GitHub | |
Make DebugSettings and TestPattern serializable as protobufs (#385)
| Commit: | 065f571 | |
|---|---|---|
| Author: | Trevor McGuire | |
Merge branch 'main' into gllb
| Commit: | 20bafc2 | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | Trevor McGuire | |
Make DebugSettings and TestPattern serializable as protobufs
| Commit: | 85207d3 | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | Trevor McGuire | |
Merge branch 'main'' into temcguir/remove_assisted_injection
| Commit: | ec3a5b9 | |
|---|---|---|
| Author: | davidjiagoogle | |
| Committer: | GitHub | |
Move data models from data/settings to core/model (#376) * init * update * update * init * update * flipLensUiState * update * update * update * quicksettingsuiState * update * fix quickSettingIsOpen * update * spotless * spotless * update * spotless * update * update * update * update * update * Update StreamConfigsUiStateAdapter.kt * update * spotless * update * Update CaptureModeUiStateAdapter.kt * Update CaptureModeUiStateAdapter.kt * Update CaptureModeUiStateAdapter.kt * init * init * Update FlipLensUiStateAdapter.kt * update * Update FlipLensUiStateAdapter.kt * Update PreviewViewModel.kt * update * update * screenFlashUiState * spotless * address comments * merge * spotless * Update PreviewScreenComponents.kt * simplify deps * init * dep * Merge branch 'david/quickSettingsUiState' into david/uiComponents * address comments * update * update * update * update * merge * update * make CaptureModeToggleUiState binary * fix CaptureModeSettingsTest * spotless * rename captureUiState & init PreviewDisplayUiState * Move components from preview to ui.component.capture * migrate the tests from feature/preview * merge from main * import resource for tests * Address comments and merge after math * Delete kotlin-compiler-14341256067501647337.salive * Revert CaptureViewModel * Add back ignoreUri's default value * Move models from data/settings to data/model * Move ViewModel initialization back to PreviewScreen & use PreviewViewModel's property access notation * Spotless * fix manifest * Spotless * Add javadocs for CameraControlOverlay.get**EventForExternalCaptureMode methods * fix missed import conversions * Convert more imports that were missed * missed more imports in PreviewViewModelTest * Move TestPattern along with other models * move to core/model * remove leftover files in data/model * Delete .gitignore
| Commit: | f092e6b | |
|---|---|---|
| Author: | Trevor McGuire | |
Replace Hilt AssistedInjection with Nav Args for PreviewViewModel This commit refactors PreviewViewModel to remove Hilt assisted injection for ExternalCaptureMode and DebugSettings. These are now passed as Navigation arguments. It also introduces a Channel for communicating capture events. To enable this: * ExternalCaptureMode has been simplified into a sealed interface with distinct states: Standard, ImageCapture, MultipleImageCapture, and VideoCapture. This was necessary to make it parcelable for navigation. * DebugSettings (and its component TestPattern) are now serialized using Protocol Buffers to allow them to be passed as navigation arguments. The benefits of this refactor include: * Decoupling PreviewViewModel from Hilt assisted injection for these dependencies. * Simplifying the dependency graph and ViewModel instantiation. * Clarifying the data flow for ExternalCaptureMode and DebugSettings through standard Navigation components. * Centralizing UI logic for ExternalCaptureMode within PreviewViewModel, moving it out of individual UI components like ControlsBottom and CaptureButton. * Replacing callbacks in PreviewViewModel.captureImage (formerly captureImageWithUri) and PreviewViewModel.startRecording with a CaptureEvent Kotlin Channel. This provides a more reactive way to communicate capture results (success/failure/progress) and URIs to the UI. * Consolidating save location logic into the SaveLocation sealed interface. All external URIs are now passed via the captureUris navigation argument, and the results are communicated back through the CaptureEvent channel.
| Commit: | e9bcba8 | |
|---|---|---|
| Author: | David Jia | |
move to core/model
| Commit: | 44c8447 | |
|---|---|---|
| Author: | David Jia | |
Move models from data/settings to data/model
| Commit: | 60e16dd | |
|---|---|---|
| Author: | donovanfm | |
Add LowLightBoostPriority to Settings.
| Commit: | ea21c59 | |
|---|---|---|
| Author: | Trevor McGuire | |
Clear main-cfg branch of all files
This commit does not contain any .proto files.
| Commit: | ebddf33 | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
| Committer: | GitHub | |
Mute Audio Default Setting (#268) * Implement default setting to start recordings muted or with audio * use new .withAudioEnabled API * Rename Mute Audio usages to default positive * audio uistate --------- Co-authored-by: Jaehwa Noh <shwoghk14@gmail.com>
The documentation is generated from this commit.
| Commit: | e610e53 | |
|---|---|---|
| Author: | davidjiagoogle | |
| Committer: | GitHub | |
VideoQuality proto and VideoQualitySetting (#294) * VideoQuality proto and VideoQualitySetting * Update VideoQuality.kt * update * Update VideoQuality.kt * address comments * update * update * update * update * Update SettingsComponents.kt * spotless * address comment * add video resolution in debug overlay * update * update * added preview icon * Update PreviewScreenComponents.kt * Update PreviewViewModel.kt * address comments * Update SettingsComponents.kt * Update PreviewViewModel.kt * Update CameraExt.kt * Update CameraSession.kt * fallback strategy * Update SettingsComponents.kt * Update CameraSession.kt * Update Constraints.kt * address comments * address comments * Update FakeJcaSettingsSerializer.kt * spotless
| Commit: | 1e28091 | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
| Committer: | GitHub | |
Rename CaptureMode setting model to StreamConfig (#297) * rename relevant instances of captureMode to streamConfig
| Commit: | 9e99e0b | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
| Committer: | Kimberly Crevecoeur | |
rename captureMode setting model to streamConfig # Conflicts: # core/camera/src/main/java/com/google/jetpackcamera/core/camera/CameraXCameraUseCase.kt # feature/settings/src/main/java/com/google/jetpackcamera/settings/SettingsViewModel.kt # feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt
| Commit: | 41f953f | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | GitHub | |
Add Optical Image Stabilization mode (#289) * Add OIS stabilization mode * Default camera flip disabled when non-AUTO stabilization mode not supported on other lens * Apply spotless * Make AUTO stabilization fall back to OIS when available Instead of just choosing stabilization ON, this will now use OIS if it is available and ON is not. * Make UI show when AUTO chooses OIS Adds an icon to show when AUTO stabilization mode has chosen OIS rather than ON. Also adjusts ON icon to use a different "A" symbol. * Change cascading "if" condition to "when" * Move unsupported FPS sets for stabilization modes to Constraints * Rely on Constraints for unsupported FPS per StabilizationMode in UI * Rename StabilizationUiState.Set to StabilizationUiState.Enabled * Throw IllegalStateException when StabilizationUiState.Specific contains AUTO stabilization This should not be a legal state since it is not specific. * Require StabilizationUiState.Specific to not have AUTO stabilization mode
| Commit: | 3f136fd | |
|---|---|---|
| Author: | Yasith Vidanaarachchi | |
| Committer: | GitHub | |
Add LLB as a FlashMode, and remove existing LLB toggle related settings (#269)
| Commit: | 116e484 | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | GitHub | |
Add AUTO stabilization setting and enable by default (#278) * Add AUTO stabilization mode and make default Adds an AUTO stabilization mode that is now used by default. This mode will use preview stabilization or video stabilization depending on device support. This also does some refactoring to accommodate the new AUTO stabilization mode. Instead of keeping track of preview stabilization and video stabilization separately, we now use a single enum to track all stabilization modes. * Add AUTO selector to settings screen * Add StabilizationMode to CameraState Since this can now be resolved from AUTO or turned off temporarily during concurrent camera mode, we need to only show the indicator when it is actually on. This allows us to detect when and which stabilization mode is enabled. * Add icon for HIGH_QUALITY stabilization * Display stabilization mode from CaptureResult * Make AUTO only select ON when device configuration is supported High quality stabilization may affect WYSIWYG and performance. We'll only use high quality stabilization if it's explicitly turned on in the settings. * Only support AUTO in constraints when ON is supported * Better handling of camera switching No longer switch stabilization mode based on camera lens constraints when switching lenses. Now we will keep the mode, and will show that the mode is active based on the CameraState. This allows switching between back and front lens and maintaining the stabilization mode. AUTO mode will still remove the stabilization icon when it is not able to apply stabilization. * Show "AUTO" stabilization icon when in auto stabilization mode * Animate AUTO visibility icon Will fade in when stabilization is applied, and fade out otherwise * Remove unused protos
| Commit: | 21fdaf1 | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | GitHub | |
Add AUTO stabilization setting and enable by default (#278) * Add AUTO stabilization mode and make default Adds an AUTO stabilization mode that is now used by default. This mode will use preview stabilization or video stabilization depending on device support. This also does some refactoring to accommodate the new AUTO stabilization mode. Instead of keeping track of preview stabilization and video stabilization separately, we now use a single enum to track all stabilization modes. * Add AUTO selector to settings screen * Add StabilizationMode to CameraState Since this can now be resolved from AUTO or turned off temporarily during concurrent camera mode, we need to only show the indicator when it is actually on. This allows us to detect when and which stabilization mode is enabled. * Add icon for HIGH_QUALITY stabilization * Display stabilization mode from CaptureResult * Make AUTO only select ON when device configuration is supported High quality stabilization may affect WYSIWYG and performance. We'll only use high quality stabilization if it's explicitly turned on in the settings. * Only support AUTO in constraints when ON is supported * Better handling of camera switching No longer switch stabilization mode based on camera lens constraints when switching lenses. Now we will keep the mode, and will show that the mode is active based on the CameraState. This allows switching between back and front lens and maintaining the stabilization mode. AUTO mode will still remove the stabilization icon when it is not able to apply stabilization. * Show "AUTO" stabilization icon when in auto stabilization mode * Animate AUTO visibility icon Will fade in when stabilization is applied, and fade out otherwise * Remove unused protos
| Commit: | becc704 | |
|---|---|---|
| Author: | Yasith Vidanaarachchi | |
animation prototype with scale
| Commit: | 3e07a32 | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
| Committer: | GitHub | |
Implement duration limit to recordings (#231) Includes setting with options for unlimited or 5, 10, 30, 60 seconds duration.
| Commit: | 4e4d815 | |
|---|---|---|
| Author: | heytsai | |
| Committer: | GitHub | |
Support Ultra HDR image capture (#206) * Add ImageOutputFormat settings to model - Add image output format proto and settings - Add supported output formats to settings * Support Ultra HDR image capture - Add supported image formats into CameraConstraints - Add UI for toggling capture between HDR image and HDR video - Hook up ImageFormat setting to CameraXCameraUseCase - Enable/Disable HdrCaptureModeToggleButton according to capture mode - Check image format and reset if needed when capture mode is changed - Not to bind video capture when capturing Ultra HDR image * Other - Display HDR icon text in QuickSettings as HDR instead of HLG10 --------- Co-authored-by: Ming-Da Tsai <mingdatsai@google.com>
| Commit: | 17c50b5 | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | GitHub | |
Add per-lens and system constraints for HDR video (#168) * Remove constraints from CameraAppSettings These don't need to be persisted, and only need to be updated once on initialization. * Add constraints classes * Add constraints for dynamic range Whenever the camera is switched, the constraints of supported dynamic range need to be updated. * Add ConstraintsRepository to data layer Make ConstraintsRepository an injectible singleton to ensure we're using the same instance across the camera use case and the viewmodels * Add constraints to SettingsScreen * Add constraints to preview screen / quick settings * Add constraints to all tests and use new UiState classes Fix UiTestUtil dependency on new PreviewUiState sealed class Fix up FakeSettingsRepository to handle constraints Adapt PreviewViewModelTest to fit with constraint changes Delete tests that are no longer valid since Settings no longer contain constraints Fixup LocalSettingsRepositoryInstrumentedTest to use new naming for default settings Adapt CameraAppSettingsViewModelTest to use new SystemConstraints and SettingsViewModel changes * Apply spotless * Reorder and delete old proto fields for app settings We should only do this in pre-release versions. After a release, the field numbers need to be locked in a deprecated or added to a list of `reserved`.
| Commit: | 6121243 | |
|---|---|---|
| Author: | Ming-Da Tsai | |
| Committer: | Ming-Da Tsai | |
Add ImageOutputFormat settings to model - Add image output format proto and settings - Add supported output formats to settings
| Commit: | 7e342d9 | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
| Committer: | GitHub | |
Target FPS settings (#86) * add target fps setting ui and datastore value * implement setTargetFrameRate in CameraXCameraUseCase * modify available stabilizations based on selected fps
| Commit: | 3bda628 | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | GitHub | |
Use LensFacing instead of flipCamera (#133) * Add LensFacing to model * Remove unused CameraUseCase data classes Use the classes in the model instead * Change CameraUseCase.flipCamera() to setLensFacing() * Use of setLensFacing rather than flipCamera Switches all usage to setting LensFacing directly rather than relying on booleans. * Add switch camera tests This will switch cameras using three methods: 1. The flip camera button on the preview screen 2. Double tapping the screen to flip cameras 3. Flipping cameras with the quick settings button * Fix unit test failures * Remove unused import and unnecessary changes * Fix BackgroundDeviceTest Fixes tests in BackgroundDeviceTest that use the flip camera button * Fix comments in LocalSettingsRepositoryInstrumentedTest
| Commit: | 8498fe2 | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | GitHub | |
Add HDR settings to model (#111) * Convert settings tests to use Truth * Add dynamic range proto and setting Only includes SDR and HLG10 currently * Add supported dynamic ranges to settings * Apply spotless * Make copyright header years reflect date of inception
| Commit: | 6e32e86 | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | GitHub | |
Copyright headers should reflect inception year (#115) * Tell spotless to never update existing year in copyright All files should use inception year for copyright * Update all copyright headers to file inception year based on git history * Update copyright after merge with main
| Commit: | db184fe | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | Trevor McGuire | |
Add supported dynamic ranges to settings
| Commit: | 3cf09b2 | |
|---|---|---|
| Author: | Trevor McGuire | |
| Committer: | Trevor McGuire | |
Add dynamic range proto and setting Only includes SDR and HLG10 currently
| Commit: | aa88019 | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
| Committer: | GitHub | |
Settings to enable preview/video stabilization (#83) Add stabilization setting datastore and ui * Popup dialog setting in settings screen; options enabled/disabled based on device capability * UI icon on preview screen indicating when stabilization is active
| Commit: | 7edde7e | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
Merge branch 'main' into kim/demo_new_settings
| Commit: | dd6e490 | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
| Committer: | GitHub | |
Rename enums (#66) * rename proto and setting enums
| Commit: | 54daeec | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
| Committer: | GitHub | |
Capture Mode Setting and Integration (#37)
| Commit: | 87b3433 | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
| Committer: | GitHub | |
Aspect Ratio Setting (#38)
| Commit: | 7bf8722 | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
| Committer: | Kimberly Crevecoeur | |
demo setting backend and functions
| Commit: | 2ccc32a | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
| Committer: | GitHub | |
Implement flip camera (#20) * functional persistent setting for camera direction * add flip camera button to preview screen * provide available device lens directions to settings * added available lens as a condition to set default to front camera
| Commit: | d2df712 | |
|---|---|---|
| Author: | Kimberly Crevecoeur | |
| Committer: | GitHub | |
Connect CameraUseCase to settings data and implement rear camera flash (#16) * rename Settings class to CameraAppSettings * create flash setting * create flash setting UI for Settings Screen * functional implementation of default flash setting for rear camera
| Commit: | 0738ef4 | |
|---|---|---|
| Author: | Kim | |
| Committer: | GitHub | |
Foundation for Settings UI and persistent datastore * create proto-datastore schema for jetpack camera app settings * create settings screen page with back navigation and functional settings * functional setting to set app dark mode * tests for DataStoreModule, LocalSettingsRepository, SettingsViewModel