diff options
Diffstat (limited to 'packages/SettingsLib/src')
7 files changed, 137 insertions, 7 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java index 29c13389803c..ad459a4c3b93 100644 --- a/packages/SettingsLib/src/com/android/settingslib/Utils.java +++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java @@ -13,7 +13,11 @@ import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Bitmap; +import android.graphics.Canvas; import android.graphics.Color; +import android.graphics.ColorFilter; +import android.graphics.ColorMatrix; +import android.graphics.ColorMatrixColorFilter; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.location.LocationManager; @@ -30,6 +34,10 @@ import android.telephony.AccessNetworkConstants; import android.telephony.NetworkRegistrationInfo; import android.telephony.ServiceState; +import androidx.annotation.NonNull; +import androidx.core.graphics.drawable.RoundedBitmapDrawable; +import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory; + import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.UserIcons; import com.android.launcher3.icons.IconFactory; @@ -304,6 +312,36 @@ public class Utils { } /** + * Create a color matrix suitable for a ColorMatrixColorFilter that modifies only the color but + * preserves the alpha for a given drawable + * @param color + * @return a color matrix that uses the source alpha and given color + */ + public static ColorMatrix getAlphaInvariantColorMatrixForColor(@ColorInt int color) { + int r = Color.red(color); + int g = Color.green(color); + int b = Color.blue(color); + + ColorMatrix cm = new ColorMatrix(new float[] { + 0, 0, 0, 0, r, + 0, 0, 0, 0, g, + 0, 0, 0, 0, b, + 0, 0, 0, 1, 0 }); + + return cm; + } + + /** + * Create a ColorMatrixColorFilter to tint a drawable but retain its alpha characteristics + * + * @return a ColorMatrixColorFilter which changes the color of the output but is invariant on + * the source alpha + */ + public static ColorFilter getAlphaInvariantColorFilterForColor(@ColorInt int color) { + return new ColorMatrixColorFilter(getAlphaInvariantColorMatrixForColor(color)); + } + + /** * Determine whether a package is a "system package", in which case certain things (like * disabling notifications or disabling the package altogether) should be disallowed. */ @@ -505,4 +543,25 @@ public class Utils { == NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING); return !isInIwlan; } + + /** + * Returns a bitmap with rounded corner. + * + * @param context application context. + * @param source bitmap to apply round corner. + * @param cornerRadius corner radius value. + */ + public static Bitmap convertCornerRadiusBitmap(@NonNull Context context, + @NonNull Bitmap source, @NonNull float cornerRadius) { + final Bitmap roundedBitmap = Bitmap.createBitmap(source.getWidth(), source.getHeight(), + Bitmap.Config.ARGB_8888); + final RoundedBitmapDrawable drawable = + RoundedBitmapDrawableFactory.create(context.getResources(), source); + drawable.setAntiAlias(true); + drawable.setCornerRadius(cornerRadius); + final Canvas canvas = new Canvas(roundedBitmap); + drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); + drawable.draw(canvas); + return roundedBitmap; + } } diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java index 95e916b9871a..df2f973e85c5 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java @@ -18,6 +18,7 @@ import android.util.Log; import android.util.Pair; import androidx.annotation.DrawableRes; +import androidx.core.graphics.drawable.IconCompat; import com.android.settingslib.R; import com.android.settingslib.widget.AdaptiveIcon; @@ -216,6 +217,23 @@ public class BluetoothUtils { } /** + * Create an Icon pointing to a drawable. + */ + public static IconCompat createIconWithDrawable(Drawable drawable) { + Bitmap bitmap; + if (drawable instanceof BitmapDrawable) { + bitmap = ((BitmapDrawable) drawable).getBitmap(); + } else { + final int width = drawable.getIntrinsicWidth(); + final int height = drawable.getIntrinsicHeight(); + bitmap = createBitmap(drawable, + width > 0 ? width : 1, + height > 0 ? height : 1); + } + return IconCompat.createWithBitmap(bitmap); + } + + /** * Build device icon with advanced outline */ public static Drawable buildAdvancedDrawable(Context context, Drawable drawable) { diff --git a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryStatus.java b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryStatus.java index bc40903d88e4..ce60fafaa31b 100644 --- a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryStatus.java +++ b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryStatus.java @@ -16,6 +16,7 @@ package com.android.settingslib.fuelgauge; +import static android.os.BatteryManager.BATTERY_HEALTH_OVERHEAT; import static android.os.BatteryManager.BATTERY_HEALTH_UNKNOWN; import static android.os.BatteryManager.BATTERY_STATUS_FULL; import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN; @@ -124,6 +125,15 @@ public class BatteryStatus { } /** + * Whether battery is overheated. + * + * @return true if battery is overheated + */ + public boolean isOverheated() { + return health == BATTERY_HEALTH_OVERHEAT; + } + + /** * Return current chargin speed is fast, slow or normal. * * @return the charing speed diff --git a/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt b/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt index a5b5312707d0..5fa04f93e993 100644 --- a/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt +++ b/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt @@ -108,6 +108,7 @@ open class ThemedBatteryDrawable(private val context: Context, frameColor: Int) private val fillColorStrokePaint = Paint(Paint.ANTI_ALIAS_FLAG).also { p -> p.color = frameColor + p.alpha = 255 p.isDither = true p.strokeWidth = 5f p.style = Paint.Style.STROKE @@ -145,7 +146,7 @@ open class ThemedBatteryDrawable(private val context: Context, frameColor: Int) // Only used if dualTone is set to true private val dualToneBackgroundFill = Paint(Paint.ANTI_ALIAS_FLAG).also { p -> p.color = frameColor - p.alpha = 255 + p.alpha = 85 // ~0.3 alpha by default p.isDither = true p.strokeWidth = 0f p.style = Paint.Style.FILL_AND_STROKE diff --git a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java index 00f94f5c2e64..9d4669a5a37d 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java @@ -18,6 +18,7 @@ package com.android.settingslib.media; import android.bluetooth.BluetoothClass; import android.bluetooth.BluetoothDevice; import android.content.Context; +import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; @@ -56,8 +57,9 @@ public class BluetoothMediaDevice extends MediaDevice { @Override public Drawable getIcon() { - final Drawable drawable = getIconWithoutBackground(); - if (!isFastPairDevice()) { + final Drawable drawable = + BluetoothUtils.getBtDrawableWithDescription(mContext, mCachedDevice).first; + if (!(drawable instanceof BitmapDrawable)) { setColorFilter(drawable); } return BluetoothUtils.buildAdvancedDrawable(mContext, drawable); @@ -65,9 +67,7 @@ public class BluetoothMediaDevice extends MediaDevice { @Override public Drawable getIconWithoutBackground() { - return isFastPairDevice() - ? BluetoothUtils.getBtDrawableWithDescription(mContext, mCachedDevice).first - : mContext.getDrawable(R.drawable.ic_headphone); + return BluetoothUtils.getBtClassDrawableWithDescription(mContext, mCachedDevice).first; } @Override diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java index 126f9b91b0d2..41d6afc9c234 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java @@ -46,6 +46,7 @@ import com.android.settingslib.R; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.util.List; /** * MediaDevice represents a media device(such like Bluetooth device, cast device and phone device). @@ -354,6 +355,13 @@ public abstract class MediaDevice implements Comparable<MediaDevice> { } /** + * Gets the supported features of the route. + */ + public List<String> getFeatures() { + return mRouteInfo.getFeatures(); + } + + /** * Check if it is CarKit device * @return true if it is CarKit device */ diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaOutputSliceConstants.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaOutputSliceConstants.java index 2821af97ed98..fc16eb6b4277 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/MediaOutputSliceConstants.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/MediaOutputSliceConstants.java @@ -60,8 +60,42 @@ public class MediaOutputSliceConstants { "com.android.settings.panel.action.MEDIA_OUTPUT_GROUP"; /** - * An string extra specifying a media package name. + * A string extra specifying a media package name. */ public static final String EXTRA_PACKAGE_NAME = "com.android.settings.panel.extra.PACKAGE_NAME"; + + /** + * An intent action to launch media output dialog. + */ + public static final String ACTION_LAUNCH_MEDIA_OUTPUT_DIALOG = + "com.android.systemui.action.LAUNCH_MEDIA_OUTPUT_DIALOG"; + + /** + * An intent action to dismiss media output dialog. + */ + public static final String ACTION_DISMISS_MEDIA_OUTPUT_DIALOG = + "com.android.systemui.action.DISMISS_MEDIA_OUTPUT_DIALOG"; + + /** + * Settings package name. + */ + public static final String SETTINGS_PACKAGE_NAME = "com.android.settings"; + + /** + * An intent action to launch Bluetooth paring page. + */ + public static final String ACTION_LAUNCH_BLUETOOTH_PAIRING = + "com.android.settings.action.LAUNCH_BLUETOOTH_PAIRING"; + + /** + * SystemUi package name. + */ + public static final String SYSTEMUI_PACKAGE_NAME = "com.android.systemui"; + + /** + * An intent action to close settings panel. + */ + public static final String ACTION_CLOSE_PANEL = + "com.android.settings.panel.action.CLOSE_PANEL"; } |