From eebc4d4ee45185c3b6e70709774ee4a2724af049 Mon Sep 17 00:00:00 2001 From: Anthony La Date: Mon, 4 Nov 2024 11:02:11 -0800 Subject: [PATCH] Fixed slow updates when wallpaper changing --- .../wallpaper_service/HomeWallpaperService.kt | 165 +++++++++--------- .../wallpaper_service/LockWallpaperService.kt | 136 ++++++++------- 2 files changed, 157 insertions(+), 144 deletions(-) diff --git a/app/src/main/java/com/anthonyla/paperize/feature/wallpaper/wallpaper_service/HomeWallpaperService.kt b/app/src/main/java/com/anthonyla/paperize/feature/wallpaper/wallpaper_service/HomeWallpaperService.kt index 35eed471..a6ba2c1c 100644 --- a/app/src/main/java/com/anthonyla/paperize/feature/wallpaper/wallpaper_service/HomeWallpaperService.kt +++ b/app/src/main/java/com/anthonyla/paperize/feature/wallpaper/wallpaper_service/HomeWallpaperService.kt @@ -21,6 +21,7 @@ import com.anthonyla.paperize.core.SettingsConstants import com.anthonyla.paperize.core.Type import com.anthonyla.paperize.core.getDeviceScreenSize import com.anthonyla.paperize.core.getWallpaperFromFolder +import com.anthonyla.paperize.core.isValidUri import com.anthonyla.paperize.core.processBitmap import com.anthonyla.paperize.core.retrieveBitmap import com.anthonyla.paperize.data.settings.SettingsDataStore @@ -105,7 +106,7 @@ class HomeWallpaperService: Service() { private fun workerTaskStart() { workerHandler.post { CoroutineScope(Dispatchers.IO).launch { - delay(250) // To ensure lock screen wallpaper is set first + delay(20) // To ensure lock screen wallpaper is set first changeWallpaper(this@HomeWallpaperService) } stopSelf() @@ -198,23 +199,24 @@ class HomeWallpaperService: Service() { return } else { - val success = setWallpaper( - context = context, - wallpaper = wallpaper.toUri(), - darken = darken, - darkenPercent = homeDarkenPercentage, - scaling = scaling, - blur = blur, - blurPercent = homeBlurPercentage, - vignette = vignette, - vignettePercent = homeVignettePercentage, - grayscale = grayscale, - grayscalePercent = homeGrayscalePercentage - ) + val success = isValidUri(context, wallpaper) settingsDataStoreImpl.putString(SettingsConstants.NEXT_HOME_WALLPAPER, if (newWallpapers.size > 1) newWallpapers[1] else homeAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") if (success) { selectedRepository.upsertSelectedAlbum(homeAlbum.copy(album = homeAlbum.album.copy(homeWallpapersInQueue = newWallpapers.drop(1)))) settingsDataStoreImpl.putString(SettingsConstants.CURRENT_HOME_WALLPAPER, wallpaper.toString()) + setWallpaper( + context = context, + wallpaper = wallpaper.toUri(), + darken = darken, + darkenPercent = homeDarkenPercentage, + scaling = scaling, + blur = blur, + blurPercent = homeBlurPercentage, + vignette = vignette, + vignettePercent = homeVignettePercentage, + grayscale = grayscale, + grayscalePercent = homeGrayscalePercentage + ) } else { val wallpaperToDelete = homeAlbum.wallpapers.find { it.wallpaperUri == wallpaper } @@ -234,19 +236,7 @@ class HomeWallpaperService: Service() { } } else { - val success = setWallpaper( - context = context, - wallpaper = wallpaper.toUri(), - darken = darken, - darkenPercent = homeDarkenPercentage, - scaling = scaling, - blur = blur, - blurPercent = homeBlurPercentage, - vignette = vignette, - vignettePercent = homeVignettePercentage, - grayscale = grayscale, - grayscalePercent = homeGrayscalePercentage - ) + val success = isValidUri(context, wallpaper) settingsDataStoreImpl.putString(SettingsConstants.NEXT_HOME_WALLPAPER, if (homeAlbum.album.homeWallpapersInQueue.size > 1) homeAlbum.album.homeWallpapersInQueue[1] else homeAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") if ((homeInterval % lockInterval == 0) || (lockInterval % homeInterval == 0) && (homeAlbumName == lockAlbumName)) { delay(1000) @@ -257,6 +247,19 @@ class HomeWallpaperService: Service() { if (success) { selectedRepository.upsertSelectedAlbum(homeAlbum.copy(album = homeAlbum.album.copy(homeWallpapersInQueue = homeAlbum.album.homeWallpapersInQueue.drop(1)))) settingsDataStoreImpl.putString(SettingsConstants.CURRENT_HOME_WALLPAPER, wallpaper.toString()) + setWallpaper( + context = context, + wallpaper = wallpaper.toUri(), + darken = darken, + darkenPercent = homeDarkenPercentage, + scaling = scaling, + blur = blur, + blurPercent = homeBlurPercentage, + vignette = vignette, + vignettePercent = homeVignettePercentage, + grayscale = grayscale, + grayscalePercent = homeGrayscalePercentage + ) } else { val wallpaperToDelete = homeAlbum.wallpapers.find { it.wallpaperUri == wallpaper } @@ -288,25 +291,26 @@ class HomeWallpaperService: Service() { return } else { - val success = setWallpaper( - context = context, - wallpaper = wallpaper.toUri(), - darken = darken, - darkenPercent = homeDarkenPercentage, - scaling = scaling, - blur = blur, - blurPercent = homeBlurPercentage, - vignette = vignette, - vignettePercent = homeVignettePercentage, - grayscale = grayscale, - grayscalePercent = homeGrayscalePercentage - ) + val success = isValidUri(context, wallpaper) settingsDataStoreImpl.putString(SettingsConstants.NEXT_HOME_WALLPAPER, if (homeAlbum.album.homeWallpapersInQueue.size > 1) homeAlbum.album.homeWallpapersInQueue[1] else homeAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") if (success) { if (newWallpapers.size > 1) { selectedRepository.upsertSelectedAlbum(homeAlbum.copy(album = homeAlbum.album.copy(homeWallpapersInQueue = newWallpapers.drop(1)))) } settingsDataStoreImpl.putString(SettingsConstants.CURRENT_HOME_WALLPAPER, wallpaper.toString()) + setWallpaper( + context = context, + wallpaper = wallpaper.toUri(), + darken = darken, + darkenPercent = homeDarkenPercentage, + scaling = scaling, + blur = blur, + blurPercent = homeBlurPercentage, + vignette = vignette, + vignettePercent = homeVignettePercentage, + grayscale = grayscale, + grayscalePercent = homeGrayscalePercentage + ) } else { val wallpaperToDelete = homeAlbum.wallpapers.find { it.wallpaperUri == wallpaper } @@ -326,19 +330,7 @@ class HomeWallpaperService: Service() { } } else { - val success = setWallpaper( - context = context, - wallpaper = wallpaper.toUri(), - darken = darken, - darkenPercent = homeDarkenPercentage, - scaling = scaling, - blur = blur, - blurPercent = homeBlurPercentage, - vignette = vignette, - vignettePercent = homeVignettePercentage, - grayscale = grayscale, - grayscalePercent = homeGrayscalePercentage - ) + val success = isValidUri(context, wallpaper) settingsDataStoreImpl.putString(SettingsConstants.NEXT_HOME_WALLPAPER, if (homeAlbum.album.homeWallpapersInQueue.size > 1) homeAlbum.album.homeWallpapersInQueue[1] else homeAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") if (success) { if (homeAlbum.album.homeWallpapersInQueue.size > 1) { @@ -356,6 +348,19 @@ class HomeWallpaperService: Service() { } } settingsDataStoreImpl.putString(SettingsConstants.CURRENT_HOME_WALLPAPER, wallpaper.toString()) + setWallpaper( + context = context, + wallpaper = wallpaper.toUri(), + darken = darken, + darkenPercent = homeDarkenPercentage, + scaling = scaling, + blur = blur, + blurPercent = homeBlurPercentage, + vignette = vignette, + vignettePercent = homeVignettePercentage, + grayscale = grayscale, + grayscalePercent = homeGrayscalePercentage + ) } else { val wallpaperToDelete = homeAlbum.wallpapers.find { it.wallpaperUri == wallpaper } @@ -386,25 +391,26 @@ class HomeWallpaperService: Service() { return } else { - val success = setWallpaper( - context = context, - wallpaper = wallpaper.toUri(), - darken = darken, - darkenPercent = homeDarkenPercentage, - scaling = scaling, - blur = blur, - blurPercent = homeBlurPercentage, - vignette = vignette, - vignettePercent = homeVignettePercentage, - grayscale = grayscale, - grayscalePercent = homeGrayscalePercentage - ) + val success = isValidUri(context, wallpaper) settingsDataStoreImpl.putString(SettingsConstants.NEXT_HOME_WALLPAPER, if (homeAlbum.album.homeWallpapersInQueue.size > 1) homeAlbum.album.homeWallpapersInQueue[1] else homeAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") settingsDataStoreImpl.putString(SettingsConstants.NEXT_LOCK_WALLPAPER, if (homeAlbum.album.homeWallpapersInQueue.size > 1) homeAlbum.album.homeWallpapersInQueue[1] else homeAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") if (success) { selectedRepository.upsertSelectedAlbum(homeAlbum.copy(album = homeAlbum.album.copy(homeWallpapersInQueue = newWallpapers.drop(1)))) settingsDataStoreImpl.putString(SettingsConstants.CURRENT_HOME_WALLPAPER, wallpaper.toString()) settingsDataStoreImpl.putString(SettingsConstants.CURRENT_LOCK_WALLPAPER, wallpaper.toString()) + setWallpaper( + context = context, + wallpaper = wallpaper.toUri(), + darken = darken, + darkenPercent = homeDarkenPercentage, + scaling = scaling, + blur = blur, + blurPercent = homeBlurPercentage, + vignette = vignette, + vignettePercent = homeVignettePercentage, + grayscale = grayscale, + grayscalePercent = homeGrayscalePercentage + ) } else { @@ -425,25 +431,26 @@ class HomeWallpaperService: Service() { } } else { - val success = setWallpaper( - context = context, - wallpaper = wallpaper.toUri(), - darken = darken, - darkenPercent = homeDarkenPercentage, - scaling = scaling, - blur = blur, - blurPercent = homeBlurPercentage, - vignette = vignette, - vignettePercent = homeVignettePercentage, - grayscale = grayscale, - grayscalePercent = homeGrayscalePercentage - ) + val success = isValidUri(context, wallpaper) settingsDataStoreImpl.putString(SettingsConstants.NEXT_HOME_WALLPAPER, if (homeAlbum.album.homeWallpapersInQueue.size > 1) homeAlbum.album.homeWallpapersInQueue[1] else homeAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") settingsDataStoreImpl.putString(SettingsConstants.NEXT_LOCK_WALLPAPER, if (homeAlbum.album.homeWallpapersInQueue.size > 1) homeAlbum.album.homeWallpapersInQueue[1] else homeAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") if (success) { selectedRepository.upsertSelectedAlbum(homeAlbum.copy(album = homeAlbum.album.copy(homeWallpapersInQueue = homeAlbum.album.homeWallpapersInQueue.drop(1)))) settingsDataStoreImpl.putString(SettingsConstants.CURRENT_HOME_WALLPAPER, wallpaper.toString()) settingsDataStoreImpl.putString(SettingsConstants.CURRENT_LOCK_WALLPAPER, wallpaper.toString()) + setWallpaper( + context = context, + wallpaper = wallpaper.toUri(), + darken = darken, + darkenPercent = homeDarkenPercentage, + scaling = scaling, + blur = blur, + blurPercent = homeBlurPercentage, + vignette = vignette, + vignettePercent = homeVignettePercentage, + grayscale = grayscale, + grayscalePercent = homeGrayscalePercentage + ) } else { val wallpaperToDelete = homeAlbum.wallpapers.find { it.wallpaperUri == wallpaper } diff --git a/app/src/main/java/com/anthonyla/paperize/feature/wallpaper/wallpaper_service/LockWallpaperService.kt b/app/src/main/java/com/anthonyla/paperize/feature/wallpaper/wallpaper_service/LockWallpaperService.kt index 15aee130..10b912f4 100644 --- a/app/src/main/java/com/anthonyla/paperize/feature/wallpaper/wallpaper_service/LockWallpaperService.kt +++ b/app/src/main/java/com/anthonyla/paperize/feature/wallpaper/wallpaper_service/LockWallpaperService.kt @@ -21,6 +21,7 @@ import com.anthonyla.paperize.core.SettingsConstants import com.anthonyla.paperize.core.Type import com.anthonyla.paperize.core.getDeviceScreenSize import com.anthonyla.paperize.core.getWallpaperFromFolder +import com.anthonyla.paperize.core.isValidUri import com.anthonyla.paperize.core.processBitmap import com.anthonyla.paperize.core.retrieveBitmap import com.anthonyla.paperize.data.settings.SettingsDataStore @@ -199,23 +200,24 @@ class LockWallpaperService: Service() { return } else { - val success = setWallpaper( - context = context, - wallpaper = wallpaper.toUri(), - darken = darken, - darkenPercent = lockDarkenPercentage, - scaling = scaling, - blur = blur, - blurPercent = lockBlurPercentage, - vignette = vignette, - vignettePercent = lockVignettePercentage, - grayscale = grayscale, - grayscalePercent = lockGrayscalePercentage - ) + val success = isValidUri(context, wallpaper) settingsDataStoreImpl.putString(SettingsConstants.NEXT_LOCK_WALLPAPER, if (newWallpapers.size > 1) newWallpapers[1] else lockAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") if (success) { selectedRepository.upsertSelectedAlbum(lockAlbum.copy(album = lockAlbum.album.copy(lockWallpapersInQueue = newWallpapers.drop(1)))) settingsDataStoreImpl.putString(SettingsConstants.CURRENT_LOCK_WALLPAPER, wallpaper.toString()) + setWallpaper( + context = context, + wallpaper = wallpaper.toUri(), + darken = darken, + darkenPercent = lockDarkenPercentage, + scaling = scaling, + blur = blur, + blurPercent = lockBlurPercentage, + vignette = vignette, + vignettePercent = lockVignettePercentage, + grayscale = grayscale, + grayscalePercent = lockGrayscalePercentage + ) } else { val wallpaperToDelete = lockAlbum.wallpapers.find { it.wallpaperUri == wallpaper } @@ -235,23 +237,24 @@ class LockWallpaperService: Service() { } } else { - val success = setWallpaper( - context = context, - wallpaper = wallpaper.toUri(), - darken = darken, - darkenPercent = lockDarkenPercentage, - scaling = scaling, - blur = blur, - blurPercent = lockBlurPercentage, - vignette = vignette, - vignettePercent = lockVignettePercentage, - grayscale = grayscale, - grayscalePercent = lockGrayscalePercentage - ) + val success = isValidUri(context, wallpaper) settingsDataStoreImpl.putString(SettingsConstants.NEXT_LOCK_WALLPAPER, if (lockAlbum.album.lockWallpapersInQueue.size > 1) lockAlbum.album.lockWallpapersInQueue[1] else lockAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") if (success) { selectedRepository.upsertSelectedAlbum(lockAlbum.copy(album = lockAlbum.album.copy(lockWallpapersInQueue = lockAlbum.album.lockWallpapersInQueue.drop(1)))) settingsDataStoreImpl.putString(SettingsConstants.CURRENT_LOCK_WALLPAPER, wallpaper.toString()) + setWallpaper( + context = context, + wallpaper = wallpaper.toUri(), + darken = darken, + darkenPercent = lockDarkenPercentage, + scaling = scaling, + blur = blur, + blurPercent = lockBlurPercentage, + vignette = vignette, + vignettePercent = lockVignettePercentage, + grayscale = grayscale, + grayscalePercent = lockGrayscalePercentage + ) } else { val wallpaperToDelete = lockAlbum.wallpapers.find { it.wallpaperUri == wallpaper } @@ -285,22 +288,23 @@ class LockWallpaperService: Service() { } val wallpaper = homeAlbum.album.homeWallpapersInQueue.firstOrNull() if (wallpaper != null) { - val success = setWallpaper( - context = context, - wallpaper = wallpaper.toUri(), - darken = darken, - darkenPercent = lockDarkenPercentage, - scaling = scaling, - blur = blur, - blurPercent = lockBlurPercentage, - vignette = vignette, - vignettePercent = lockVignettePercentage, - grayscale = grayscale, - grayscalePercent = lockGrayscalePercentage - ) + val success = isValidUri(context, wallpaper) settingsDataStoreImpl.putString(SettingsConstants.NEXT_LOCK_WALLPAPER, if (homeAlbum.album.homeWallpapersInQueue.size > 1) homeAlbum.album.homeWallpapersInQueue[1] else homeAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") if (success) { settingsDataStoreImpl.putString(SettingsConstants.CURRENT_LOCK_WALLPAPER, wallpaper.toString()) + setWallpaper( + context = context, + wallpaper = wallpaper.toUri(), + darken = darken, + darkenPercent = lockDarkenPercentage, + scaling = scaling, + blur = blur, + blurPercent = lockBlurPercentage, + vignette = vignette, + vignettePercent = lockVignettePercentage, + grayscale = grayscale, + grayscalePercent = lockGrayscalePercentage + ) } } } @@ -316,25 +320,26 @@ class LockWallpaperService: Service() { return } else { - val success = setWallpaper( - context = context, - wallpaper = wallpaper.toUri(), - darken = darken, - darkenPercent = homeDarkenPercentage, - scaling = scaling, - blur = blur, - blurPercent = homeBlurPercentage, - vignette = vignette, - vignettePercent = homeVignettePercentage, - grayscale = grayscale, - grayscalePercent = homeGrayscalePercentage - ) + val success = isValidUri(context, wallpaper) settingsDataStoreImpl.putString(SettingsConstants.NEXT_LOCK_WALLPAPER, if (newWallpapers.size > 1) newWallpapers[1] else lockAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") settingsDataStoreImpl.putString(SettingsConstants.NEXT_HOME_WALLPAPER, if (newWallpapers.size > 1) newWallpapers[1] else lockAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") if (success) { selectedRepository.upsertSelectedAlbum(lockAlbum.copy(album = lockAlbum.album.copy(lockWallpapersInQueue = newWallpapers.drop(1)))) settingsDataStoreImpl.putString(SettingsConstants.CURRENT_LOCK_WALLPAPER, wallpaper.toString()) settingsDataStoreImpl.putString(SettingsConstants.CURRENT_HOME_WALLPAPER, wallpaper.toString()) + setWallpaper( + context = context, + wallpaper = wallpaper.toUri(), + darken = darken, + darkenPercent = homeDarkenPercentage, + scaling = scaling, + blur = blur, + blurPercent = homeBlurPercentage, + vignette = vignette, + vignettePercent = homeVignettePercentage, + grayscale = grayscale, + grayscalePercent = homeGrayscalePercentage + ) } else { val wallpaperToDelete = lockAlbum.wallpapers.find { it.wallpaperUri == wallpaper } @@ -354,25 +359,26 @@ class LockWallpaperService: Service() { } } else { - val success = setWallpaper( - context = context, - wallpaper = wallpaper.toUri(), - darken = darken, - darkenPercent = homeDarkenPercentage, - scaling = scaling, - blur = blur, - blurPercent = homeBlurPercentage, - vignette = vignette, - vignettePercent = homeVignettePercentage, - grayscale = grayscale, - grayscalePercent = homeGrayscalePercentage - ) + val success = isValidUri(context, wallpaper) settingsDataStoreImpl.putString(SettingsConstants.NEXT_LOCK_WALLPAPER, if (lockAlbum.album.lockWallpapersInQueue.size > 1) lockAlbum.album.lockWallpapersInQueue[1] else lockAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") settingsDataStoreImpl.putString(SettingsConstants.NEXT_HOME_WALLPAPER, if (lockAlbum.album.lockWallpapersInQueue.size > 1) lockAlbum.album.lockWallpapersInQueue[1] else lockAlbum.wallpapers.firstOrNull()?.wallpaperUri ?: "") if (success) { selectedRepository.upsertSelectedAlbum(lockAlbum.copy(album = lockAlbum.album.copy(lockWallpapersInQueue = lockAlbum.album.lockWallpapersInQueue.drop(1)))) settingsDataStoreImpl.putString(SettingsConstants.CURRENT_LOCK_WALLPAPER, wallpaper.toString()) settingsDataStoreImpl.putString(SettingsConstants.CURRENT_HOME_WALLPAPER, wallpaper.toString()) + setWallpaper( + context = context, + wallpaper = wallpaper.toUri(), + darken = darken, + darkenPercent = homeDarkenPercentage, + scaling = scaling, + blur = blur, + blurPercent = homeBlurPercentage, + vignette = vignette, + vignettePercent = homeVignettePercentage, + grayscale = grayscale, + grayscalePercent = homeGrayscalePercentage + ) } else { val wallpaperToDelete = lockAlbum.wallpapers.find { it.wallpaperUri == wallpaper }