From 00b66c8eefa5f9c2c9991e25490fc7aca1520f27 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Tue, 29 Jul 2025 16:47:02 +0530 Subject: [PATCH 01/11] chore: bump target SDK version to 35 --- gradle/libs.versions.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1dc1c445..3abab228 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,8 +15,8 @@ commons = "5.4.0" #Gradle gradlePlugins-agp = "8.11.1" #build -app-build-compileSDKVersion = "34" -app-build-targetSDK = "34" +app-build-compileSDKVersion = "35" +app-build-targetSDK = "35" app-build-minimumSDK = "29" app-build-javaVersion = "VERSION_17" app-build-kotlinJVMTarget = "17" From 69f5d1aa18c957bbcf2f8934dd67f10dcbf826a8 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Sat, 18 Oct 2025 19:11:55 +0530 Subject: [PATCH 02/11] chore: bump target SDK version to 36 --- gradle/libs.versions.toml | 4 ++-- settings.gradle.kts | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3abab228..2c916f53 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,8 +15,8 @@ commons = "5.4.0" #Gradle gradlePlugins-agp = "8.11.1" #build -app-build-compileSDKVersion = "35" -app-build-targetSDK = "35" +app-build-compileSDKVersion = "36" +app-build-targetSDK = "36" app-build-minimumSDK = "29" app-build-javaVersion = "VERSION_17" app-build-kotlinJVMTarget = "17" diff --git a/settings.gradle.kts b/settings.gradle.kts index 45478cbe..94d40dbf 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -11,6 +11,7 @@ dependencyResolutionManagement { google() mavenCentral() maven { setUrl("https://jitpack.io") } + mavenLocal() } } include(":app") From 2ff3019b569c131128e206940364015fe09b12b9 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Tue, 21 Oct 2025 15:29:24 +0530 Subject: [PATCH 03/11] refactor: update edge-to-edge implementation --- .../org/fossify/camera/activities/SettingsActivity.kt | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/camera/activities/SettingsActivity.kt b/app/src/main/kotlin/org/fossify/camera/activities/SettingsActivity.kt index c239e468..cee78827 100644 --- a/app/src/main/kotlin/org/fossify/camera/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/org/fossify/camera/activities/SettingsActivity.kt @@ -20,18 +20,15 @@ class SettingsActivity : SimpleActivity() { private val binding by viewBinding(ActivitySettingsBinding::inflate) override fun onCreate(savedInstanceState: Bundle?) { - isMaterialActivity = true super.onCreate(savedInstanceState) binding.apply { setContentView(root) setupOptionsMenu() refreshMenuItems() - updateMaterialActivityViews( - settingsCoordinator, - settingsHolder, - useTransparentNavigation = true, - useTopSearchMenu = false + updateEdgeToEdge( + topAppBar = settingsToolbar, + scrollingView = settingsNestedScrollview, ) setupMaterialScrollListener(settingsNestedScrollview, settingsToolbar) } From 5d67fff1d03b10bf168453362ded7a29786042d7 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Tue, 21 Oct 2025 16:04:54 +0530 Subject: [PATCH 04/11] refactor: update edge-to-edge implementation --- .../kotlin/org/fossify/camera/activities/SettingsActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/fossify/camera/activities/SettingsActivity.kt b/app/src/main/kotlin/org/fossify/camera/activities/SettingsActivity.kt index cee78827..c46bae55 100644 --- a/app/src/main/kotlin/org/fossify/camera/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/org/fossify/camera/activities/SettingsActivity.kt @@ -36,7 +36,7 @@ class SettingsActivity : SimpleActivity() { override fun onResume() { super.onResume() - setupToolbar(binding.settingsToolbar, NavigationIcon.Arrow) + setupTopAppBar(binding.settingsToolbar, NavigationIcon.Arrow) setupCustomizeColors() setupUseEnglish() From 6f8344383839046975ea8eb48f40ca121e9830cc Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Tue, 21 Oct 2025 16:10:39 +0530 Subject: [PATCH 05/11] refactor: update edge-to-edge implementation --- .../fossify/camera/activities/MainActivity.kt | 4 +-- .../camera/activities/SettingsActivity.kt | 9 +++---- app/src/main/res/layout/activity_settings.xml | 25 ++++++++++++------- gradle/libs.versions.toml | 2 +- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/camera/activities/MainActivity.kt b/app/src/main/kotlin/org/fossify/camera/activities/MainActivity.kt index 6ea43a1f..b6ea3a46 100644 --- a/app/src/main/kotlin/org/fossify/camera/activities/MainActivity.kt +++ b/app/src/main/kotlin/org/fossify/camera/activities/MainActivity.kt @@ -315,8 +315,8 @@ class MainActivity : SimpleActivity(), PhotoProcessor.MediaSavedListener, Camera topMargin = safeInsetTop } - val marginBottom = - safeInsetBottom + navigationBarHeight + resources.getDimensionPixelSize(org.fossify.commons.R.dimen.bigger_margin) + val systemBarsInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + val marginBottom = systemBarsInsets.bottom + resources.getDimensionPixelSize(org.fossify.commons.R.dimen.bigger_margin) binding.shutter.updateLayoutParams { bottomMargin = marginBottom diff --git a/app/src/main/kotlin/org/fossify/camera/activities/SettingsActivity.kt b/app/src/main/kotlin/org/fossify/camera/activities/SettingsActivity.kt index c46bae55..591603a4 100644 --- a/app/src/main/kotlin/org/fossify/camera/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/org/fossify/camera/activities/SettingsActivity.kt @@ -26,17 +26,14 @@ class SettingsActivity : SimpleActivity() { setupOptionsMenu() refreshMenuItems() - updateEdgeToEdge( - topAppBar = settingsToolbar, - scrollingView = settingsNestedScrollview, - ) - setupMaterialScrollListener(settingsNestedScrollview, settingsToolbar) + setupEdgeToEdge(padBottomSystem = listOf(settingsNestedScrollview)) + setupMaterialScrollListener(binding.settingsNestedScrollview, binding.settingsAppbar) } } override fun onResume() { super.onResume() - setupTopAppBar(binding.settingsToolbar, NavigationIcon.Arrow) + setupTopAppBar(binding.settingsAppbar, NavigationIcon.Arrow) setupCustomizeColors() setupUseEnglish() diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index cbe795b6..b7bfc067 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -6,22 +6,29 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - + android:layout_height="wrap_content"> + + + + + android:scrollbars="none" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> Date: Sun, 26 Oct 2025 01:52:21 +0530 Subject: [PATCH 06/11] refactor: migrate away from deprecated onBackPressed() --- .../kotlin/org/fossify/camera/activities/MainActivity.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/camera/activities/MainActivity.kt b/app/src/main/kotlin/org/fossify/camera/activities/MainActivity.kt index b6ea3a46..a8ab8310 100644 --- a/app/src/main/kotlin/org/fossify/camera/activities/MainActivity.kt +++ b/app/src/main/kotlin/org/fossify/camera/activities/MainActivity.kt @@ -156,9 +156,11 @@ class MainActivity : SimpleActivity(), PhotoProcessor.MediaSavedListener, Camera mediaSoundHelper.release() } - override fun onBackPressed() { - if (!closeOptions()) { - super.onBackPressed() + override fun onBackPressedCompat(): Boolean { + return if (!closeOptions()) { + false + } else { + true } } From cc30cae2f79dfc88840e0cbb401f65756030b3e1 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Sun, 26 Oct 2025 20:06:53 +0530 Subject: [PATCH 07/11] chore(deps): update org.fossify.commons to 5.5.0 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b85e0b99..a4313c84 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,7 +11,7 @@ androidx-window = "1.5.0" androidx-camera = "1.4.2" androidx-ktx = "2.8.6" #Fossify -commons = "6.0.0" +commons = "5.5.0" #Gradle gradlePlugins-agp = "8.11.1" #build From 398253df52468b0797bdf27b0fd299a66dac36e0 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Sun, 26 Oct 2025 20:41:59 +0530 Subject: [PATCH 08/11] docs: update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 697732a7..9f6209ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Compatibility updates for Android 15 & 16 + ## [1.3.1] - 2025-10-05 ### Changed - Updated translations From 7abdea564281c3daacb137c67976a9639a99febc Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Sun, 26 Oct 2025 20:56:33 +0530 Subject: [PATCH 09/11] style: shorten line --- .../main/kotlin/org/fossify/camera/activities/MainActivity.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/fossify/camera/activities/MainActivity.kt b/app/src/main/kotlin/org/fossify/camera/activities/MainActivity.kt index a8ab8310..ca59e765 100644 --- a/app/src/main/kotlin/org/fossify/camera/activities/MainActivity.kt +++ b/app/src/main/kotlin/org/fossify/camera/activities/MainActivity.kt @@ -318,7 +318,8 @@ class MainActivity : SimpleActivity(), PhotoProcessor.MediaSavedListener, Camera } val systemBarsInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) - val marginBottom = systemBarsInsets.bottom + resources.getDimensionPixelSize(org.fossify.commons.R.dimen.bigger_margin) + val marginBottom = systemBarsInsets.bottom + + resources.getDimensionPixelSize(org.fossify.commons.R.dimen.bigger_margin) binding.shutter.updateLayoutParams { bottomMargin = marginBottom From 57edad7b1425330bccb72c76e7de437caf29d50a Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Sun, 26 Oct 2025 21:13:32 +0530 Subject: [PATCH 10/11] build: bump detekt return count limit --- detekt.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/detekt.yml b/detekt.yml index 6472c5a3..73ddc0c1 100644 --- a/detekt.yml +++ b/detekt.yml @@ -40,6 +40,11 @@ style: maxLineLength: 120 excludePackageStatements: true excludeImportStatements: true + ReturnCount: + active: true + max: 4 + excludeGuardClauses: true + excludes: ["**/test/**", "**/androidTest/**"] naming: FunctionNaming: From b06c72c9386704e14db5cf4f85288f9c4e164b1d Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Sun, 26 Oct 2025 21:46:56 +0530 Subject: [PATCH 11/11] chore: update lint baselines --- app/detekt-baseline.xml | 6 --- app/lint-baseline.xml | 109 ++++++++++++++++++---------------------- 2 files changed, 49 insertions(+), 66 deletions(-) diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index 123873da..681960c6 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -73,7 +73,6 @@ MaxLineLength:CameraErrorHandler.kt$CameraErrorHandler$VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE -> context.toast(R.string.video_capture_insufficient_storage_error) MaxLineLength:ImageUtil.kt$ImageUtil$require(image.format == ImageFormat.YUV_420_888) { "Incorrect image format of the input image proxy: " + image.format } MaxLineLength:MainActivity.kt$MainActivity$if - MaxLineLength:MainActivity.kt$MainActivity$safeInsetBottom + navigationBarHeight + resources.getDimensionPixelSize(org.fossify.commons.R.dimen.bigger_margin) MaxLineLength:MainActivity.kt$MainActivity$} MaxLineLength:SettingsActivity.kt$SettingsActivity$it.beGoneIf(settingsUseEnglishHolder.isGone() && settingsPurchaseThankYouHolder.isGone() && settingsLanguageHolder.isGone()) MaxLineLength:SettingsActivity.kt$SettingsActivity$settingsUseEnglishHolder.beVisibleIf((config.wasUseEnglishToggled || Locale.getDefault().language != "en") && !isTiramisuPlus()) @@ -85,12 +84,7 @@ NestedBlockDepth:MediaOutputHelper.kt$MediaOutputHelper$private fun getUriForFilePath(path: String): Uri? NestedBlockDepth:PhotoProcessor.kt$PhotoProcessor$override fun doInBackground(vararg params: ByteArray): String NestedBlockDepth:VideoQualityManager.kt$VideoQualityManager$fun initSupportedQualities(cameraProvider: ProcessCameraProvider) - ReturnCount:ImageSaver.kt$ImageSaver$@SuppressLint("RestrictedApi") private fun saveImageToTempFile(): File? - ReturnCount:MediaActionSound.kt$MediaActionSound$private fun loadSound(sound: SoundState): Int - ReturnCount:MediaOutputHelper.kt$MediaOutputHelper$private fun getFileDescriptorMediaOutput(): MediaOutput.FileDescriptorMediaOutput? - ReturnCount:MediaOutputHelper.kt$MediaOutputHelper$private fun getUriForFilePath(path: String): Uri? ReturnCount:PhotoProcessor.kt$PhotoProcessor$override fun doInBackground(vararg params: ByteArray): String - ReturnCount:PhotoProcessor.kt$PhotoProcessor$private fun rotate(bitmap: Bitmap, degree: Int): Bitmap? SwallowedException:BitmapUtils.kt$BitmapUtils$ex: OutOfMemoryError SwallowedException:CameraXPreview.kt$CameraXPreview$e: Exception SwallowedException:ImageUtil.kt$ImageUtil$e: IOException diff --git a/app/lint-baseline.xml b/app/lint-baseline.xml index 9d7fe31f..9f727466 100644 --- a/app/lint-baseline.xml +++ b/app/lint-baseline.xml @@ -41,7 +41,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -52,17 +52,6 @@ file="src/main/AndroidManifest.xml"/> - - - - @@ -92,7 +81,7 @@ errorLine2=" ~~~~"> @@ -113,7 +102,7 @@ errorLine1="distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -124,73 +113,73 @@ errorLine1="gradlePlugins-agp = "8.11.1"" errorLine2=" ~~~~~~~~"> @@ -201,22 +190,11 @@ errorLine1="androidx-ktx = "2.8.6"" errorLine2=" ~~~~~~~"> - - - - + + + +