blob: 6c6c9270bc84a3cb0e7d70d1ffda71d24314f284 [file] [log] [blame]
/*
* 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.
*/
@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) {}
/**
* Indicates whether the keyguard status area (date) should be shown below
* the clock.
*/
default boolean shouldShowStatusArea() {
return true;
}
}