Loading packages/SystemUI/AndroidManifest.xml +0 −9 Original line number Diff line number Diff line Loading @@ -1067,15 +1067,6 @@ android:exported="true"> </provider> <!-- Provides list and realistic previews of clock faces for the picker app. --> <provider android:name="com.android.keyguard.clock.ClockOptionsProvider" android:authorities="com.android.keyguard.clock" android:enabled="false" android:exported="false" android:grantUriPermissions="true"> </provider> <receiver android:name=".statusbar.KeyboardShortcutsReceiver" android:exported="true"> Loading packages/SystemUI/compose/features/tests/AndroidManifest.xml +0 −5 Original line number Diff line number Diff line Loading @@ -40,11 +40,6 @@ android:enabled="false" tools:replace="android:authorities" tools:node="remove" /> <provider android:name="com.android.keyguard.clock.ClockOptionsProvider" android:authorities="com.android.systemui.test.keyguard.clock.disabled" android:enabled="false" tools:replace="android:authorities" tools:node="remove" /> <provider android:name="com.android.systemui.people.PeopleProvider" android:authorities="com.android.systemui.test.people.disabled" android:enabled="false" Loading packages/SystemUI/docs/clock-plugins.md +2 −2 Original line number Diff line number Diff line # Clock Plugins The clock appearing on the lock screen and always on display (AOD) can be customized via the ClockProviderPlugin plugin interface. The clock appearing on the lock screen and always on display (AOD) can be customized via the ClockProviderPlugin plugin interface. The ClockPlugin interface has been removed. ## Lock screen integration The lockscreen code has two main components, a [clock customization library](../customization), and Loading packages/SystemUI/plugin/src/com/android/systemui/plugins/ClockPlugin.javadeleted 100644 → 0 +0 −145 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.android.systemui.plugins; import android.graphics.Bitmap; import android.graphics.Paint.Style; import android.view.View; import com.android.systemui.plugins.annotations.ProvidesInterface; import java.util.TimeZone; /** * Plugin used to replace main clock in keyguard. * @deprecated Migrating to ClockProviderPlugin */ @Deprecated @ProvidesInterface(action = ClockPlugin.ACTION, version = ClockPlugin.VERSION) public interface ClockPlugin extends Plugin { String ACTION = "com.android.systemui.action.PLUGIN_CLOCK"; int VERSION = 5; /** * Get the name of the clock face. * * This name should not be translated. */ String getName(); /** * Get the title of the clock face to be shown in the picker app. */ String getTitle(); /** * Get thumbnail of clock face to be shown in the picker app. */ Bitmap getThumbnail(); /** * Get preview images of clock face to be shown in the picker app. * * Preview image should be realistic and show what the clock face will look like on AOD and lock * screen. * * @param width width of the preview image, should be the same as device width in pixels. * @param height height of the preview image, should be the same as device height in pixels. */ Bitmap getPreview(int width, int height); /** * Get clock view. * @return clock view from plugin. */ View getView(); /** * Get clock view for a large clock that appears behind NSSL. */ default View getBigClockView() { return null; } /** * Returns the preferred Y position of the clock. * * @param totalHeight Height of the parent container. * @return preferred Y position. */ int getPreferredY(int totalHeight); /** * Allows the plugin to clean up resources when no longer needed. * * Called when the view previously created by {@link ClockPlugin#getView()} has been detached * from the view hierarchy. */ void onDestroyView(); /** * Set clock paint style. * @param style The new style to set in the paint. */ void setStyle(Style style); /** * Set clock text color. * @param color A color value. */ void setTextColor(int color); /** * Sets the color palette for the clock face. * @param supportsDarkText Whether dark text can be displayed. * @param colors Colors that should be used on the clock face, ordered from darker to lighter. */ default void setColorPalette(boolean supportsDarkText, int[] colors) {} /** * Set the amount (ratio) that the device has transitioned to doze. * @param darkAmount Amount of transition to doze: 1f for doze and 0f for awake. */ default void setDarkAmount(float darkAmount) {} /** * Notifies that time tick alarm from doze service fired. * * Implement this method instead of registering a broadcast listener for TIME_TICK. */ default void onTimeTick() {} /** * Notifies that the time zone has changed. * * Implement this method instead of registering a broadcast listener for TIME_ZONE_CHANGED. */ default void onTimeZoneChanged(TimeZone timeZone) {} /** * Notifies that the time format has changed. * * @param timeFormat "12" for 12-hour format, "24" for 24-hour format */ default void onTimeFormatChanged(String timeFormat) {} /** * Indicates whether the keyguard status area (date) should be shown below * the clock. */ default boolean shouldShowStatusArea() { return true; } } packages/SystemUI/src/com/android/keyguard/clock/AnalogClockController.javadeleted 100644 → 0 +0 −210 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.keyguard.clock; import android.app.WallpaperManager; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.Paint.Style; import android.view.LayoutInflater; import android.view.View; import android.widget.TextClock; import com.android.internal.colorextraction.ColorExtractor; import com.android.systemui.R; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.plugins.ClockPlugin; import java.util.TimeZone; /** * Controller for Stretch clock that can appear on lock screen and AOD. */ public class AnalogClockController implements ClockPlugin { /** * Resources used to get title and thumbnail. */ private final Resources mResources; /** * LayoutInflater used to inflate custom clock views. */ private final LayoutInflater mLayoutInflater; /** * Extracts accent color from wallpaper. */ private final SysuiColorExtractor mColorExtractor; /** * Computes preferred position of clock. */ private final SmallClockPosition mClockPosition; /** * Renders preview from clock view. */ private final ViewPreviewer mRenderer = new ViewPreviewer(); /** * Custom clock shown on AOD screen and behind stack scroller on lock. */ private ClockLayout mBigClockView; private ImageClock mAnalogClock; /** * Small clock shown on lock screen above stack scroller. */ private View mView; private TextClock mLockClock; /** * Helper to extract colors from wallpaper palette for clock face. */ private final ClockPalette mPalette = new ClockPalette(); /** * Create a BubbleClockController instance. * * @param res Resources contains title and thumbnail. * @param inflater Inflater used to inflate custom clock views. * @param colorExtractor Extracts accent color from wallpaper. */ public AnalogClockController(Resources res, LayoutInflater inflater, SysuiColorExtractor colorExtractor) { mResources = res; mLayoutInflater = inflater; mColorExtractor = colorExtractor; mClockPosition = new SmallClockPosition(inflater.getContext()); } private void createViews() { mBigClockView = (ClockLayout) mLayoutInflater.inflate(R.layout.analog_clock, null); mAnalogClock = mBigClockView.findViewById(R.id.analog_clock); mView = mLayoutInflater.inflate(R.layout.digital_clock, null); mLockClock = mView.findViewById(R.id.lock_screen_clock); } @Override public void onDestroyView() { mBigClockView = null; mAnalogClock = null; mView = null; mLockClock = null; } @Override public String getName() { return "analog"; } @Override public String getTitle() { return mResources.getString(R.string.clock_title_analog); } @Override public Bitmap getThumbnail() { return BitmapFactory.decodeResource(mResources, R.drawable.analog_thumbnail); } @Override public Bitmap getPreview(int width, int height) { // Use the big clock view for the preview View view = getBigClockView(); // Initialize state of plugin before generating preview. setDarkAmount(1f); setTextColor(Color.WHITE); ColorExtractor.GradientColors colors = mColorExtractor.getColors( WallpaperManager.FLAG_LOCK); setColorPalette(colors.supportsDarkText(), colors.getColorPalette()); onTimeTick(); return mRenderer.createPreview(view, width, height); } @Override public View getView() { if (mView == null) { createViews(); } return mView; } @Override public View getBigClockView() { if (mBigClockView == null) { createViews(); } return mBigClockView; } @Override public int getPreferredY(int totalHeight) { return mClockPosition.getPreferredY(); } @Override public void setStyle(Style style) {} @Override public void setTextColor(int color) { updateColor(); } @Override public void setColorPalette(boolean supportsDarkText, int[] colorPalette) { mPalette.setColorPalette(supportsDarkText, colorPalette); updateColor(); } private void updateColor() { final int primary = mPalette.getPrimaryColor(); final int secondary = mPalette.getSecondaryColor(); mLockClock.setTextColor(secondary); mAnalogClock.setClockColors(primary, secondary); } @Override public void onTimeTick() { mAnalogClock.onTimeChanged(); mBigClockView.onTimeChanged(); mLockClock.refreshTime(); } @Override public void setDarkAmount(float darkAmount) { mPalette.setDarkAmount(darkAmount); mClockPosition.setDarkAmount(darkAmount); mBigClockView.setDarkAmount(darkAmount); } @Override public void onTimeZoneChanged(TimeZone timeZone) { mAnalogClock.onTimeZoneChanged(timeZone); } @Override public boolean shouldShowStatusArea() { return true; } } Loading
packages/SystemUI/AndroidManifest.xml +0 −9 Original line number Diff line number Diff line Loading @@ -1067,15 +1067,6 @@ android:exported="true"> </provider> <!-- Provides list and realistic previews of clock faces for the picker app. --> <provider android:name="com.android.keyguard.clock.ClockOptionsProvider" android:authorities="com.android.keyguard.clock" android:enabled="false" android:exported="false" android:grantUriPermissions="true"> </provider> <receiver android:name=".statusbar.KeyboardShortcutsReceiver" android:exported="true"> Loading
packages/SystemUI/compose/features/tests/AndroidManifest.xml +0 −5 Original line number Diff line number Diff line Loading @@ -40,11 +40,6 @@ android:enabled="false" tools:replace="android:authorities" tools:node="remove" /> <provider android:name="com.android.keyguard.clock.ClockOptionsProvider" android:authorities="com.android.systemui.test.keyguard.clock.disabled" android:enabled="false" tools:replace="android:authorities" tools:node="remove" /> <provider android:name="com.android.systemui.people.PeopleProvider" android:authorities="com.android.systemui.test.people.disabled" android:enabled="false" Loading
packages/SystemUI/docs/clock-plugins.md +2 −2 Original line number Diff line number Diff line # Clock Plugins The clock appearing on the lock screen and always on display (AOD) can be customized via the ClockProviderPlugin plugin interface. The clock appearing on the lock screen and always on display (AOD) can be customized via the ClockProviderPlugin plugin interface. The ClockPlugin interface has been removed. ## Lock screen integration The lockscreen code has two main components, a [clock customization library](../customization), and Loading
packages/SystemUI/plugin/src/com/android/systemui/plugins/ClockPlugin.javadeleted 100644 → 0 +0 −145 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.android.systemui.plugins; import android.graphics.Bitmap; import android.graphics.Paint.Style; import android.view.View; import com.android.systemui.plugins.annotations.ProvidesInterface; import java.util.TimeZone; /** * Plugin used to replace main clock in keyguard. * @deprecated Migrating to ClockProviderPlugin */ @Deprecated @ProvidesInterface(action = ClockPlugin.ACTION, version = ClockPlugin.VERSION) public interface ClockPlugin extends Plugin { String ACTION = "com.android.systemui.action.PLUGIN_CLOCK"; int VERSION = 5; /** * Get the name of the clock face. * * This name should not be translated. */ String getName(); /** * Get the title of the clock face to be shown in the picker app. */ String getTitle(); /** * Get thumbnail of clock face to be shown in the picker app. */ Bitmap getThumbnail(); /** * Get preview images of clock face to be shown in the picker app. * * Preview image should be realistic and show what the clock face will look like on AOD and lock * screen. * * @param width width of the preview image, should be the same as device width in pixels. * @param height height of the preview image, should be the same as device height in pixels. */ Bitmap getPreview(int width, int height); /** * Get clock view. * @return clock view from plugin. */ View getView(); /** * Get clock view for a large clock that appears behind NSSL. */ default View getBigClockView() { return null; } /** * Returns the preferred Y position of the clock. * * @param totalHeight Height of the parent container. * @return preferred Y position. */ int getPreferredY(int totalHeight); /** * Allows the plugin to clean up resources when no longer needed. * * Called when the view previously created by {@link ClockPlugin#getView()} has been detached * from the view hierarchy. */ void onDestroyView(); /** * Set clock paint style. * @param style The new style to set in the paint. */ void setStyle(Style style); /** * Set clock text color. * @param color A color value. */ void setTextColor(int color); /** * Sets the color palette for the clock face. * @param supportsDarkText Whether dark text can be displayed. * @param colors Colors that should be used on the clock face, ordered from darker to lighter. */ default void setColorPalette(boolean supportsDarkText, int[] colors) {} /** * Set the amount (ratio) that the device has transitioned to doze. * @param darkAmount Amount of transition to doze: 1f for doze and 0f for awake. */ default void setDarkAmount(float darkAmount) {} /** * Notifies that time tick alarm from doze service fired. * * Implement this method instead of registering a broadcast listener for TIME_TICK. */ default void onTimeTick() {} /** * Notifies that the time zone has changed. * * Implement this method instead of registering a broadcast listener for TIME_ZONE_CHANGED. */ default void onTimeZoneChanged(TimeZone timeZone) {} /** * Notifies that the time format has changed. * * @param timeFormat "12" for 12-hour format, "24" for 24-hour format */ default void onTimeFormatChanged(String timeFormat) {} /** * Indicates whether the keyguard status area (date) should be shown below * the clock. */ default boolean shouldShowStatusArea() { return true; } }
packages/SystemUI/src/com/android/keyguard/clock/AnalogClockController.javadeleted 100644 → 0 +0 −210 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.keyguard.clock; import android.app.WallpaperManager; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.Paint.Style; import android.view.LayoutInflater; import android.view.View; import android.widget.TextClock; import com.android.internal.colorextraction.ColorExtractor; import com.android.systemui.R; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.plugins.ClockPlugin; import java.util.TimeZone; /** * Controller for Stretch clock that can appear on lock screen and AOD. */ public class AnalogClockController implements ClockPlugin { /** * Resources used to get title and thumbnail. */ private final Resources mResources; /** * LayoutInflater used to inflate custom clock views. */ private final LayoutInflater mLayoutInflater; /** * Extracts accent color from wallpaper. */ private final SysuiColorExtractor mColorExtractor; /** * Computes preferred position of clock. */ private final SmallClockPosition mClockPosition; /** * Renders preview from clock view. */ private final ViewPreviewer mRenderer = new ViewPreviewer(); /** * Custom clock shown on AOD screen and behind stack scroller on lock. */ private ClockLayout mBigClockView; private ImageClock mAnalogClock; /** * Small clock shown on lock screen above stack scroller. */ private View mView; private TextClock mLockClock; /** * Helper to extract colors from wallpaper palette for clock face. */ private final ClockPalette mPalette = new ClockPalette(); /** * Create a BubbleClockController instance. * * @param res Resources contains title and thumbnail. * @param inflater Inflater used to inflate custom clock views. * @param colorExtractor Extracts accent color from wallpaper. */ public AnalogClockController(Resources res, LayoutInflater inflater, SysuiColorExtractor colorExtractor) { mResources = res; mLayoutInflater = inflater; mColorExtractor = colorExtractor; mClockPosition = new SmallClockPosition(inflater.getContext()); } private void createViews() { mBigClockView = (ClockLayout) mLayoutInflater.inflate(R.layout.analog_clock, null); mAnalogClock = mBigClockView.findViewById(R.id.analog_clock); mView = mLayoutInflater.inflate(R.layout.digital_clock, null); mLockClock = mView.findViewById(R.id.lock_screen_clock); } @Override public void onDestroyView() { mBigClockView = null; mAnalogClock = null; mView = null; mLockClock = null; } @Override public String getName() { return "analog"; } @Override public String getTitle() { return mResources.getString(R.string.clock_title_analog); } @Override public Bitmap getThumbnail() { return BitmapFactory.decodeResource(mResources, R.drawable.analog_thumbnail); } @Override public Bitmap getPreview(int width, int height) { // Use the big clock view for the preview View view = getBigClockView(); // Initialize state of plugin before generating preview. setDarkAmount(1f); setTextColor(Color.WHITE); ColorExtractor.GradientColors colors = mColorExtractor.getColors( WallpaperManager.FLAG_LOCK); setColorPalette(colors.supportsDarkText(), colors.getColorPalette()); onTimeTick(); return mRenderer.createPreview(view, width, height); } @Override public View getView() { if (mView == null) { createViews(); } return mView; } @Override public View getBigClockView() { if (mBigClockView == null) { createViews(); } return mBigClockView; } @Override public int getPreferredY(int totalHeight) { return mClockPosition.getPreferredY(); } @Override public void setStyle(Style style) {} @Override public void setTextColor(int color) { updateColor(); } @Override public void setColorPalette(boolean supportsDarkText, int[] colorPalette) { mPalette.setColorPalette(supportsDarkText, colorPalette); updateColor(); } private void updateColor() { final int primary = mPalette.getPrimaryColor(); final int secondary = mPalette.getSecondaryColor(); mLockClock.setTextColor(secondary); mAnalogClock.setClockColors(primary, secondary); } @Override public void onTimeTick() { mAnalogClock.onTimeChanged(); mBigClockView.onTimeChanged(); mLockClock.refreshTime(); } @Override public void setDarkAmount(float darkAmount) { mPalette.setDarkAmount(darkAmount); mClockPosition.setDarkAmount(darkAmount); mBigClockView.setDarkAmount(darkAmount); } @Override public void onTimeZoneChanged(TimeZone timeZone) { mAnalogClock.onTimeZoneChanged(timeZone); } @Override public boolean shouldShowStatusArea() { return true; } }