diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java index 9e59ce3ea1665..3cbf2685af268 100644 --- a/packages/SettingsLib/src/com/android/settingslib/Utils.java +++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java @@ -13,6 +13,7 @@ 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; @@ -32,6 +33,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; @@ -537,4 +542,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 95e916b9871a0..df2f973e85c5d 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; @@ -215,6 +216,23 @@ public class BluetoothUtils { return new Pair<>(pair.first, pair.second); } + /** + * 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 */ diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java index 126f9b91b0d2c..41d6afc9c234e 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). @@ -353,6 +354,13 @@ public abstract class MediaDevice implements Comparable { } } + /** + * Gets the supported features of the route. + */ + public List 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 2821af97ed989..fc16eb6b42773 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"; } diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index 6e74184cef026..ce1eea0a715ce 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -781,5 +781,13 @@ + + + + + + + diff --git a/packages/SystemUI/res/drawable/ic_check_box.xml b/packages/SystemUI/res/drawable/ic_check_box.xml new file mode 100644 index 0000000000000..a8d1a652b35b4 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_check_box.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/packages/SystemUI/res/drawable/ic_check_box_blue_24dp.xml b/packages/SystemUI/res/drawable/ic_check_box_blue_24dp.xml new file mode 100644 index 0000000000000..43cae69839811 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_check_box_blue_24dp.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/packages/SystemUI/res/drawable/ic_check_box_outline_24dp.xml b/packages/SystemUI/res/drawable/ic_check_box_outline_24dp.xml new file mode 100644 index 0000000000000..f6f453af2a262 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_check_box_outline_24dp.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/packages/SystemUI/res/drawable/ic_speaker_group_black_24dp.xml b/packages/SystemUI/res/drawable/ic_speaker_group_black_24dp.xml new file mode 100644 index 0000000000000..ae0d56217fd9e --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_speaker_group_black_24dp.xml @@ -0,0 +1,31 @@ + + + + + + + diff --git a/packages/SystemUI/res/drawable/media_output_dialog_background.xml b/packages/SystemUI/res/drawable/media_output_dialog_background.xml new file mode 100644 index 0000000000000..3ceb0f6ac06ae --- /dev/null +++ b/packages/SystemUI/res/drawable/media_output_dialog_background.xml @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/packages/SystemUI/res/layout/media_output_dialog.xml b/packages/SystemUI/res/layout/media_output_dialog.xml new file mode 100644 index 0000000000000..73beefc9da83a --- /dev/null +++ b/packages/SystemUI/res/layout/media_output_dialog.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +