diff options
author | Tony <twickham@google.com> | 2017-06-02 19:33:49 -0700 |
---|---|---|
committer | Tony <twickham@google.com> | 2017-06-02 19:33:49 -0700 |
commit | f514f207c2f2e22c4df179ce0d8eb16966e6b5dc (patch) | |
tree | a6f24dd793e437135bb4624d15f75eae5a77e085 /src/com/android/launcher3/dynamicui | |
parent | d74633cbc559109e57b0f4531fb6556e79d7a453 (diff) | |
parent | 629a67c5ac33409ebccf13284505a4cadc65656a (diff) | |
download | android_packages_apps_Trebuchet-f514f207c2f2e22c4df179ce0d8eb16966e6b5dc.tar.gz android_packages_apps_Trebuchet-f514f207c2f2e22c4df179ce0d8eb16966e6b5dc.tar.bz2 android_packages_apps_Trebuchet-f514f207c2f2e22c4df179ce0d8eb16966e6b5dc.zip |
resolve merge conflicts of 629a67c5a to ub-launcher3-dorval-polish
Test: I solemnly swear I tested this conflict resolution.
Change-Id: I5aed3f0c978976c499b532c816d81196cb11e3a1
Diffstat (limited to 'src/com/android/launcher3/dynamicui')
-rw-r--r-- | src/com/android/launcher3/dynamicui/ColorExtractionService.java | 105 | ||||
-rw-r--r-- | src/com/android/launcher3/dynamicui/ExtractionUtils.java | 10 |
2 files changed, 77 insertions, 38 deletions
diff --git a/src/com/android/launcher3/dynamicui/ColorExtractionService.java b/src/com/android/launcher3/dynamicui/ColorExtractionService.java index 06a4dabdd..b9dd3b588 100644 --- a/src/com/android/launcher3/dynamicui/ColorExtractionService.java +++ b/src/com/android/launcher3/dynamicui/ColorExtractionService.java @@ -17,9 +17,9 @@ package com.android.launcher3.dynamicui; import android.annotation.TargetApi; -import android.app.IntentService; import android.app.WallpaperManager; -import android.content.Intent; +import android.app.job.JobParameters; +import android.app.job.JobService; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.BitmapRegionDecoder; @@ -27,6 +27,8 @@ import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.os.Build; import android.os.Bundle; +import android.os.Handler; +import android.os.HandlerThread; import android.os.ParcelFileDescriptor; import android.support.v7.graphics.Palette; import android.util.Log; @@ -42,53 +44,84 @@ import java.io.IOException; /** * Extracts colors from the wallpaper, and saves results to {@link LauncherProvider}. */ -public class ColorExtractionService extends IntentService { +public class ColorExtractionService extends JobService { private static final String TAG = "ColorExtractionService"; + private static final boolean DEBUG = false; /** The fraction of the wallpaper to extract colors for use on the hotseat. */ private static final float HOTSEAT_FRACTION = 1f / 4; - public ColorExtractionService() { - super("ColorExtractionService"); - } + private HandlerThread mWorkerThread; + private Handler mWorkerHandler; @Override - protected void onHandleIntent(Intent intent) { - WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); - int wallpaperId = ExtractionUtils.getWallpaperId(wallpaperManager); - - ExtractedColors extractedColors = new ExtractedColors(); - if (wallpaperManager.getWallpaperInfo() != null) { - // We can't extract colors from live wallpapers, so just use the default color always. - extractedColors.updateHotseatPalette(null); + public void onCreate() { + super.onCreate(); + mWorkerThread = new HandlerThread("ColorExtractionService"); + mWorkerThread.start(); + mWorkerHandler = new Handler(mWorkerThread.getLooper()); + } - if (FeatureFlags.QSB_IN_HOTSEAT || FeatureFlags.LAUNCHER3_GRADIENT_ALL_APPS) { - extractedColors.updateWallpaperThemePalette(null); - } - } else { - // We extract colors for the hotseat and status bar separately, - // since they only consider part of the wallpaper. - extractedColors.updateHotseatPalette(getHotseatPalette()); + @Override + public void onDestroy() { + super.onDestroy(); + mWorkerThread.quit(); + } - if (FeatureFlags.LIGHT_STATUS_BAR) { - extractedColors.updateStatusBarPalette(getStatusBarPalette()); - } + @Override + public boolean onStartJob(final JobParameters jobParameters) { + if (DEBUG) Log.d(TAG, "onStartJob"); + mWorkerHandler.post(new Runnable() { + @Override + public void run() { + WallpaperManager wallpaperManager = WallpaperManager.getInstance( + ColorExtractionService.this); + int wallpaperId = ExtractionUtils.getWallpaperId(wallpaperManager); + + ExtractedColors extractedColors = new ExtractedColors(); + if (wallpaperManager.getWallpaperInfo() != null) { + // We can't extract colors from live wallpapers; always use the default color. + extractedColors.updateHotseatPalette(null); + + if (FeatureFlags.QSB_IN_HOTSEAT || FeatureFlags.LAUNCHER3_GRADIENT_ALL_APPS) { + extractedColors.updateWallpaperThemePalette(null); + } + } else { + // We extract colors for the hotseat and status bar separately, + // since they only consider part of the wallpaper. + extractedColors.updateHotseatPalette(getHotseatPalette()); + + if (FeatureFlags.LIGHT_STATUS_BAR) { + extractedColors.updateStatusBarPalette(getStatusBarPalette()); + } + + if (FeatureFlags.QSB_IN_HOTSEAT || FeatureFlags.LAUNCHER3_GRADIENT_ALL_APPS) { + extractedColors.updateWallpaperThemePalette(getWallpaperPalette()); + } + } - if (FeatureFlags.QSB_IN_HOTSEAT || FeatureFlags.LAUNCHER3_GRADIENT_ALL_APPS) { - extractedColors.updateWallpaperThemePalette(getWallpaperPalette()); + // Save the extracted colors and wallpaper id to LauncherProvider. + String colorsString = extractedColors.encodeAsString(); + Bundle extras = new Bundle(); + extras.putInt(LauncherSettings.Settings.EXTRA_WALLPAPER_ID, wallpaperId); + extras.putString(LauncherSettings.Settings.EXTRA_EXTRACTED_COLORS, colorsString); + getContentResolver().call( + LauncherSettings.Settings.CONTENT_URI, + LauncherSettings.Settings.METHOD_SET_EXTRACTED_COLORS_AND_WALLPAPER_ID, + null, extras); + jobFinished(jobParameters, false /* needsReschedule */); + if (DEBUG) Log.d(TAG, "job finished!"); } - } + }); + return true; + } - // Save the extracted colors and wallpaper id to LauncherProvider. - String colorsString = extractedColors.encodeAsString(); - Bundle extras = new Bundle(); - extras.putInt(LauncherSettings.Settings.EXTRA_WALLPAPER_ID, wallpaperId); - extras.putString(LauncherSettings.Settings.EXTRA_EXTRACTED_COLORS, colorsString); - getContentResolver().call( - LauncherSettings.Settings.CONTENT_URI, - LauncherSettings.Settings.METHOD_SET_EXTRACTED_COLORS_AND_WALLPAPER_ID, - null, extras); + @Override + public boolean onStopJob(JobParameters jobParameters) { + if (DEBUG) Log.d(TAG, "onStopJob"); + mWorkerHandler.removeCallbacksAndMessages(null); + return true; } @TargetApi(Build.VERSION_CODES.N) diff --git a/src/com/android/launcher3/dynamicui/ExtractionUtils.java b/src/com/android/launcher3/dynamicui/ExtractionUtils.java index 1cf5d55e0..92cb5dc08 100644 --- a/src/com/android/launcher3/dynamicui/ExtractionUtils.java +++ b/src/com/android/launcher3/dynamicui/ExtractionUtils.java @@ -18,8 +18,10 @@ package com.android.launcher3.dynamicui; import android.annotation.TargetApi; import android.app.WallpaperManager; +import android.app.job.JobInfo; +import android.app.job.JobScheduler; +import android.content.ComponentName; import android.content.Context; -import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; import android.os.Build; @@ -58,7 +60,11 @@ public class ExtractionUtils { /** Starts the {@link ColorExtractionService} without checking the wallpaper id */ public static void startColorExtractionService(Context context) { - context.startService(new Intent(context, ColorExtractionService.class)); + JobScheduler jobScheduler = (JobScheduler) context.getSystemService( + Context.JOB_SCHEDULER_SERVICE); + jobScheduler.schedule(new JobInfo.Builder(Utilities.COLOR_EXTRACTION_JOB_ID, + new ComponentName(context, ColorExtractionService.class)) + .setMinimumLatency(0).build()); } private static boolean hasWallpaperIdChanged(Context context) { |