sdk: introduce Style API

This API will allow apps to change global style mode and accent.

Global style mode can be
* Automatic (wallpaper)
* Automatic (day of time)
* Light
* Dark

Accent colors are defined in the caller application that will have
to pass the package name.

It's possible for apps to pass a Bitmap and get a suggestion
of a global style + accent color that can be applied.

Restrictions:
* Only one accent can be enabled at time.
* We're not limiting this to system apps, but we're marking
  this as dangerous permissions so apps will have to require
  it at runtime to the user.

Change-Id: I921e8758c3ae093a88e897899612830258c97f8d
Signed-off-by: Joey <joey@lineageos.org>
This commit is contained in:
Joey
2018-02-22 14:30:42 +01:00
parent 17b61ed328
commit 76fc3d3942
12 changed files with 640 additions and 6 deletions

View File

@@ -270,6 +270,7 @@ package lineageos.hardware {
method public boolean isAutomaticOutdoorModeEnabled();
method public boolean isCABCEnabled();
method public boolean isColorEnhancementEnabled();
method public boolean isNightModeEnabled();
method public boolean setAutoContrastEnabled(boolean);
method public boolean setAutomaticOutdoorModeEnabled(boolean);
method public boolean setCABCEnabled(boolean);
@@ -279,7 +280,6 @@ package lineageos.hardware {
method public boolean setMode(int);
method public boolean setNightColorTemperature(int);
method public boolean setPictureAdjustment(lineageos.hardware.HSIC);
method public boolean isNightModeEnabled();
field public static final int ADJUSTMENT_CONTRAST = 3; // 0x3
field public static final int ADJUSTMENT_HUE = 0; // 0x0
field public static final int ADJUSTMENT_INTENSITY = 2; // 0x2
@@ -359,17 +359,14 @@ package lineageos.platform {
ctor public Manifest.permission();
field public static final java.lang.String ACCESS_WEATHER_MANAGER = "lineageos.permission.ACCESS_WEATHER_MANAGER";
field public static final java.lang.String BIND_WEATHER_PROVIDER_SERVICE = "lineageos.permission.BIND_WEATHER_PROVIDER_SERVICE";
field public static final java.lang.String CHANGE_STYLE = "lineageos.permission.CHANGE_STYLE";
field public static final java.lang.String HARDWARE_ABSTRACTION_ACCESS = "lineageos.permission.HARDWARE_ABSTRACTION_ACCESS";
field public static final java.lang.String MANAGE_LIVEDISPLAY = "lineageos.permission.MANAGE_LIVEDISPLAY";
field public static final java.lang.String MANAGE_REMOTE_PREFERENCES = "lineageos.permission.MANAGE_REMOTE_PREFERENCES";
field public static final java.lang.String MODIFY_MSIM_PHONE_STATE = "lineageos.permission.MODIFY_MSIM_PHONE_STATE";
field public static final java.lang.String MODIFY_NETWORK_SETTINGS = "lineageos.permission.MODIFY_NETWORK_SETTINGS";
field public static final java.lang.String MODIFY_PROFILES = "lineageos.permission.MODIFY_PROFILES";
field public static final java.lang.String MODIFY_SOUND_SETTINGS = "lineageos.permission.MODIFY_SOUND_SETTINGS";
field public static final java.lang.String PERFORMANCE_ACCESS = "lineageos.permission.PERFORMANCE_ACCESS";
field public static final java.lang.String PROTECTED_APP = "lineageos.permission.PROTECTED_APP";
field public static final java.lang.String READ_DATAUSAGE = "lineageos.permission.READ_DATAUSAGE";
field public static final java.lang.String READ_MSIM_PHONE_STATE = "lineageos.permission.READ_MSIM_PHONE_STATE";
field public static final java.lang.String READ_WEATHER = "lineageos.permission.READ_WEATHER";
field public static final java.lang.String WRITE_DATAUSAGE = "lineageos.permission.WRITE_DATAUSAGE";
field public static final java.lang.String WRITE_SECURE_SETTINGS = "lineageos.permission.WRITE_SECURE_SETTINGS";
@@ -381,6 +378,10 @@ package lineageos.platform {
ctor public R();
}
public static final class R.anim {
ctor public R.anim();
}
public static final class R.array {
ctor public R.array();
}
@@ -403,6 +404,10 @@ package lineageos.platform {
ctor public R.bool();
}
public static final class R.dimen {
ctor public R.dimen();
}
public static final class R.drawable {
ctor public R.drawable();
}
@@ -796,6 +801,8 @@ package lineageos.providers {
field public static final java.lang.String BATTERY_LIGHT_LOW_COLOR = "battery_light_low_color";
field public static final java.lang.String BATTERY_LIGHT_MEDIUM_COLOR = "battery_light_medium_color";
field public static final java.lang.String BATTERY_LIGHT_PULSE = "battery_light_pulse";
field public static final java.lang.String BERRY_CURRENT_ACCENT = "berry_current_accent";
field public static final java.lang.String BERRY_GLOBAL_STYLE = "berry_global_style";
field public static final java.lang.String BLUETOOTH_ACCEPT_ALL_FILES = "bluetooth_accept_all_files";
field public static final java.lang.String CALL_RECORDING_FORMAT = "call_recording_format";
field public static final java.lang.String CAMERA_LAUNCH = "camera_launch";
@@ -979,6 +986,31 @@ package lineageos.providers {
}
package lineageos.style {
public class StyleInterface {
method public static lineageos.style.StyleInterface getInstance(android.content.Context);
method public lineageos.style.Suggestion getSuggestion(android.graphics.Bitmap, int[]);
method public boolean setAccent(java.lang.String);
method public boolean setGlobalStyle(int);
field public static final java.lang.String ACCENT_DEFAULT = "lineageos";
field public static final java.lang.String CHANGE_STYLE_SETTINGS_PERMISSION = "lineageos.permission.CHANGE_STYLE";
field public static final int STYLE_GLOBAL_AUTO_DAYTIME = 1; // 0x1
field public static final int STYLE_GLOBAL_AUTO_WALLPAPER = 0; // 0x0
field public static final int STYLE_GLOBAL_DARK = 3; // 0x3
field public static final int STYLE_GLOBAL_LIGHT = 2; // 0x2
}
public class Suggestion implements android.os.Parcelable {
ctor public Suggestion(int, int);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public final int globalStyle;
field public final int selectedAccent;
}
}
package lineageos.util {
public class ColorUtils {