Automatically add icon drawables for icon constants

Having a default icon available allows apps to only specify the
icon constant without having to define an icon drawable themselves
as Media3 can fill in the icon resource for backwards compatibility.

The switch util method allows R8 to easily remove unused icons, so
having default icons won't affect APK size unless the constants are
used to set up the CommandButtons.

PiperOrigin-RevId: 614623909
This commit is contained in:
tonihei 2024-03-11 05:03:54 -07:00 committed by Copybara-Service
parent 18cbbf3850
commit 0e42c8945f
87 changed files with 1967 additions and 216 deletions

View File

@ -72,6 +72,8 @@
* Change default of `CommandButton.enabled` to `true` and ensure the value
can stay false for controllers even if the associated command is
available.
* Add icon constants for `CommandButton` that should be used instead of
custom icon resources.
* UI:
* Fallback to include audio track language name if `Locale` cannot
identify a display name

View File

@ -40,18 +40,17 @@ open class DemoMediaLibrarySessionCallback(context: Context) :
MediaItemTree.initialize(context.assets)
}
@OptIn(UnstableApi::class) // TODO: b/328238954 - Remove once new CommandButton icons are stable.
private val customLayoutCommandButtons: List<CommandButton> =
listOf(
CommandButton.Builder()
CommandButton.Builder(CommandButton.ICON_SHUFFLE_OFF)
.setDisplayName(context.getString(R.string.exo_controls_shuffle_on_description))
.setSessionCommand(SessionCommand(CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_ON, Bundle.EMPTY))
.setIconResId(R.drawable.exo_icon_shuffle_off)
.build(),
CommandButton.Builder()
CommandButton.Builder(CommandButton.ICON_SHUFFLE_ON)
.setDisplayName(context.getString(R.string.exo_controls_shuffle_off_description))
.setSessionCommand(SessionCommand(CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_OFF, Bundle.EMPTY))
.setIconResId(R.drawable.exo_icon_shuffle_on)
.build()
.build(),
)
@OptIn(UnstableApi::class) // MediaSession.ConnectionResult.DEFAULT_SESSION_AND_LIBRARY_COMMANDS
@ -70,7 +69,7 @@ open class DemoMediaLibrarySessionCallback(context: Context) :
@OptIn(UnstableApi::class)
override fun onConnect(
session: MediaSession,
controller: MediaSession.ControllerInfo
controller: MediaSession.ControllerInfo,
): MediaSession.ConnectionResult {
if (
session.isMediaNotificationController(controller) ||
@ -93,7 +92,7 @@ open class DemoMediaLibrarySessionCallback(context: Context) :
session: MediaSession,
controller: MediaSession.ControllerInfo,
customCommand: SessionCommand,
args: Bundle
args: Bundle,
): ListenableFuture<SessionResult> {
if (CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_ON == customCommand.customAction) {
// Enable shuffling.
@ -101,7 +100,7 @@ open class DemoMediaLibrarySessionCallback(context: Context) :
// Change the custom layout to contain the `Disable shuffling` command.
session.setCustomLayout(
session.mediaNotificationControllerInfo!!,
ImmutableList.of(customLayoutCommandButtons[1])
ImmutableList.of(customLayoutCommandButtons[1]),
)
return Futures.immediateFuture(SessionResult(SessionResult.RESULT_SUCCESS))
} else if (CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_OFF == customCommand.customAction) {
@ -110,7 +109,7 @@ open class DemoMediaLibrarySessionCallback(context: Context) :
// Change the custom layout to contain the `Enable shuffling` command.
session.setCustomLayout(
session.mediaNotificationControllerInfo!!,
ImmutableList.of(customLayoutCommandButtons[0])
ImmutableList.of(customLayoutCommandButtons[0]),
)
return Futures.immediateFuture(SessionResult(SessionResult.RESULT_SUCCESS))
}
@ -120,7 +119,7 @@ open class DemoMediaLibrarySessionCallback(context: Context) :
override fun onGetLibraryRoot(
session: MediaLibraryService.MediaLibrarySession,
browser: MediaSession.ControllerInfo,
params: MediaLibraryService.LibraryParams?
params: MediaLibraryService.LibraryParams?,
): ListenableFuture<LibraryResult<MediaItem>> {
return Futures.immediateFuture(LibraryResult.ofItem(MediaItemTree.getRootItem(), params))
}
@ -128,7 +127,7 @@ open class DemoMediaLibrarySessionCallback(context: Context) :
override fun onGetItem(
session: MediaLibraryService.MediaLibrarySession,
browser: MediaSession.ControllerInfo,
mediaId: String
mediaId: String,
): ListenableFuture<LibraryResult<MediaItem>> {
MediaItemTree.getItem(mediaId)?.let {
return Futures.immediateFuture(LibraryResult.ofItem(it, /* params= */ null))
@ -142,7 +141,7 @@ open class DemoMediaLibrarySessionCallback(context: Context) :
parentId: String,
page: Int,
pageSize: Int,
params: MediaLibraryService.LibraryParams?
params: MediaLibraryService.LibraryParams?,
): ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> {
val children = MediaItemTree.getChildren(parentId)
if (children.isNotEmpty()) {
@ -154,7 +153,7 @@ open class DemoMediaLibrarySessionCallback(context: Context) :
override fun onAddMediaItems(
mediaSession: MediaSession,
controller: MediaSession.ControllerInfo,
mediaItems: List<MediaItem>
mediaItems: List<MediaItem>,
): ListenableFuture<List<MediaItem>> {
return Futures.immediateFuture(resolveMediaItems(mediaItems))
}
@ -165,7 +164,7 @@ open class DemoMediaLibrarySessionCallback(context: Context) :
browser: MediaSession.ControllerInfo,
mediaItems: List<MediaItem>,
startIndex: Int,
startPositionMs: Long
startPositionMs: Long,
): ListenableFuture<MediaItemsWithStartPosition> {
if (mediaItems.size == 1) {
// Try to expand a single item to a playlist.
@ -194,7 +193,7 @@ open class DemoMediaLibrarySessionCallback(context: Context) :
private fun maybeExpandSingleItemToPlaylist(
mediaItem: MediaItem,
startIndex: Int,
startPositionMs: Long
startPositionMs: Long,
): MediaItemsWithStartPosition? {
var playlist = listOf<MediaItem>()
var indexInPlaylist = startIndex
@ -223,7 +222,7 @@ open class DemoMediaLibrarySessionCallback(context: Context) :
session: MediaLibraryService.MediaLibrarySession,
browser: MediaSession.ControllerInfo,
query: String,
params: MediaLibraryService.LibraryParams?
params: MediaLibraryService.LibraryParams?,
): ListenableFuture<LibraryResult<Void>> {
session.notifySearchResultChanged(browser, query, MediaItemTree.search(query).size, params)
return Futures.immediateFuture(LibraryResult.ofVoid())
@ -235,7 +234,7 @@ open class DemoMediaLibrarySessionCallback(context: Context) :
query: String,
page: Int,
pageSize: Int,
params: MediaLibraryService.LibraryParams?
params: MediaLibraryService.LibraryParams?,
): ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> {
return Futures.immediateFuture(LibraryResult.ofItemList(MediaItemTree.search(query), params))
}

View File

@ -49,6 +49,8 @@ import java.util.List;
*/
public final class CommandButton implements Bundleable {
// TODO: b/328238954 - Stabilize these constants and the corresponding methods, and deprecate the
// methods that do not use these constants.
/** An icon constant for a button. Must be one of the {@code CommandButton.ICON_} constants. */
@UnstableApi
@Documented
@ -406,8 +408,31 @@ public final class CommandButton implements Bundleable {
private Bundle extras;
private boolean enabled;
/** Creates a builder. */
/**
* [will be deprecated] Use {@link #Builder(int)} instead to define the {@link Icon} for this
* button. A separate resource id via {@link #setIconResId(int)} is no longer required unless
* for {@link #ICON_UNDEFINED}.
*/
public Builder() {
this(ICON_UNDEFINED);
}
/**
* Creates a builder.
*
* @param icon The {@link Icon} that should be shown for this button.
*/
@UnstableApi
public Builder(@Icon int icon) {
this(icon, getIconResIdForIconConstant(icon));
}
// Internal version of constructor that assigns an additionally known icon resource id
// immediately. This is needed for R8 resource shrinking efficiency to know that the icon
// doesn't need to be resolved to any of the bundled icon drawables.
/* package */ Builder(@Icon int icon, @DrawableRes int iconResId) {
this.icon = icon;
this.iconResId = iconResId;
displayName = "";
extras = Bundle.EMPTY;
playerCommand = Player.COMMAND_INVALID;
@ -416,10 +441,12 @@ public final class CommandButton implements Bundleable {
}
/**
* Sets the {@link SessionCommand} that will be sent to the session when the button is clicked.
* Cannot set this if player command is already set via {@link #setPlayerCommand(int)}.
* Sets the {@link SessionCommand} that is required to be {@linkplain
* MediaController#isSessionCommandAvailable available} when the button is clicked.
*
* @param sessionCommand The session command.
* <p>Cannot set this if a player command is already set via {@link #setPlayerCommand(int)}.
*
* @param sessionCommand The {@link SessionCommand}.
* @return This builder for chaining.
*/
@CanIgnoreReturnValue
@ -434,11 +461,13 @@ public final class CommandButton implements Bundleable {
}
/**
* Sets the {@link Player.Command} that would be sent to the session when the button is clicked.
* Cannot set this if session command is already set via {@link
* Sets the {@link Player.Command} that is required to be {@linkplain
* MediaController#isCommandAvailable available} when the button is clicked.
*
* <p>Cannot set this if a session command is already set via {@link
* #setSessionCommand(SessionCommand)}.
*
* @param playerCommand The player command.
* @param playerCommand The {@link Player.Command}.
* @return This builder for chaining.
*/
@CanIgnoreReturnValue
@ -452,30 +481,25 @@ public final class CommandButton implements Bundleable {
}
/**
* Sets the icon of this button.
* [will be deprecated] The icon should be defined with the constructor {@link Icon} parameter
* in {@link #Builder(int)} instead. Only in case the existing list of icons is not sufficient,
* use {@link #ICON_UNDEFINED} and set a separate resource id with {@link #setCustomIconResId}.
*/
@CanIgnoreReturnValue
public Builder setIconResId(@DrawableRes int resId) {
return setCustomIconResId(resId);
}
/**
* Sets the resource id of an icon that is used when the predefined {@link Icon} is not
* available or set to {@link #ICON_UNDEFINED}.
*
* @param icon The {@link Icon} that should be shown for this button.
* @param resId The resource id of a custom icon.
* @return This builder for chaining.
*/
@UnstableApi
@CanIgnoreReturnValue
public Builder setIcon(@Icon int icon) {
this.icon = icon;
return this;
}
/**
* Sets the resource id of a bitmap (e.g. PNG) icon of this button.
*
* <p>Non-bitmap (e.g. VectorDrawable) may cause unexpected behavior in a {@link
* MediaController} app, so please avoid using it especially for the older platforms ({@code
* SDK_INT < 21}).
*
* @param resId The resource id of an icon.
* @return This builder for chaining.
*/
@CanIgnoreReturnValue
public Builder setIconResId(@DrawableRes int resId) {
public Builder setCustomIconResId(@DrawableRes int resId) {
iconResId = resId;
return this;
}
@ -543,6 +567,154 @@ public final class CommandButton implements Bundleable {
return new CommandButton(
sessionCommand, playerCommand, icon, iconResId, iconUri, displayName, extras, enabled);
}
@DrawableRes
private static int getIconResIdForIconConstant(@Icon int icon) {
switch (icon) {
case ICON_PLAY:
return R.drawable.media3_icon_play;
case ICON_PAUSE:
return R.drawable.media3_icon_pause;
case ICON_STOP:
return R.drawable.media3_icon_stop;
case ICON_NEXT:
return R.drawable.media3_icon_next;
case ICON_PREVIOUS:
return R.drawable.media3_icon_previous;
case ICON_SKIP_FORWARD:
return R.drawable.media3_icon_skip_forward;
case ICON_SKIP_FORWARD_5:
return R.drawable.media3_icon_skip_forward_5;
case ICON_SKIP_FORWARD_10:
return R.drawable.media3_icon_skip_forward_10;
case ICON_SKIP_FORWARD_15:
return R.drawable.media3_icon_skip_forward_15;
case ICON_SKIP_FORWARD_30:
return R.drawable.media3_icon_skip_forward_30;
case ICON_SKIP_BACK:
return R.drawable.media3_icon_skip_back;
case ICON_SKIP_BACK_5:
return R.drawable.media3_icon_skip_back_5;
case ICON_SKIP_BACK_10:
return R.drawable.media3_icon_skip_back_10;
case ICON_SKIP_BACK_15:
return R.drawable.media3_icon_skip_back_15;
case ICON_SKIP_BACK_30:
return R.drawable.media3_icon_skip_back_30;
case ICON_FAST_FORWARD:
return R.drawable.media3_icon_fast_forward;
case ICON_REWIND:
return R.drawable.media3_icon_rewind;
case ICON_REPEAT_ALL:
return R.drawable.media3_icon_repeat_all;
case ICON_REPEAT_ONE:
return R.drawable.media3_icon_repeat_one;
case ICON_REPEAT_OFF:
return R.drawable.media3_icon_repeat_off;
case ICON_SHUFFLE_ON:
return R.drawable.media3_icon_shuffle_on;
case ICON_SHUFFLE_OFF:
return R.drawable.media3_icon_shuffle_off;
case ICON_SHUFFLE_STAR:
return R.drawable.media3_icon_shuffle_star;
case ICON_HEART_FILLED:
return R.drawable.media3_icon_heart_filled;
case ICON_HEART_UNFILLED:
return R.drawable.media3_icon_heart_unfilled;
case ICON_STAR_FILLED:
return R.drawable.media3_icon_star_filled;
case ICON_STAR_UNFILLED:
return R.drawable.media3_icon_star_unfilled;
case ICON_BOOKMARK_FILLED:
return R.drawable.media3_icon_bookmark_filled;
case ICON_BOOKMARK_UNFILLED:
return R.drawable.media3_icon_bookmark_unfilled;
case ICON_THUMB_UP_FILLED:
return R.drawable.media3_icon_thumb_up_filled;
case ICON_THUMB_UP_UNFILLED:
return R.drawable.media3_icon_thumb_up_unfilled;
case ICON_THUMB_DOWN_FILLED:
return R.drawable.media3_icon_thumb_down_filled;
case ICON_THUMB_DOWN_UNFILLED:
return R.drawable.media3_icon_thumb_down_unfilled;
case ICON_FLAG_FILLED:
return R.drawable.media3_icon_flag_filled;
case ICON_FLAG_UNFILLED:
return R.drawable.media3_icon_flag_unfilled;
case ICON_PLUS:
return R.drawable.media3_icon_plus;
case ICON_MINUS:
return R.drawable.media3_icon_minus;
case ICON_PLAYLIST_ADD:
return R.drawable.media3_icon_playlist_add;
case ICON_PLAYLIST_REMOVE:
return R.drawable.media3_icon_playlist_remove;
case ICON_BLOCK:
return R.drawable.media3_icon_block;
case ICON_PLUS_CIRCLE_FILLED:
return R.drawable.media3_icon_plus_circle_filled;
case ICON_PLUS_CIRCLE_UNFILLED:
return R.drawable.media3_icon_plus_circle_unfilled;
case ICON_MINUS_CIRCLE_FILLED:
return R.drawable.media3_icon_minus_circle_filled;
case ICON_MINUS_CIRCLE_UNFILLED:
return R.drawable.media3_icon_minus_circle_unfilled;
case ICON_CHECK_CIRCLE_FILLED:
return R.drawable.media3_icon_check_circle_filled;
case ICON_CHECK_CIRCLE_UNFILLED:
return R.drawable.media3_icon_check_circle_unfilled;
case ICON_PLAYBACK_SPEED:
return R.drawable.media3_icon_playback_speed;
case ICON_PLAYBACK_SPEED_0_5:
return R.drawable.media3_icon_playback_speed_0_5;
case ICON_PLAYBACK_SPEED_0_8:
return R.drawable.media3_icon_playback_speed_0_8;
case ICON_PLAYBACK_SPEED_1_0:
return R.drawable.media3_icon_playback_speed_1_0;
case ICON_PLAYBACK_SPEED_1_2:
return R.drawable.media3_icon_playback_speed_1_2;
case ICON_PLAYBACK_SPEED_1_5:
return R.drawable.media3_icon_playback_speed_1_5;
case ICON_PLAYBACK_SPEED_1_8:
return R.drawable.media3_icon_playback_speed_1_8;
case ICON_PLAYBACK_SPEED_2_0:
return R.drawable.media3_icon_playback_speed_2_0;
case ICON_SETTINGS:
return R.drawable.media3_icon_settings;
case ICON_QUALITY:
return R.drawable.media3_icon_quality;
case ICON_SUBTITLES:
return R.drawable.media3_icon_subtitles;
case ICON_SUBTITLES_OFF:
return R.drawable.media3_icon_subtitles_off;
case ICON_CLOSED_CAPTIONS:
return R.drawable.media3_icon_closed_captions;
case ICON_CLOSED_CAPTIONS_OFF:
return R.drawable.media3_icon_closed_captions_off;
case ICON_SYNC:
return R.drawable.media3_icon_sync;
case ICON_SHARE:
return R.drawable.media3_icon_share;
case ICON_VOLUME_UP:
return R.drawable.media3_icon_volume_up;
case ICON_VOLUME_DOWN:
return R.drawable.media3_icon_volume_down;
case ICON_VOLUME_OFF:
return R.drawable.media3_icon_volume_off;
case ICON_ARTIST:
return R.drawable.media3_icon_artist;
case ICON_ALBUM:
return R.drawable.media3_icon_album;
case ICON_RADIO:
return R.drawable.media3_icon_radio;
case ICON_SIGNAL:
return R.drawable.media3_icon_signal;
case ICON_FEED:
return R.drawable.media3_icon_feed;
default:
return 0;
}
}
}
/** The session command of the button. Will be {@code null} if {@link #playerCommand} is set. */
@ -558,8 +730,8 @@ public final class CommandButton implements Bundleable {
@UnstableApi public final @Icon int icon;
/**
* The icon resource id of the button. Can be {@code 0} if the command is predefined and a custom
* icon isn't needed.
* The icon resource id of the button that is used when the predefined {@link #icon} is not
* available or set to {@link #ICON_UNDEFINED}. Can be {@code 0} if not needed.
*/
@DrawableRes public final int iconResId;
@ -767,7 +939,7 @@ public final class CommandButton implements Bundleable {
sessionInterfaceVersion < 3 || bundle.getBoolean(FIELD_ENABLED, /* defaultValue= */ true);
@Nullable Uri iconUri = bundle.getParcelable(FIELD_ICON_URI);
@Icon int icon = bundle.getInt(FIELD_ICON, /* defaultValue= */ ICON_UNDEFINED);
Builder builder = new Builder();
Builder builder = new Builder(icon, iconResId);
if (sessionCommand != null) {
builder.setSessionCommand(sessionCommand);
}
@ -778,8 +950,6 @@ public final class CommandButton implements Bundleable {
builder.setIconUri(iconUri);
}
return builder
.setIcon(icon)
.setIconResId(iconResId)
.setDisplayName(displayName)
.setExtras(extras == null ? Bundle.EMPTY : extras)
.setEnabled(enabled)

View File

@ -87,10 +87,10 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
* resource IDs are:
*
* <ul>
* <li><b>{@code media3_notification_play}</b> - The play icon.
* <li><b>{@code media3_notification_pause}</b> - The pause icon.
* <li><b>{@code media3_notification_seek_to_previous}</b> - The previous icon.
* <li><b>{@code media3_notification_seek_to_next}</b> - The next icon.
* <li><b>{@code media3_icon_play}</b> - The play icon.
* <li><b>{@code media3_icon_pause}</b> - The pause icon.
* <li><b>{@code media3_icon_previous}</b> - The previous icon.
* <li><b>{@code media3_icon_next}</b> - The next icon.
* <li><b>{@code media3_notification_small_icon}</b> - The {@link
* NotificationCompat.Builder#setSmallIcon(int) small icon}. A different icon can be set with
* {@link #setSmallIcon(int)}.
@ -458,9 +458,8 @@ public class DefaultMediaNotificationProvider implements MediaNotification.Provi
Bundle commandButtonExtras = new Bundle();
commandButtonExtras.putInt(COMMAND_KEY_COMPACT_VIEW_INDEX, INDEX_UNSET);
commandButtons.add(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PREVIOUS)
.setPlayerCommand(COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM)
.setIconResId(R.drawable.media3_notification_seek_to_previous)
.setDisplayName(
context.getString(R.string.media3_controls_seek_to_previous_description))
.setExtras(commandButtonExtras)
@ -469,28 +468,29 @@ public class DefaultMediaNotificationProvider implements MediaNotification.Provi
if (playerCommands.contains(COMMAND_PLAY_PAUSE)) {
Bundle commandButtonExtras = new Bundle();
commandButtonExtras.putInt(COMMAND_KEY_COMPACT_VIEW_INDEX, INDEX_UNSET);
commandButtons.add(
new CommandButton.Builder()
.setPlayerCommand(COMMAND_PLAY_PAUSE)
.setIconResId(
showPauseButton
? R.drawable.media3_notification_pause
: R.drawable.media3_notification_play)
.setExtras(commandButtonExtras)
.setDisplayName(
showPauseButton
? context.getString(R.string.media3_controls_pause_description)
: context.getString(R.string.media3_controls_play_description))
.build());
if (showPauseButton) {
commandButtons.add(
new CommandButton.Builder(CommandButton.ICON_PAUSE)
.setPlayerCommand(COMMAND_PLAY_PAUSE)
.setExtras(commandButtonExtras)
.setDisplayName(context.getString(R.string.media3_controls_pause_description))
.build());
} else {
commandButtons.add(
new CommandButton.Builder(CommandButton.ICON_PLAY)
.setPlayerCommand(COMMAND_PLAY_PAUSE)
.setExtras(commandButtonExtras)
.setDisplayName(context.getString(R.string.media3_controls_play_description))
.build());
}
}
// Skip to next action.
if (playerCommands.containsAny(COMMAND_SEEK_TO_NEXT, COMMAND_SEEK_TO_NEXT_MEDIA_ITEM)) {
Bundle commandButtonExtras = new Bundle();
commandButtonExtras.putInt(COMMAND_KEY_COMPACT_VIEW_INDEX, INDEX_UNSET);
commandButtons.add(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_NEXT)
.setPlayerCommand(COMMAND_SEEK_TO_NEXT_MEDIA_ITEM)
.setIconResId(R.drawable.media3_notification_seek_to_next)
.setExtras(commandButtonExtras)
.setDisplayName(context.getString(R.string.media3_controls_seek_to_next_description))
.build());

View File

@ -1266,12 +1266,10 @@ import java.util.concurrent.TimeoutException;
/* defaultValue= */ CommandButton.ICON_UNDEFINED)
: CommandButton.ICON_UNDEFINED;
CommandButton button =
new CommandButton.Builder()
new CommandButton.Builder(icon, customAction.getIcon())
.setSessionCommand(new SessionCommand(action, extras == null ? Bundle.EMPTY : extras))
.setDisplayName(customAction.getName())
.setEnabled(true)
.setIcon(icon)
.setIconResId(customAction.getIcon())
.build();
layout.add(button);
}

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M480,660Q555,660 607.5,607.5Q660,555 660,480Q660,405 607.5,352.5Q555,300 480,300Q405,300 352.5,352.5Q300,405 300,480Q300,555 352.5,607.5Q405,660 480,660ZM480,520Q463,520 451.5,508.5Q440,497 440,480Q440,463 451.5,451.5Q463,440 480,440Q497,440 508.5,451.5Q520,463 520,480Q520,497 508.5,508.5Q497,520 480,520ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M740,400L880,400L880,480L800,480L800,700Q800,742 771,771Q742,800 700,800Q658,800 629,771Q600,742 600,700Q600,658 629,629Q658,600 700,600Q708,600 718,601.5Q728,603 740,608L740,400ZM120,800L120,688Q120,653 137.5,625Q155,597 184,582Q246,551 310,535.5Q374,520 440,520Q482,520 523.5,526.5Q565,533 607,546Q587,558 571,575Q555,592 543,612Q517,606 491.5,603Q466,600 440,600Q383,600 328,614Q273,628 220,654Q211,659 205.5,668Q200,677 200,688L200,720L521,720Q523,740 530.5,760Q538,780 551,800L120,800ZM440,480Q374,480 327,433Q280,386 280,320Q280,254 327,207Q374,160 440,160Q506,160 553,207Q600,254 600,320Q600,386 553,433Q506,480 440,480ZM440,400Q473,400 496.5,376.5Q520,353 520,320Q520,287 496.5,263.5Q473,240 440,240Q407,240 383.5,263.5Q360,287 360,320Q360,353 383.5,376.5Q407,400 440,400ZM440,320Q440,320 440,320Q440,320 440,320Q440,320 440,320Q440,320 440,320Q440,320 440,320Q440,320 440,320Q440,320 440,320Q440,320 440,320ZM440,720L440,720L440,720Q440,720 440,720Q440,720 440,720Q440,720 440,720Q440,720 440,720Q440,720 440,720Q440,720 440,720Q440,720 440,720Q440,720 440,720Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q534,800 584,782.5Q634,765 676,732L228,284Q195,326 177.5,376Q160,426 160,480Q160,614 253,707Q346,800 480,800ZM732,676Q765,634 782.5,584Q800,534 800,480Q800,346 707,253Q614,160 480,160Q426,160 376,177.5Q326,195 284,228L732,676Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M200,840L200,200Q200,167 223.5,143.5Q247,120 280,120L680,120Q713,120 736.5,143.5Q760,167 760,200L760,840L480,720L200,840Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M200,840L200,200Q200,167 223.5,143.5Q247,120 280,120L680,120Q713,120 736.5,143.5Q760,167 760,200L760,840L480,720L200,840ZM280,718L480,632L680,718L680,200Q680,200 680,200Q680,200 680,200L280,200Q280,200 280,200Q280,200 280,200L280,718ZM280,200L280,200Q280,200 280,200Q280,200 280,200L680,200Q680,200 680,200Q680,200 680,200L680,200L480,200L280,200Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M424,664L706,382L650,326L424,552L310,438L254,494L424,664ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M424,664L706,382L650,326L424,552L310,438L254,494L424,664ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M200,800Q167,800 143.5,776.5Q120,753 120,720L120,240Q120,207 143.5,183.5Q167,160 200,160L760,160Q793,160 816.5,183.5Q840,207 840,240L840,720Q840,753 816.5,776.5Q793,800 760,800L200,800ZM200,720L760,720Q760,720 760,720Q760,720 760,720L760,240Q760,240 760,240Q760,240 760,240L200,240Q200,240 200,240Q200,240 200,240L200,720Q200,720 200,720Q200,720 200,720ZM280,600L400,600Q417,600 428.5,588.5Q440,577 440,560L440,520L380,520L380,540Q380,540 380,540Q380,540 380,540L300,540Q300,540 300,540Q300,540 300,540L300,420Q300,420 300,420Q300,420 300,420L380,420Q380,420 380,420Q380,420 380,420L380,440L440,440L440,400Q440,383 428.5,371.5Q417,360 400,360L280,360Q263,360 251.5,371.5Q240,383 240,400L240,560Q240,577 251.5,588.5Q263,600 280,600ZM560,600L680,600Q697,600 708.5,588.5Q720,577 720,560L720,520L660,520L660,540Q660,540 660,540Q660,540 660,540L580,540Q580,540 580,540Q580,540 580,540L580,420Q580,420 580,420Q580,420 580,420L660,420Q660,420 660,420Q660,420 660,420L660,440L720,440L720,400Q720,383 708.5,371.5Q697,360 680,360L560,360Q543,360 531.5,371.5Q520,383 520,400L520,560Q520,577 531.5,588.5Q543,600 560,600ZM200,720Q200,720 200,720Q200,720 200,720L200,240Q200,240 200,240Q200,240 200,240L200,240Q200,240 200,240Q200,240 200,240L200,720Q200,720 200,720Q200,720 200,720L200,720Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M361,360L421,420L300,420Q300,420 300,420Q300,420 300,420L300,540Q300,540 300,540Q300,540 300,540L380,540Q380,540 380,540Q380,540 380,540L380,520L440,520L440,560Q440,577 428.5,588.5Q417,600 400,600L280,600Q263,600 251.5,588.5Q240,577 240,560L240,400Q240,383 251.5,371.5Q263,360 280,360L361,360ZM275,160L760,160Q793,160 816.5,183.5Q840,207 840,240L840,725L760,645L760,240Q760,240 760,240Q760,240 760,240L355,240L275,160ZM720,520L720,560Q720,569 716.5,577.5Q713,586 706,591L706,591L655,540L660,540L660,520L720,520ZM660,440L660,420Q660,420 660,420Q660,420 660,420L580,420Q580,420 580,420Q580,420 580,420L580,465L520,405L520,400Q520,383 531.5,371.5Q543,360 560,360L680,360Q697,360 708.5,371.5Q720,383 720,400L720,440L660,440ZM558,442L558,442L558,442Q558,442 558,442Q558,442 558,442L558,442ZM404,516L404,516Q404,516 404,516Q404,516 404,516L404,516Q404,516 404,516Q404,516 404,516L404,516ZM168,167L241,240L200,240Q200,240 200,240Q200,240 200,240L200,720Q200,720 200,720Q200,720 200,720L607,720L27,140L84,83L876,875L819,932L687,800L200,800Q167,800 143.5,776.5Q120,753 120,720L120,240Q120,215 133.5,195.5Q147,176 168,167Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M100,720L100,240L460,480L100,720ZM500,720L500,240L860,480L500,720Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M200,840Q167,840 143.5,816.5Q120,793 120,760Q120,727 143.5,703.5Q167,680 200,680Q233,680 256.5,703.5Q280,727 280,760Q280,793 256.5,816.5Q233,840 200,840ZM680,840Q680,723 636,621.5Q592,520 516,444Q440,368 338.5,324Q237,280 120,280L120,160Q262,160 385,213Q508,266 601,359Q694,452 747,575Q800,698 800,840L680,840ZM440,840Q440,773 415,715.5Q390,658 346,614Q302,570 244.5,545Q187,520 120,520L120,400Q212,400 291.5,434.5Q371,469 431,529Q491,589 525.5,668.5Q560,748 560,840L440,840Z"/>
</vector>

View File

@ -0,0 +1,24 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:autoMirrored="true">
<path
android:fillColor="@android:color/white"
android:pathData="M200,840L200,160L560,160L576,240L800,240L800,640L520,640L504,560L280,560L280,840L200,840Z"/>
</vector>

View File

@ -0,0 +1,24 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:autoMirrored="true">
<path
android:fillColor="@android:color/white"
android:pathData="M200,840L200,160L560,160L576,240L800,240L800,640L520,640L504,560L280,560L280,840L200,840ZM500,400L500,400L500,400L500,400L500,400L500,400L500,400L500,400L500,400ZM586,560L720,560L720,320L510,320L494,240L280,240L280,480L570,480L586,560Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M480,840L422,788Q321,697 255,631Q189,565 150,512.5Q111,460 95.5,416Q80,372 80,326Q80,232 143,169Q206,106 300,106Q352,106 399,128Q446,150 480,190Q514,150 561,128Q608,106 660,106Q754,106 817,169Q880,232 880,326Q880,372 864.5,416Q849,460 810,512.5Q771,565 705,631Q639,697 538,788L480,840Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M480,840L422,788Q321,697 255,631Q189,565 150,512.5Q111,460 95.5,416Q80,372 80,326Q80,232 143,169Q206,106 300,106Q352,106 399,128Q446,150 480,190Q514,150 561,128Q608,106 660,106Q754,106 817,169Q880,232 880,326Q880,372 864.5,416Q849,460 810,512.5Q771,565 705,631Q639,697 538,788L480,840ZM480,732Q576,646 638,584.5Q700,523 736,477.5Q772,432 786,396.5Q800,361 800,326Q800,266 760,226Q720,186 660,186Q613,186 573,212.5Q533,239 518,280L518,280L442,280L442,280Q427,239 387,212.5Q347,186 300,186Q240,186 200,226Q160,266 160,326Q160,361 174,396.5Q188,432 224,477.5Q260,523 322,584.5Q384,646 480,732ZM480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459L480,459L480,459L480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M200,520L200,440L760,440L760,520L200,520Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="m680,520v-80L280,440v80zM480,880c-55.33,0 -107.33,-10.5 -156,-31.5 -48.67,-21 -91,-49.5 -127,-85.5 -36,-36 -64.5,-78.33 -85.5,-127 -21,-48.67 -31.5,-100.67 -31.5,-156 0,-55.33 10.5,-107.33 31.5,-156 21,-48.67 49.5,-91 85.5,-127 36,-36 78.33,-64.5 127,-85.5 48.67,-21 100.67,-31.5 156,-31.5 55.33,0 107.33,10.5 156,31.5 48.67,21 91,49.5 127,85.5 36,36 64.5,78.33 85.5,127 21,48.67 31.5,100.67 31.5,156 0,55.33 -10.5,107.33 -31.5,156 -21,48.67 -49.5,91 -85.5,127 -36,36 -78.33,64.5 -127,85.5 -48.67,21 -100.67,31.5 -156,31.5z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="m680,520v-80L280,440v80zM480,880c-55.33,0 -107.33,-10.5 -156,-31.5 -48.67,-21 -91,-49.5 -127,-85.5 -36,-36 -64.5,-78.33 -85.5,-127 -21,-48.67 -31.5,-100.67 -31.5,-156 0,-55.33 10.5,-107.33 31.5,-156 21,-48.67 49.5,-91 85.5,-127 36,-36 78.33,-64.5 127,-85.5 48.67,-21 100.67,-31.5 156,-31.5 55.33,0 107.33,10.5 156,31.5 48.67,21 91,49.5 127,85.5 36,36 64.5,78.33 85.5,127 21,48.67 31.5,100.67 31.5,156 0,55.33 -10.5,107.33 -31.5,156 -21,48.67 -49.5,91 -85.5,127 -36,36 -78.33,64.5 -127,85.5 -48.67,21 -100.67,31.5 -156,31.5zM480,800c89.33,0 165,-31 227,-93 62,-62 93,-137.67 93,-227 0,-89.33 -31,-165 -93,-227 -62,-62 -137.67,-93 -227,-93 -89.33,0 -165,31 -227,93 -62,62 -93,137.67 -93,227 0,89.33 31,165 93,227 62,62 137.67,93 227,93z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M660,720L660,240L740,240L740,720L660,720ZM220,720L220,240L580,480L220,720Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M560,760L560,200L720,200L720,760L560,760ZM240,760L240,200L400,200L400,760L240,760Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M320,760L320,200L760,480L320,760Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M170,732Q132,688 109,634Q86,580 80,520L162,520Q168,564 184,603.5Q200,643 226,676L170,732ZM80,440Q88,380 110,326Q132,272 170,228L226,284Q200,317 184,356.5Q168,396 162,440L80,440ZM438,878Q378,872 324.5,849Q271,826 226,790L282,732Q317,758 355.5,775Q394,792 438,798L438,878ZM284,228L226,170Q271,134 324.5,111Q378,88 440,82L440,162Q395,168 356,185Q317,202 284,228ZM380,660L380,300L660,480L380,660ZM520,878L520,798Q641,781 720.5,691Q800,601 800,480Q800,359 720.5,269Q641,179 520,162L520,82Q674,99 777,212Q880,325 880,480Q880,635 777,748Q674,861 520,878Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M180.55,280C169.66,280 160.49,286.36 153.13,299.14C145.76,311.92 142.11,327.75 142.11,346.64L142.11,613.36C142.11,632.25 145.76,648.08 153.13,660.86C160.49,673.64 169.66,680 180.55,680L257.42,680C268.31,680 277.4,673.64 284.77,660.86C292.13,648.08 295.78,632.25 295.78,613.36L295.78,346.64C295.78,327.75 292.13,311.92 284.77,299.14C277.4,286.36 268.31,280 257.42,280L180.55,280zM413.67,280L413.67,520L531.48,520L531.48,600L413.67,600L413.67,680L531.48,680C547.68,680 561.51,672.15 573.05,656.48C584.58,640.82 590.39,622 590.39,600L590.39,520C590.39,498 584.58,479.18 573.05,463.52C561.51,447.85 547.68,440 531.48,440L472.66,440L472.66,360L590.39,360L590.39,280L413.67,280zM618.2,280L692.97,480L618.2,680L668.05,680L717.89,547.03L767.73,680L817.58,680L742.81,480L817.58,280L767.73,280L717.89,412.97L668.05,280L618.2,280zM199.77,380L238.2,380L238.2,580L199.77,580L199.77,380zM325.39,600L325.39,680L384.22,680L384.22,600L325.39,600z" />
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M180.55,280C169.66,280 160.49,286.36 153.13,299.14C145.76,311.92 142.11,327.75 142.11,346.64L142.11,613.36C142.11,632.25 145.76,648.08 153.13,660.86C160.49,673.64 169.66,680 180.55,680L257.42,680C268.31,680 277.4,673.64 284.77,660.86C292.13,648.08 295.78,632.25 295.78,613.36L295.78,346.64C295.78,327.75 292.13,311.92 284.77,299.14C277.4,286.36 268.31,280 257.42,280L180.55,280zM472.89,280C456.79,280 443.03,287.85 431.56,303.52C420.09,319.18 414.38,338 414.38,360L414.38,420C414.38,437.33 418.5,451.64 426.8,462.97C435.09,474.3 445.67,480 458.36,480C445.67,480 435.09,485.7 426.8,497.03C418.5,508.36 414.38,522.67 414.38,540L414.38,600C414.38,622 420.09,640.82 431.56,656.48C443.03,672.15 456.79,680 472.89,680L531.48,680C547.59,680 561.42,672.15 572.89,656.48C584.36,640.82 590.08,622 590.08,600L590.08,540C590.08,522.67 585.87,508.36 577.58,497.03C569.28,485.7 558.86,480 546.17,480C558.86,480 569.28,474.3 577.58,462.97C585.87,451.64 590.08,437.33 590.08,420L590.08,360C590.08,338 584.36,319.18 572.89,303.52C561.42,287.85 547.59,280 531.48,280L472.89,280zM618.2,280L692.97,480L618.2,680L668.05,680L717.89,547.03L767.73,680L817.58,680L742.81,480L817.58,280L767.73,280L717.89,412.97L668.05,280L618.2,280zM472.89,360L531.48,360L531.48,440L472.89,440L472.89,360zM199.77,380L238.2,380L238.2,580L199.77,580L199.77,380zM472.89,520L531.48,520L531.48,600L472.89,600L472.89,520zM325.39,600L325.39,680L384.22,680L384.22,600L325.39,600z" />
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M180,280L180,360L237.89,360L237.89,538.67L237.89,680L295.78,680L295.78,280L180,280zM457.81,280C445.32,280 434.86,286.36 426.41,299.14C417.96,311.92 413.75,327.75 413.75,346.64L413.75,613.36C413.75,632.25 417.96,648.08 426.41,660.86C434.86,673.64 445.32,680 457.81,680L546.02,680C558.51,680 568.97,673.64 577.42,660.86C585.87,648.08 590.08,632.25 590.08,613.36L590.08,346.64C590.08,327.75 585.87,311.92 577.42,299.14C568.97,286.36 558.51,280 546.02,280L457.81,280zM618.2,280L692.97,480L618.2,680L668.05,680L717.89,547.03L767.73,680L817.58,680L742.81,480L817.58,280L767.73,280L717.89,412.97L668.05,280L618.2,280zM479.92,380L524.06,380L524.06,580L479.92,580L479.92,380zM325.39,600L325.39,680L384.22,680L384.22,600L325.39,600z" />
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M180,280L180,360L237.89,360L237.89,538.67L237.89,680L295.78,680L295.78,280L180,280zM413.75,280L413.75,360L531.33,360L531.33,440L472.58,440C456.41,440 442.53,447.85 431.02,463.52C419.5,479.18 413.75,498 413.75,520L413.75,680L590.16,680L590.16,600L472.58,600L472.58,520L531.33,520C547.5,520 561.38,512.15 572.89,496.48C584.4,480.82 590.16,462 590.16,440L590.16,360C590.16,338 584.4,319.18 572.89,303.52C561.38,287.85 547.5,280 531.33,280L413.75,280zM618.2,280L692.97,480L618.2,680L668.05,680L717.89,547.03L767.73,680L817.58,680L742.81,480L817.58,280L767.73,280L717.89,412.97L668.05,280L618.2,280zM325.39,600L325.39,680L384.22,680L384.22,600L325.39,600z" />
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M180,280L180,360L237.89,360L237.89,538.67L237.89,680L295.78,680L295.78,280L180,280zM413.67,280L413.67,520L531.48,520L531.48,600L413.67,600L413.67,680L531.48,680C547.68,680 561.51,672.15 573.05,656.48C584.58,640.82 590.39,622 590.39,600L590.39,520C590.39,498 584.58,479.18 573.05,463.52C561.51,447.85 547.68,440 531.48,440L472.66,440L472.66,360L590.39,360L590.39,280L413.67,280zM618.2,280L692.97,480L618.2,680L668.05,680L717.89,547.03L767.73,680L817.58,680L742.81,480L817.58,280L767.73,280L717.89,412.97L668.05,280L618.2,280zM325.39,600L325.39,680L384.22,680L384.22,600L325.39,600z" />
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M180,280L180,360L237.89,360L237.89,538.67L237.89,680L295.78,680L295.78,280L180,280zM472.89,280C456.79,280 443.03,287.85 431.56,303.52C420.09,319.18 414.38,338 414.38,360L414.38,420C414.38,437.33 418.5,451.64 426.8,462.97C435.09,474.3 445.67,480 458.36,480C445.67,480 435.09,485.7 426.8,497.03C418.5,508.36 414.38,522.67 414.38,540L414.38,600C414.38,622 420.09,640.82 431.56,656.48C443.03,672.15 456.79,680 472.89,680L531.48,680C547.59,680 561.42,672.15 572.89,656.48C584.36,640.82 590.08,622 590.08,600L590.08,540C590.08,522.67 585.87,508.36 577.58,497.03C569.28,485.7 558.86,480 546.17,480C558.86,480 569.28,474.3 577.58,462.97C585.87,451.64 590.08,437.33 590.08,420L590.08,360C590.08,338 584.36,319.18 572.89,303.52C561.42,287.85 547.59,280 531.48,280L472.89,280zM618.2,280L692.97,480L618.2,680L668.05,680L717.89,547.03L767.73,680L817.58,680L742.81,480L817.58,280L767.73,280L717.89,412.97L668.05,280L618.2,280zM472.89,360L531.48,360L531.48,440L472.89,440L472.89,360zM472.89,520L531.48,520L531.48,600L472.89,600L472.89,520zM325.39,600L325.39,680L384.22,680L384.22,600L325.39,600z" />
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M142.03,280L142.03,360L244.53,360L244.53,440L193.28,440C179.19,440 167.15,447.85 157.11,463.52C147.07,479.18 142.03,498 142.03,520L142.03,680L295.78,680L295.78,600L193.28,600L193.28,520L244.53,520C258.63,520 270.74,512.15 280.78,496.48C290.82,480.82 295.78,462 295.78,440L295.78,360C295.78,338 290.82,319.18 280.78,303.52C270.74,287.85 258.63,280 244.53,280L142.03,280zM457.81,280C445.32,280 434.86,286.36 426.41,299.14C417.96,311.92 413.75,327.75 413.75,346.64L413.75,613.36C413.75,632.25 417.96,648.08 426.41,660.86C434.86,673.64 445.32,680 457.81,680L546.02,680C558.51,680 568.97,673.64 577.42,660.86C585.87,648.08 590.08,632.25 590.08,613.36L590.08,346.64C590.08,327.75 585.87,311.92 577.42,299.14C568.97,286.36 558.51,280 546.02,280L457.81,280zM618.2,280L692.97,480L618.2,680L668.05,680L717.89,547.03L767.73,680L817.58,680L742.81,480L817.58,280L767.73,280L717.89,412.97L668.05,280L618.2,280zM479.92,380L524.06,380L524.06,580L479.92,580L479.92,380zM325.39,600L325.39,680L384.22,680L384.22,600L325.39,600z" />
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M120,640L120,560L400,560L400,640L120,640ZM120,480L120,400L560,400L560,480L120,480ZM120,320L120,240L560,240L560,320L120,320ZM640,800L640,640L480,640L480,560L640,560L640,400L720,400L720,560L880,560L880,640L720,640L720,800L640,800Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M576,880L520,824L624,720L520,616L576,560L680,664L784,560L840,616L736,720L840,824L784,880L680,776L576,880ZM120,640L120,560L400,560L400,640L120,640ZM120,480L120,400L560,400L560,480L120,480ZM120,320L120,240L560,240L560,320L120,320Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M440,520L200,520L200,440L440,440L440,200L520,200L520,440L760,440L760,520L520,520L520,760L440,760L440,520Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M440,680L520,680L520,520L680,520L680,440L520,440L520,280L440,280L440,440L280,440L280,520L440,520L440,680ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M440,680L520,680L520,520L680,520L680,440L520,440L520,280L440,280L440,440L280,440L280,520L440,520L440,680ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M220,720L220,240L300,240L300,720L220,720ZM740,720L380,480L740,240L740,720Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M440,840L440,600L520,600L520,680L840,680L840,760L520,760L520,840L440,840ZM120,760L120,680L360,680L360,760L120,760ZM280,600L280,520L120,520L120,440L280,440L280,360L360,360L360,600L280,600ZM440,520L440,440L840,440L840,520L440,520ZM600,360L600,120L680,120L680,200L840,200L840,280L680,280L680,360L600,360ZM120,280L120,200L520,200L520,280L120,280Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M197,763Q143,708 111.5,635.5Q80,563 80,480Q80,396 111.5,323.5Q143,251 197,197L254,254Q210,298 185,356Q160,414 160,480Q160,547 185,605Q210,663 254,706L197,763ZM310,650Q278,617 259,573.5Q240,530 240,480Q240,429 259,385.5Q278,342 310,310L367,367Q345,389 332.5,418Q320,447 320,480Q320,513 332.5,542Q345,571 367,593L310,650ZM480,560Q447,560 423.5,536.5Q400,513 400,480Q400,447 423.5,423.5Q447,400 480,400Q513,400 536.5,423.5Q560,447 560,480Q560,513 536.5,536.5Q513,560 480,560ZM650,650L593,593Q615,571 627.5,542Q640,513 640,480Q640,447 627.5,418Q615,389 593,367L650,310Q682,342 701,385.5Q720,429 720,480Q720,530 701,573.5Q682,617 650,650ZM763,763L706,706Q750,662 775,604Q800,546 800,480Q800,413 775,355Q750,297 706,254L763,197Q817,251 848.5,323.5Q880,396 880,480Q880,563 848.5,635.5Q817,708 763,763Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M280,880L120,720L280,560L336,618L274,680L680,680L680,520L760,520L760,760L274,760L336,822L280,880ZM200,440L200,200L686,200L624,138L680,80L840,240L680,400L624,342L686,280L280,280L280,440L200,440Z"/>
</vector>

View File

@ -0,0 +1,24 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillAlpha=".3"
android:fillColor="@android:color/white"
android:pathData="M280,880L120,720L280,560L336,618L274,680L680,680L680,520L760,520L760,760L274,760L336,822L280,880ZM200,440L200,200L686,200L624,138L680,80L840,240L680,400L624,342L686,280L280,280L280,440L200,440Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M460,600L460,420L400,420L400,360L520,360L520,600L460,600ZM280,880L120,720L280,560L336,618L274,680L680,680L680,520L760,520L760,760L274,760L336,822L280,880ZM200,440L200,200L686,200L624,138L680,80L840,240L680,400L624,342L686,280L280,280L280,440L200,440Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M860,720L500,480L860,240L860,720ZM460,720L100,480L460,240L460,720Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M370,880L354,752Q341,747 329.5,740Q318,733 307,725L188,775L78,585L181,507Q180,500 180,493.5Q180,487 180,480Q180,473 180,466.5Q180,460 181,453L78,375L188,185L307,235Q318,227 330,220Q342,213 354,208L370,80L590,80L606,208Q619,213 630.5,220Q642,227 653,235L772,185L882,375L779,453Q780,460 780,466.5Q780,473 780,480Q780,487 780,493.5Q780,500 778,507L881,585L771,775L653,725Q642,733 630,740Q618,747 606,752L590,880L370,880ZM482,620Q540,620 581,579Q622,538 622,480Q622,422 581,381Q540,340 482,340Q423,340 382.5,381Q342,422 342,480Q342,538 382.5,579Q423,620 482,620Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M720,880Q670,880 635,845Q600,810 600,760Q600,753 601,745.5Q602,738 604,732L322,568Q305,583 284,591.5Q263,600 240,600Q190,600 155,565Q120,530 120,480Q120,430 155,395Q190,360 240,360Q263,360 284,368.5Q305,377 322,392L604,228Q602,222 601,214.5Q600,207 600,200Q600,150 635,115Q670,80 720,80Q770,80 805,115Q840,150 840,200Q840,250 805,285Q770,320 720,320Q697,320 676,311.5Q655,303 638,288L356,452Q358,458 359,465.5Q360,473 360,480Q360,487 359,494.5Q358,502 356,508L638,672Q655,657 676,648.5Q697,640 720,640Q770,640 805,675Q840,710 840,760Q840,810 805,845Q770,880 720,880ZM720,240Q737,240 748.5,228.5Q760,217 760,200Q760,183 748.5,171.5Q737,160 720,160Q703,160 691.5,171.5Q680,183 680,200Q680,217 691.5,228.5Q703,240 720,240ZM240,520Q257,520 268.5,508.5Q280,497 280,480Q280,463 268.5,451.5Q257,440 240,440Q223,440 211.5,451.5Q200,463 200,480Q200,497 211.5,508.5Q223,520 240,520ZM720,800Q737,800 748.5,788.5Q760,777 760,760Q760,743 748.5,731.5Q737,720 720,720Q703,720 691.5,731.5Q680,743 680,760Q680,777 691.5,788.5Q703,800 720,800ZM720,200Q720,200 720,200Q720,200 720,200Q720,200 720,200Q720,200 720,200Q720,200 720,200Q720,200 720,200Q720,200 720,200Q720,200 720,200ZM240,480Q240,480 240,480Q240,480 240,480Q240,480 240,480Q240,480 240,480Q240,480 240,480Q240,480 240,480Q240,480 240,480Q240,480 240,480ZM720,760Q720,760 720,760Q720,760 720,760Q720,760 720,760Q720,760 720,760Q720,760 720,760Q720,760 720,760Q720,760 720,760Q720,760 720,760Z"/>
</vector>

View File

@ -0,0 +1,24 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillAlpha=".3"
android:fillColor="@android:color/white"
android:pathData="M560,800L560,720L664,720L537,593L594,536L720,662L720,560L800,560L800,800L560,800ZM216,800L160,744L664,240L560,240L560,160L800,160L800,400L720,400L720,296L216,800ZM367,423L160,216L216,160L423,367L367,423Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M560,800L560,720L664,720L537,593L594,536L720,662L720,560L800,560L800,800L560,800ZM216,800L160,744L664,240L560,240L560,160L800,160L800,400L720,400L720,296L216,800ZM367,423L160,216L216,160L423,367L367,423Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M232.66,82.27L187.97,187.97L73.05,197.97L160.08,273.44L134.14,385.55L232.66,326.09L327.11,383.05L367.03,422.97L422.97,367.03L318.2,262.27L392.34,197.97L277.42,187.97L232.66,82.27zM560,160L560,240L663.98,240L160,743.98L216.02,800L720,296.02L720,400L800,400L800,160L560,160zM593.98,536.02L537.03,592.97L663.98,720L560,720L560,800L800,800L800,560L720,560L720,662.03L593.98,536.02z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M440,880L440,549Q422,538 411,520.5Q400,503 400,480Q400,447 423.5,423.5Q447,400 480,400Q513,400 536.5,423.5Q560,447 560,480Q560,503 549,521Q538,539 520,549L520,880L440,880ZM204,770Q147,715 113.5,640.5Q80,566 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,566 846.5,641Q813,716 756,770L700,714Q746,670 773,609.5Q800,549 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,549 187,609Q214,669 261,713L204,770ZM317,657Q282,624 261,578.5Q240,533 240,480Q240,380 310,310Q380,240 480,240Q580,240 650,310Q720,380 720,480Q720,533 699,579Q678,625 643,657L586,600Q611,577 625.5,546Q640,515 640,480Q640,414 593,367Q546,320 480,320Q414,320 367,367Q320,414 320,480Q320,516 334.5,546.5Q349,577 374,600L317,657Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M480,880Q405,880 339.5,851.5Q274,823 225.5,774.5Q177,726 148.5,660.5Q120,595 120,520L200,520Q200,637 281.5,718.5Q363,800 480,800Q597,800 678.5,718.5Q760,637 760,520Q760,403 678.5,321.5Q597,240 480,240L474,240L536,302L480,360L320,200L480,40L536,98L474,160L480,160Q555,160 620.5,188.5Q686,217 734.5,265.5Q783,314 811.5,379.5Q840,445 840,520Q840,595 811.5,660.5Q783,726 734.5,774.5Q686,823 620.5,851.5Q555,880 480,880Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M480,880Q405,880 339.5,851.5Q274,823 225.5,774.5Q177,726 148.5,660.5Q120,595 120,520L200,520Q200,637 281.5,718.5Q363,800 480,800Q597,800 678.5,718.5Q760,637 760,520Q760,403 678.5,321.5Q597,240 480,240L474,240L536,302L480,360L320,200L480,40L536,98L474,160L480,160Q555,160 620.5,188.5Q686,217 734.5,265.5Q783,314 811.5,379.5Q840,445 840,520Q840,595 811.5,660.5Q783,726 734.5,774.5Q686,823 620.5,851.5Q555,880 480,880ZM360,640L360,460L300,460L300,400L420,400L420,640L360,640ZM500,640Q483,640 471.5,628.5Q460,617 460,600L460,440Q460,423 471.5,411.5Q483,400 500,400L580,400Q597,400 608.5,411.5Q620,423 620,440L620,600Q620,617 608.5,628.5Q597,640 580,640L500,640ZM520,580L560,580Q560,580 560,580Q560,580 560,580L560,460Q560,460 560,460Q560,460 560,460L520,460Q520,460 520,460Q520,460 520,460L520,580Q520,580 520,580Q520,580 520,580Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M478.75,40L318.75,200L478.75,360L534.77,302.03L472.73,240L478.75,240C556.75,240 622.93,267.15 677.27,321.48C731.6,375.82 758.75,442 758.75,520C758.75,598 731.6,664.18 677.27,718.52C622.93,772.85 556.75,800 478.75,800C400.75,800 334.57,772.85 280.23,718.52C225.9,664.18 198.75,598 198.75,520L118.75,520C118.75,570 128.27,616.8 147.27,660.47C166.27,704.14 191.89,742.2 224.22,774.53C256.55,806.86 294.61,832.48 338.28,851.48C381.95,870.48 428.75,880 478.75,880C528.75,880 575.55,870.48 619.22,851.48C662.89,832.48 700.95,806.86 733.28,774.53C765.61,742.2 791.23,704.14 810.23,660.47C829.23,616.8 838.75,570 838.75,520C838.75,470 829.23,423.2 810.23,379.53C791.23,335.86 765.61,297.8 733.28,265.47C700.95,233.14 662.89,207.52 619.22,188.52C575.55,169.52 528.75,160 478.75,160L472.73,160L534.77,97.97L478.75,40zM297.5,399.84L297.5,459.84L357.5,459.84L357.5,639.84L417.5,639.84L417.5,399.84L297.5,399.84zM459.38,399.84L459.38,539.84L579.38,539.84L579.38,579.84L459.38,579.84L459.38,639.84L599.38,639.84C610.71,639.84 620.22,636.03 627.89,628.36C635.56,620.69 639.38,611.18 639.38,599.84L639.38,539.84C639.38,528.51 635.56,519.07 627.89,511.41C620.22,503.74 610.71,499.84 599.38,499.84L519.38,499.84L519.38,459.84L639.38,459.84L639.38,399.84L459.38,399.84z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M480,880Q405,880 339.5,851.5Q274,823 225.5,774.5Q177,726 148.5,660.5Q120,595 120,520L200,520Q200,637 281.5,718.5Q363,800 480,800Q597,800 678.5,718.5Q760,637 760,520Q760,403 678.5,321.5Q597,240 480,240L474,240L536,302L480,360L320,200L480,40L536,98L474,160L480,160Q555,160 620.5,188.5Q686,217 734.5,265.5Q783,314 811.5,379.5Q840,445 840,520Q840,595 811.5,660.5Q783,726 734.5,774.5Q686,823 620.5,851.5Q555,880 480,880ZM300,640L300,580L400,580L400,540L340,540L340,500L400,500L400,460L300,460L300,400L420,400Q437,400 448.5,411.5Q460,423 460,440L460,600Q460,617 448.5,628.5Q437,640 420,640L300,640ZM540,640Q523,640 511.5,628.5Q500,617 500,600L500,440Q500,423 511.5,411.5Q523,400 540,400L620,400Q637,400 648.5,411.5Q660,423 660,440L660,600Q660,617 648.5,628.5Q637,640 620,640L540,640ZM560,580L600,580Q600,580 600,580Q600,580 600,580L600,460Q600,460 600,460Q600,460 600,460L560,460Q560,460 560,460Q560,460 560,460L560,580Q560,580 560,580Q560,580 560,580Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M480,880Q405,880 339.5,851.5Q274,823 225.5,774.5Q177,726 148.5,660.5Q120,595 120,520L200,520Q200,637 281.5,718.5Q363,800 480,800Q597,800 678.5,718.5Q760,637 760,520Q760,403 678.5,321.5Q597,240 480,240L474,240L536,302L480,360L320,200L480,40L536,98L474,160L480,160Q555,160 620.5,188.5Q686,217 734.5,265.5Q783,314 811.5,379.5Q840,445 840,520Q840,595 811.5,660.5Q783,726 734.5,774.5Q686,823 620.5,851.5Q555,880 480,880ZM380,640L380,580L500,580L500,540L380,540L380,400L560,400L560,460L440,460L440,500L520,500Q537,500 548.5,511.5Q560,523 560,540L560,600Q560,617 548.5,628.5Q537,640 520,640L380,640Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M480,880Q405,880 339.5,851.5Q274,823 225.5,774.5Q177,726 148.5,660.5Q120,595 120,520Q120,445 148.5,379.5Q177,314 225.5,265.5Q274,217 339.5,188.5Q405,160 480,160L486,160L424,98L480,40L640,200L480,360L424,302L486,240L480,240Q363,240 281.5,321.5Q200,403 200,520Q200,637 281.5,718.5Q363,800 480,800Q597,800 678.5,718.5Q760,637 760,520L840,520Q840,595 811.5,660.5Q783,726 734.5,774.5Q686,823 620.5,851.5Q555,880 480,880Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M360,640L360,460L300,460L300,400L420,400L420,640L360,640ZM500,640Q483,640 471.5,628.5Q460,617 460,600L460,440Q460,423 471.5,411.5Q483,400 500,400L580,400Q597,400 608.5,411.5Q620,423 620,440L620,600Q620,617 608.5,628.5Q597,640 580,640L500,640ZM520,580L560,580Q560,580 560,580Q560,580 560,580L560,460Q560,460 560,460Q560,460 560,460L520,460Q520,460 520,460Q520,460 520,460L520,580Q520,580 520,580Q520,580 520,580ZM480,880Q405,880 339.5,851.5Q274,823 225.5,774.5Q177,726 148.5,660.5Q120,595 120,520Q120,445 148.5,379.5Q177,314 225.5,265.5Q274,217 339.5,188.5Q405,160 480,160L486,160L424,98L480,40L640,200L480,360L424,302L486,240L480,240Q363,240 281.5,321.5Q200,403 200,520Q200,637 281.5,718.5Q363,800 480,800Q597,800 678.5,718.5Q760,637 760,520L840,520Q840,595 811.5,660.5Q783,726 734.5,774.5Q686,823 620.5,851.5Q555,880 480,880Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M480,40L423.98,97.97L486.02,160L480,160C430,160 383.2,169.52 339.53,188.52C295.86,207.52 257.8,233.14 225.47,265.47C193.14,297.8 167.52,335.86 148.52,379.53C129.52,423.2 120,470 120,520C120,570 129.52,616.8 148.52,660.47C167.52,704.14 193.14,742.2 225.47,774.53C257.8,806.86 295.86,832.48 339.53,851.48C383.2,870.48 430,880 480,880C530,880 576.8,870.48 620.47,851.48C664.14,832.48 702.2,806.86 734.53,774.53C766.86,742.2 792.48,704.14 811.48,660.47C830.48,616.8 840,570 840,520L760,520C760,598 732.85,664.18 678.52,718.52C624.18,772.85 558,800 480,800C402,800 335.82,772.85 281.48,718.52C227.15,664.18 200,598 200,520C200,442 227.15,375.82 281.48,321.48C335.82,267.15 402,240 480,240L486.02,240L423.98,302.03L480,360L640,200L480,40zM459.38,399.84L459.38,539.84L579.38,539.84L579.38,579.84L459.38,579.84L459.38,639.84L599.38,639.84C610.71,639.84 620.22,636.03 627.89,628.36C635.56,620.69 639.38,611.18 639.38,599.84L639.38,539.84C639.38,528.51 635.56,519.07 627.89,511.41C620.22,503.74 610.71,499.84 599.38,499.84L519.38,499.84L519.38,459.84L639.38,459.84L639.38,399.84L459.38,399.84zM300,400L300,460L360,460L360,640L420,640L420,400L300,400z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M300,640L300,580L400,580L400,540L340,540L340,500L400,500L400,460L300,460L300,400L420,400Q437,400 448.5,411.5Q460,423 460,440L460,600Q460,617 448.5,628.5Q437,640 420,640L300,640ZM540,640Q523,640 511.5,628.5Q500,617 500,600L500,440Q500,423 511.5,411.5Q523,400 540,400L620,400Q637,400 648.5,411.5Q660,423 660,440L660,600Q660,617 648.5,628.5Q637,640 620,640L540,640ZM560,580L600,580Q600,580 600,580Q600,580 600,580L600,460Q600,460 600,460Q600,460 600,460L560,460Q560,460 560,460Q560,460 560,460L560,580Q560,580 560,580Q560,580 560,580ZM480,880Q405,880 339.5,851.5Q274,823 225.5,774.5Q177,726 148.5,660.5Q120,595 120,520Q120,445 148.5,379.5Q177,314 225.5,265.5Q274,217 339.5,188.5Q405,160 480,160L486,160L424,98L480,40L640,200L480,360L424,302L486,240L480,240Q363,240 281.5,321.5Q200,403 200,520Q200,637 281.5,718.5Q363,800 480,800Q597,800 678.5,718.5Q760,637 760,520L840,520Q840,595 811.5,660.5Q783,726 734.5,774.5Q686,823 620.5,851.5Q555,880 480,880Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M480,880Q405,880 339.5,851.5Q274,823 225.5,774.5Q177,726 148.5,660.5Q120,595 120,520Q120,445 148.5,379.5Q177,314 225.5,265.5Q274,217 339.5,188.5Q405,160 480,160L486,160L424,98L480,40L640,200L480,360L424,302L486,240L480,240Q363,240 281.5,321.5Q200,403 200,520Q200,637 281.5,718.5Q363,800 480,800Q597,800 678.5,718.5Q760,637 760,520L840,520Q840,595 811.5,660.5Q783,726 734.5,774.5Q686,823 620.5,851.5Q555,880 480,880ZM380,640L380,580L500,580L500,540L380,540L380,400L560,400L560,460L440,460L440,500L520,500Q537,500 548.5,511.5Q560,523 560,540L560,600Q560,617 548.5,628.5Q537,640 520,640L380,640Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M233,880L298,599L80,410L368,385L480,120L592,385L880,410L662,599L727,880L480,731L233,880Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M354,713L480,637L606,714L573,570L684,474L538,461L480,325L422,460L276,473L387,570L354,713ZM233,880L298,599L80,410L368,385L480,120L592,385L880,410L662,599L727,880L480,731L233,880ZM480,530L480,530L480,530L480,530L480,530L480,530L480,530L480,530L480,530L480,530L480,530Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M240,720L240,240L720,240L720,720L240,720Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M240,640L560,640L560,560L240,560L240,640ZM640,640L720,640L720,560L640,560L640,640ZM240,480L320,480L320,400L240,400L240,480ZM400,480L720,480L720,400L400,400L400,480ZM160,800Q127,800 103.5,776.5Q80,753 80,720L80,240Q80,207 103.5,183.5Q127,160 160,160L800,160Q833,160 856.5,183.5Q880,207 880,240L880,720Q880,753 856.5,776.5Q833,800 800,800L160,800ZM160,720L800,720Q800,720 800,720Q800,720 800,720L800,240Q800,240 800,240Q800,240 800,240L160,240Q160,240 160,240Q160,240 160,240L160,720Q160,720 160,720Q160,720 160,720ZM160,720Q160,720 160,720Q160,720 160,720L160,240Q160,240 160,240Q160,240 160,240L160,240Q160,240 160,240Q160,240 160,240L160,720Q160,720 160,720Q160,720 160,720L160,720Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M822,934L686,800L160,800Q127,800 103.5,776.5Q80,753 80,720L80,240Q80,207 103.5,183.5Q127,160 160,160L160,160L240,240L160,240Q160,240 160,240Q160,240 160,240L160,720Q160,720 160,720Q160,720 160,720L606,720L526,640L240,640L240,560L446,560L26,138L82,82L878,878L822,934ZM870,756L800,686L800,240Q800,240 800,240Q800,240 800,240L354,240L274,160L800,160Q833,160 856.5,183.5Q880,207 880,240L880,716Q880,727 878,737Q876,747 870,756ZM594,480L514,400L720,400L720,480L594,480ZM240,480L240,400L320,400L320,480L240,480ZM577,463L577,463L577,463Q577,463 577,463Q577,463 577,463L577,463ZM383,497L383,497Q383,497 383,497Q383,497 383,497L383,497Q383,497 383,497Q383,497 383,497L383,497Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M160,800L160,720L270,720L254,706Q202,660 181,601Q160,542 160,482Q160,371 226.5,284.5Q293,198 400,170L400,254Q328,280 284,342.5Q240,405 240,482Q240,527 257,569.5Q274,612 310,648L320,658L320,560L400,560L400,800L160,800ZM560,790L560,706Q632,680 676,617.5Q720,555 720,478Q720,433 703,390.5Q686,348 650,312L640,302L640,400L560,400L560,160L800,160L800,240L690,240L706,254Q755,303 777.5,360.5Q800,418 800,478Q800,589 733.5,675.5Q667,762 560,790Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M240,120L640,120L640,640L360,920L310,870Q303,863 298.5,851Q294,839 294,828L294,814L338,640L120,640Q88,640 64,616Q40,592 40,560L40,480Q40,473 41.5,465Q43,457 46,450L166,168Q175,148 196,134Q217,120 240,120ZM720,640L720,120L880,120L880,640L720,640Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M240,120L680,120L680,640L400,920L350,870Q343,863 338.5,851Q334,839 334,828L334,814L378,640L120,640Q88,640 64,616Q40,592 40,560L40,480Q40,473 42,465Q44,457 46,450L166,168Q175,148 196,134Q217,120 240,120ZM600,200L240,200Q240,200 240,200Q240,200 240,200L120,480L120,560Q120,560 120,560Q120,560 120,560L480,560L426,780L600,606L600,200ZM600,606L600,606L600,560L600,560Q600,560 600,560Q600,560 600,560L600,480L600,200Q600,200 600,200Q600,200 600,200L600,200L600,606ZM680,640L680,560L800,560L800,200L680,200L680,120L880,120L880,640L680,640Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M720,840L320,840L320,320L600,40L650,90Q657,97 661.5,109Q666,121 666,132L666,146L622,320L840,320Q872,320 896,344Q920,368 920,400L920,480Q920,487 918.5,495Q917,503 914,510L794,792Q785,812 764,826Q743,840 720,840ZM240,320L240,840L80,840L80,320L240,320Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M720,840L280,840L280,320L560,40L610,90Q617,97 621.5,109Q626,121 626,132L626,146L582,320L840,320Q872,320 896,344Q920,368 920,400L920,480Q920,487 918,495Q916,503 914,510L794,792Q785,812 764,826Q743,840 720,840ZM360,760L720,760Q720,760 720,760Q720,760 720,760L840,480L840,400Q840,400 840,400Q840,400 840,400L480,400L534,180L360,354L360,760ZM360,354L360,354L360,400L360,400Q360,400 360,400Q360,400 360,400L360,480L360,760Q360,760 360,760Q360,760 360,760L360,760L360,354ZM280,320L280,400L160,400L160,760L280,760L280,840L80,840L80,320L280,320Z"/>
</vector>

View File

@ -0,0 +1,23 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M200,600L200,360L360,360L560,160L560,800L360,600L200,600ZM640,640L640,318Q685,339 712.5,383Q740,427 740,480Q740,533 712.5,576Q685,619 640,640ZM480,354L394,440L280,440L280,520L394,520L480,606L480,354ZM380,480L380,480L380,480L380,480L380,480L380,480L380,480Z"/>
</vector>

View File

@ -0,0 +1,24 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:autoMirrored="true">
<path
android:fillColor="@android:color/white"
android:pathData="M792,904L671,783Q646,799 618,810.5Q590,822 560,829L560,747Q574,742 587.5,737Q601,732 613,725L480,592L480,800L280,600L120,600L120,360L248,360L56,168L112,112L848,848L792,904ZM784,672L726,614Q743,583 751.5,549Q760,515 760,479Q760,385 705,311Q650,237 560,211L560,129Q684,157 762,254.5Q840,352 840,479Q840,532 825.5,581Q811,630 784,672ZM650,538L560,448L560,318Q607,340 633.5,384Q660,428 660,480Q660,495 657.5,509.5Q655,524 650,538ZM480,368L376,264L480,160L480,368ZM400,606L400,512L328,440L328,440L200,440L200,520L314,520L400,606ZM364,476L364,476L364,476L364,476L364,476L364,476L364,476L364,476Z"/>
</vector>

View File

@ -0,0 +1,24 @@
<!-- Copyright 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:autoMirrored="true">
<path
android:fillColor="@android:color/white"
android:pathData="M560,829L560,747Q650,721 705,647Q760,573 760,479Q760,385 705,311Q650,237 560,211L560,129Q684,157 762,254.5Q840,352 840,479Q840,606 762,703.5Q684,801 560,829ZM120,600L120,360L280,360L480,160L480,800L280,600L120,600ZM560,640L560,318Q607,340 633.5,384Q660,428 660,480Q660,531 633.5,574.5Q607,618 560,640ZM400,354L314,440L200,440L200,520L314,520L400,606L400,354ZM300,480L300,480L300,480L300,480L300,480L300,480L300,480Z"/>
</vector>

View File

@ -14,11 +14,5 @@
limitations under the License.
-->
<resources>
<drawable name="media3_notification_play">@android:drawable/ic_media_play</drawable>
<drawable name="media3_notification_pause">@android:drawable/ic_media_pause</drawable>
<drawable name="media3_notification_seek_to_next">@android:drawable/ic_media_next</drawable>
<drawable name="media3_notification_seek_to_previous">@android:drawable/ic_media_previous</drawable>
<drawable name="media3_notification_seek_forward">@android:drawable/ic_media_ff</drawable>
<drawable name="media3_notification_seek_back">@android:drawable/ic_media_rew</drawable>
<drawable name="media3_notification_small_icon">@drawable/media3_icon_circular_play</drawable>
</resources>

View File

@ -34,7 +34,7 @@ public class CommandButtonTest {
public void
isButtonCommandAvailable_playerCommandAvailableOrUnavailableInPlayerCommands_isEnabledCorrectly() {
CommandButton button =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_SEEK_TO_NEXT)
@ -56,7 +56,7 @@ public class CommandButtonTest {
public void isButtonCommandAvailable_sessionCommandAvailableOrUnavailable_isEnabledCorrectly() {
SessionCommand command1 = new SessionCommand("command1", Bundle.EMPTY);
CommandButton button =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(command1)
@ -77,14 +77,14 @@ public class CommandButtonTest {
@Test
public void copyWithUnavailableButtonsDisabled() {
CommandButton button1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_SEEK_TO_PREVIOUS)
.build();
SessionCommand command2 = new SessionCommand("command2", Bundle.EMPTY);
CommandButton button2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button2")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(command2)
@ -110,7 +110,7 @@ public class CommandButtonTest {
public void getIconUri_returnsUri() {
Uri uri = Uri.parse("content://test");
CommandButton button =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setIconUri(uri)
@ -123,7 +123,7 @@ public class CommandButtonTest {
@Test
public void getIconUri_returnsNullIfUnset() {
CommandButton button =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_SEEK_TO_PREVIOUS)
@ -136,7 +136,7 @@ public class CommandButtonTest {
public void getIconUri_returnsUriAfterSerialisation() {
Uri uri = Uri.parse("content://test");
CommandButton button =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setIconUri(uri)
@ -152,7 +152,7 @@ public class CommandButtonTest {
@Test
public void getIconUri_returnsNullIfUnsetAfterSerialisation() {
CommandButton button =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_SEEK_TO_PREVIOUS)
@ -167,14 +167,14 @@ public class CommandButtonTest {
@Test
public void equals() {
assertThat(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon)
.setIconUri(Uri.parse("content://test"))
.setPlayerCommand(Player.COMMAND_SEEK_TO_NEXT)
.build())
.isEqualTo(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon)
.setIconUri(Uri.parse("content://test"))
@ -185,7 +185,7 @@ public class CommandButtonTest {
@Test
public void equals_minimalDifference_notEqual() {
CommandButton button =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_SEEK_TO_NEXT)
@ -195,28 +195,28 @@ public class CommandButtonTest {
.isEqualTo(CommandButton.fromBundle(button.toBundle(), MediaSessionStub.VERSION_INT));
assertThat(button)
.isNotEqualTo(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button2")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_SEEK_TO_NEXT)
.build());
assertThat(button)
.isNotEqualTo(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setPlayerCommand(Player.COMMAND_SEEK_TO_PREVIOUS)
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon)
.build());
assertThat(button)
.isNotEqualTo(
new CommandButton.Builder()
.setIconResId(R.drawable.media3_notification_play)
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setIconResId(R.drawable.media3_icon_play)
.setDisplayName("button")
.setPlayerCommand(Player.COMMAND_SEEK_TO_NEXT)
.build());
assertThat(button)
.isNotEqualTo(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setEnabled(false)
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon)
@ -224,14 +224,14 @@ public class CommandButtonTest {
.build());
assertThat(button)
.isNotEqualTo(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setSessionCommand(new SessionCommand(Player.COMMAND_PLAY_PAUSE))
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon)
.build());
assertThat(button)
.isNotEqualTo(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon)
.setIconUri(Uri.parse("content://test"))
@ -239,8 +239,7 @@ public class CommandButtonTest {
.build());
assertThat(button)
.isNotEqualTo(
new CommandButton.Builder()
.setIcon(CommandButton.ICON_NEXT)
new CommandButton.Builder(CommandButton.ICON_NEXT)
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_SEEK_TO_NEXT)
@ -250,7 +249,7 @@ public class CommandButtonTest {
@Test
public void equals_differenceInExtras_ignored() {
CommandButton.Builder builder =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button")
.setPlayerCommand(Player.COMMAND_SEEK_TO_NEXT)
.setIconResId(R.drawable.media3_notification_small_icon);
@ -268,40 +267,34 @@ public class CommandButtonTest {
@Test
public void equals_differencesInSessionCommand_notEqual() {
assertThat(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PLAY)
.setSessionCommand(new SessionCommand(Player.COMMAND_PLAY_PAUSE))
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_play)
.build())
.isNotEqualTo(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PLAY)
.setSessionCommand(new SessionCommand(Player.COMMAND_SEEK_BACK))
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_play)
.build());
assertThat(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PLAY)
.setSessionCommand(new SessionCommand(Player.COMMAND_PLAY_PAUSE))
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_play)
.build())
.isNotEqualTo(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PLAY)
.setSessionCommand(new SessionCommand("customAction", Bundle.EMPTY))
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_play)
.build());
assertThat(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PLAY)
.setSessionCommand(new SessionCommand("customAction", Bundle.EMPTY))
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_play)
.build())
.isNotEqualTo(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PLAY)
.setSessionCommand(new SessionCommand("customAction2", Bundle.EMPTY))
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_play)
.build());
}
@ -310,44 +303,42 @@ public class CommandButtonTest {
Bundle extras = new Bundle();
extras.putString("key", "value");
assertThat(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PLAY)
.setSessionCommand(new SessionCommand("customAction", Bundle.EMPTY))
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_play)
.build())
.isEqualTo(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PLAY)
.setExtras(extras)
.setSessionCommand(new SessionCommand("customAction", extras))
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_play)
.build());
}
@Test
public void hashCode_equalButtons_sameHashcode() {
assertThat(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_SEEK_TO_NEXT)
.build()
.hashCode())
.isEqualTo(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_SEEK_TO_NEXT)
.build()
.hashCode());
assertThat(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_SEEK_TO_NEXT)
.build()
.hashCode())
.isNotEqualTo(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_SEEK_TO_NEXT)
@ -358,7 +349,7 @@ public class CommandButtonTest {
@Test
public void build_withoutSessionOrPlayerCommandSet_throwsIllegalStateException() {
CommandButton.Builder builder =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon);
assertThrows(IllegalStateException.class, builder::build);
@ -369,27 +360,27 @@ public class CommandButtonTest {
Bundle extras = new Bundle();
extras.putString("key", "value");
CommandButton buttonWithSessionCommand =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_CLOSED_CAPTIONS)
.setDisplayName("name")
.setEnabled(true)
.setIcon(CommandButton.ICON_CLOSED_CAPTIONS)
.setIconResId(R.drawable.media3_notification_small_icon)
.setIconUri(Uri.parse("http://test.test"))
.setExtras(extras)
.setSessionCommand(new SessionCommand(SessionCommand.COMMAND_CODE_SESSION_SET_RATING))
.build();
CommandButton buttonWithPlayerCommand =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_CLOSED_CAPTIONS)
.setDisplayName("name")
.setEnabled(true)
.setIcon(CommandButton.ICON_CLOSED_CAPTIONS)
.setIconResId(R.drawable.media3_notification_small_icon)
.setIconUri(Uri.parse("http://test.test"))
.setExtras(extras)
.setPlayerCommand(Player.COMMAND_GET_METADATA)
.build();
CommandButton buttonWithDefaultValues =
new CommandButton.Builder().setPlayerCommand(Player.COMMAND_PLAY_PAUSE).build();
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setPlayerCommand(Player.COMMAND_PLAY_PAUSE)
.build();
CommandButton restoredButtonWithSessionCommand =
CommandButton.fromBundle(buttonWithSessionCommand.toBundle(), MediaSessionStub.VERSION_INT);
@ -408,7 +399,7 @@ public class CommandButtonTest {
@Test
public void fromBundle_withSessionInterfaceVersionLessThan3_setsEnabledToTrue() {
CommandButton buttonWithEnabledFalse =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setEnabled(false)
.setSessionCommand(new SessionCommand(SessionCommand.COMMAND_CODE_SESSION_SET_RATING))
.build();

View File

@ -124,10 +124,9 @@ public class DefaultActionFactoryTest {
Bundle buttonBundle = new Bundle();
buttonBundle.putString("button-key", "button-value");
CommandButton customSessionCommand =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PAUSE)
.setSessionCommand(new SessionCommand("a", commandBundle))
.setExtras(buttonBundle)
.setIconResId(R.drawable.media3_notification_pause)
.setDisplayName("name")
.build();
@ -138,7 +137,7 @@ public class DefaultActionFactoryTest {
assertThat(shadowPendingIntent.getSavedIntent().getData()).isEqualTo(mediaSession.getUri());
assertThat(String.valueOf(notificationAction.title)).isEqualTo("name");
assertThat(notificationAction.getIconCompat().getResId())
.isEqualTo(R.drawable.media3_notification_pause);
.isEqualTo(R.drawable.media3_icon_pause);
assertThat(notificationAction.getExtras().size()).isEqualTo(0);
assertThat(notificationAction.getActionIntent()).isNotNull();
}
@ -149,9 +148,8 @@ public class DefaultActionFactoryTest {
DefaultActionFactory actionFactory =
new DefaultActionFactory(Robolectric.setupService(TestService.class));
CommandButton customSessionCommand =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PAUSE)
.setPlayerCommand(Player.COMMAND_PLAY_PAUSE)
.setIconResId(R.drawable.media3_notification_pause)
.setDisplayName("name")
.build();

View File

@ -133,13 +133,11 @@ public class DefaultMediaNotificationProviderTest {
assertThat(mediaButtonsWhenPlaying).hasSize(3);
assertThat(mediaButtonsWhenPlaying.get(1).playerCommand).isEqualTo(Player.COMMAND_PLAY_PAUSE);
assertThat(mediaButtonsWhenPlaying.get(1).iconResId)
.isEqualTo(R.drawable.media3_notification_pause);
assertThat(mediaButtonsWhenPlaying.get(1).iconResId).isEqualTo(R.drawable.media3_icon_pause);
assertThat(String.valueOf(mediaButtonsWhenPlaying.get(1).displayName)).isEqualTo("Pause");
assertThat(mediaButtonWhenPaused).hasSize(3);
assertThat(mediaButtonWhenPaused.get(1).playerCommand).isEqualTo(Player.COMMAND_PLAY_PAUSE);
assertThat(mediaButtonWhenPaused.get(1).iconResId)
.isEqualTo(R.drawable.media3_notification_play);
assertThat(mediaButtonWhenPaused.get(1).iconResId).isEqualTo(R.drawable.media3_icon_play);
assertThat(String.valueOf(mediaButtonWhenPaused.get(1).displayName)).isEqualTo("Play");
}
@ -151,7 +149,7 @@ public class DefaultMediaNotificationProviderTest {
Commands commands = new Commands.Builder().addAllCommands().build();
SessionCommand customSessionCommand = new SessionCommand("", Bundle.EMPTY);
CommandButton customCommandButton =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
.setSessionCommand(customSessionCommand)
@ -184,7 +182,7 @@ public class DefaultMediaNotificationProviderTest {
Commands commands = new Commands.Builder().build();
SessionCommand customSessionCommand = new SessionCommand("action1", Bundle.EMPTY);
CommandButton customCommandButton =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
.setSessionCommand(customSessionCommand)
@ -213,7 +211,7 @@ public class DefaultMediaNotificationProviderTest {
new NotificationCompat.Builder(
ApplicationProvider.getApplicationContext(), TEST_CHANNEL_ID);
CommandButton commandButton1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setPlayerCommand(Player.COMMAND_PLAY_PAUSE)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
@ -221,7 +219,7 @@ public class DefaultMediaNotificationProviderTest {
Bundle commandButton2Bundle = new Bundle();
commandButton2Bundle.putInt(DefaultMediaNotificationProvider.COMMAND_KEY_COMPACT_VIEW_INDEX, 0);
CommandButton commandButton2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
.setSessionCommand(new SessionCommand("action2", Bundle.EMPTY))
@ -230,7 +228,7 @@ public class DefaultMediaNotificationProviderTest {
Bundle commandButton3Bundle = new Bundle();
commandButton3Bundle.putInt(DefaultMediaNotificationProvider.COMMAND_KEY_COMPACT_VIEW_INDEX, 2);
CommandButton commandButton3 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
.setSessionCommand(new SessionCommand("action3", Bundle.EMPTY))
@ -239,7 +237,7 @@ public class DefaultMediaNotificationProviderTest {
Bundle commandButton4Bundle = new Bundle();
commandButton4Bundle.putInt(DefaultMediaNotificationProvider.COMMAND_KEY_COMPACT_VIEW_INDEX, 1);
CommandButton commandButton4 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
.setSessionCommand(new SessionCommand("action4", Bundle.EMPTY))
@ -286,25 +284,25 @@ public class DefaultMediaNotificationProviderTest {
new NotificationCompat.Builder(
ApplicationProvider.getApplicationContext(), TEST_CHANNEL_ID);
CommandButton commandButton1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
.setSessionCommand(new SessionCommand("action1", Bundle.EMPTY))
.build();
CommandButton commandButton2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setPlayerCommand(Player.COMMAND_PLAY_PAUSE)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
.build();
CommandButton commandButton3 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setPlayerCommand(Player.COMMAND_SEEK_TO_PREVIOUS)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
.build();
CommandButton commandButton4 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setPlayerCommand(Player.COMMAND_SEEK_TO_NEXT)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
@ -352,19 +350,19 @@ public class DefaultMediaNotificationProviderTest {
new NotificationCompat.Builder(
ApplicationProvider.getApplicationContext(), TEST_CHANNEL_ID);
CommandButton commandButton1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
.setSessionCommand(new SessionCommand("action1", Bundle.EMPTY))
.build();
CommandButton commandButton2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setPlayerCommand(Player.COMMAND_PLAY_PAUSE)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
.build();
CommandButton commandButton3 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setPlayerCommand(Player.COMMAND_SEEK_TO_PREVIOUS)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
@ -408,7 +406,7 @@ public class DefaultMediaNotificationProviderTest {
new NotificationCompat.Builder(
ApplicationProvider.getApplicationContext(), TEST_CHANNEL_ID);
CommandButton commandButton1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
.setSessionCommand(new SessionCommand("action1", Bundle.EMPTY))
@ -441,7 +439,7 @@ public class DefaultMediaNotificationProviderTest {
Bundle commandButtonBundle1 = new Bundle();
commandButtonBundle1.putInt(DefaultMediaNotificationProvider.COMMAND_KEY_COMPACT_VIEW_INDEX, 2);
CommandButton commandButton1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
.setSessionCommand(new SessionCommand("action1", Bundle.EMPTY))
@ -451,7 +449,7 @@ public class DefaultMediaNotificationProviderTest {
commandButtonBundle2.putInt(
DefaultMediaNotificationProvider.COMMAND_KEY_COMPACT_VIEW_INDEX, -1);
CommandButton commandButton2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("displayName2")
.setIconResId(R.drawable.media3_icon_circular_play)
.setSessionCommand(new SessionCommand("action1", Bundle.EMPTY))
@ -491,7 +489,7 @@ public class DefaultMediaNotificationProviderTest {
Bundle commandButtonBundle = new Bundle();
commandButtonBundle.putInt(DefaultMediaNotificationProvider.COMMAND_KEY_COMPACT_VIEW_INDEX, 1);
CommandButton commandButton1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("displayName")
.setIconResId(R.drawable.media3_icon_circular_play)
.setSessionCommand(new SessionCommand("action1", Bundle.EMPTY))
@ -528,9 +526,8 @@ public class DefaultMediaNotificationProviderTest {
Bundle commandButtonBundle = new Bundle();
commandButtonBundle.putString("testKey", "testValue");
CommandButton commandButton1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PLAY)
.setDisplayName("displayName1")
.setIconResId(R.drawable.media3_notification_play)
.setSessionCommand(new SessionCommand("action1", Bundle.EMPTY))
.setExtras(commandButtonBundle)
.build();
@ -633,20 +630,20 @@ public class DefaultMediaNotificationProviderTest {
new TestExoPlayerBuilder(context).build())
.build();
CommandButton button1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_SEEK_TO_PREVIOUS)
.build();
CommandButton button2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button2")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command2", Bundle.EMPTY))
.build()
.copyWithIsEnabled(true);
CommandButton button3 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button3")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_PLAY_PAUSE)

View File

@ -161,26 +161,26 @@ public class MediaSessionServiceTest {
SessionCommand command3 = new SessionCommand("command3", Bundle.EMPTY);
SessionCommand command4 = new SessionCommand("command4", Bundle.EMPTY);
CommandButton button1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("customAction1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(command1)
.build();
CommandButton button2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("customAction2")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(command2)
.build();
CommandButton button3 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("customAction3")
.setEnabled(false)
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(command3)
.build();
CommandButton button4 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("customAction4")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(command4)
@ -265,13 +265,13 @@ public class MediaSessionServiceTest {
SessionCommand command1 = new SessionCommand("command1", Bundle.EMPTY);
SessionCommand command2 = new SessionCommand("command2", Bundle.EMPTY);
CommandButton button1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("customAction1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(command1)
.build();
CommandButton button2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("customAction2")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(command2)

View File

@ -949,13 +949,13 @@ public class MediaControllerCompatCallbackWithMediaSessionTest {
SessionCommand command2 = new SessionCommand("command2", extras2);
ImmutableList<CommandButton> customLayout =
ImmutableList.of(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setSessionCommand(command1)
.setDisplayName("command1")
.setIconResId(1)
.build()
.copyWithIsEnabled(true),
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setSessionCommand(command2)
.setDisplayName("command2")
.setIconResId(2)

View File

@ -45,7 +45,6 @@ import androidx.media3.common.util.Consumer;
import androidx.media3.exoplayer.ExoPlayer;
import androidx.media3.session.MediaSession.ConnectionResult;
import androidx.media3.session.MediaSession.ConnectionResult.AcceptedResultBuilder;
import androidx.media3.test.session.R;
import androidx.media3.test.session.common.HandlerThreadTestRule;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@ -1451,20 +1450,17 @@ public class MediaControllerCompatPlaybackStateCompatActionsWithMediaSessionTest
SessionCommand command3 = new SessionCommand("command3", Bundle.EMPTY);
ImmutableList<CommandButton> customLayout =
ImmutableList.of(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PLAY)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_play)
.setSessionCommand(command1)
.build(),
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PAUSE)
.setDisplayName("button2")
.setIconResId(R.drawable.media3_notification_pause)
.setSessionCommand(command2)
.build(),
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PAUSE)
.setDisplayName("button3")
.setEnabled(false)
.setIconResId(R.drawable.media3_notification_pause)
.setSessionCommand(command3)
.build());
MediaSession.Callback callback =
@ -1504,14 +1500,12 @@ public class MediaControllerCompatPlaybackStateCompatActionsWithMediaSessionTest
SessionCommand command2 = new SessionCommand("command2", extras2);
ImmutableList<CommandButton> customLayout =
ImmutableList.of(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PLAY)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_play)
.setSessionCommand(command1)
.build(),
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PAUSE)
.setDisplayName("button2")
.setIconResId(R.drawable.media3_notification_pause)
.setSessionCommand(command2)
.build());
MediaSession.Callback callback =
@ -1565,15 +1559,12 @@ public class MediaControllerCompatPlaybackStateCompatActionsWithMediaSessionTest
SessionCommand command2 = new SessionCommand("command2", extras2);
ImmutableList<CommandButton> customLayout =
ImmutableList.of(
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PLAY)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_play)
.setSessionCommand(command1)
.build(),
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PAUSE)
.setDisplayName("button2")
.setIcon(CommandButton.ICON_FAST_FORWARD)
.setIconResId(R.drawable.media3_notification_pause)
.setSessionCommand(command2)
.build());
MediaSession.Callback callback =

View File

@ -2410,7 +2410,7 @@ public class MediaControllerListenerTest {
Bundle extras1 = new Bundle();
extras1.putString("key", "value-1");
CommandButton button1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setSessionCommand(new SessionCommand("action1", extras1))
.setDisplayName("actionName1")
.setIconResId(1)
@ -2418,7 +2418,7 @@ public class MediaControllerListenerTest {
Bundle extras2 = new Bundle();
extras2.putString("key", "value-2");
CommandButton button2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setSessionCommand(new SessionCommand("action2", extras2))
.setDisplayName("actionName2")
.setIconResId(2)

View File

@ -394,16 +394,14 @@ public class MediaControllerListenerWithMediaSessionCompatTest {
@Test
public void getCustomLayout() throws Exception {
CommandButton button1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command1", Bundle.EMPTY))
.build();
CommandButton button2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_FAST_FORWARD)
.setDisplayName("button2")
.setIcon(CommandButton.ICON_FAST_FORWARD)
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command2", Bundle.EMPTY))
.build();
ConditionVariable onSetCustomLayoutCalled = new ConditionVariable();
@ -443,7 +441,7 @@ public class MediaControllerListenerWithMediaSessionCompatTest {
MediaConstants.EXTRAS_KEY_COMMAND_BUTTON_ICON_COMPAT, CommandButton.ICON_FAST_FORWARD);
PlaybackStateCompat.CustomAction customAction2 =
new PlaybackStateCompat.CustomAction.Builder(
"command2", "button2", /* icon= */ R.drawable.media3_notification_small_icon)
"command2", "button2", /* icon= */ R.drawable.media3_icon_fast_forward)
.setExtras(extras2)
.build();
PlaybackStateCompat.Builder playbackState1 =

View File

@ -173,32 +173,32 @@ public class MediaControllerTest {
RemoteMediaSession session =
createRemoteMediaSession(TEST_GET_CUSTOM_LAYOUT, /* tokenExtras= */ null);
CommandButton button1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command1", Bundle.EMPTY))
.build();
CommandButton button2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button2")
.setEnabled(false)
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command2", Bundle.EMPTY))
.build();
CommandButton button3 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button3")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command3", Bundle.EMPTY))
.build();
CommandButton button4 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button4")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_PLAY_PAUSE)
.build();
CommandButton button5 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button5")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_GET_TRACKS)
@ -223,38 +223,38 @@ public class MediaControllerTest {
RemoteMediaSession session =
createRemoteMediaSession(TEST_GET_CUSTOM_LAYOUT, /* tokenExtras= */ null);
CommandButton button1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command1", Bundle.EMPTY))
.build();
CommandButton button2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button2")
.setEnabled(false)
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command2", Bundle.EMPTY))
.build();
CommandButton button3 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button3")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command3", Bundle.EMPTY))
.build();
CommandButton button4 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button4")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command4", Bundle.EMPTY))
.build();
CommandButton button5 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button5")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_PLAY_PAUSE)
.build();
CommandButton button6 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button6")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_GET_TRACKS)
@ -314,26 +314,26 @@ public class MediaControllerTest {
throws Exception {
RemoteMediaSession session = createRemoteMediaSession(TEST_GET_CUSTOM_LAYOUT, null);
CommandButton button1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command1", Bundle.EMPTY))
.build();
CommandButton button2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button2")
.setEnabled(false)
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command2", Bundle.EMPTY))
.build();
CommandButton button3 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button3")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_PLAY_PAUSE)
.build();
CommandButton button4 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button4")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_GET_TRACKS)
@ -409,7 +409,7 @@ public class MediaControllerTest {
throws Exception {
RemoteMediaSession session = createRemoteMediaSession(TEST_GET_CUSTOM_LAYOUT, null);
CommandButton button =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_PLAY_PAUSE)
@ -457,26 +457,26 @@ public class MediaControllerTest {
RemoteMediaSession session =
createRemoteMediaSession(TEST_GET_CUSTOM_LAYOUT, /* tokenExtras= */ null);
CommandButton button1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command1", Bundle.EMPTY))
.build();
CommandButton button2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button2")
.setEnabled(false)
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command2", Bundle.EMPTY))
.build();
CommandButton button3 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button3")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command3", Bundle.EMPTY))
.build();
CommandButton button4 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button4")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(new SessionCommand("command4", Bundle.EMPTY))

View File

@ -41,7 +41,6 @@ import androidx.media3.common.StarRating;
import androidx.media3.exoplayer.ExoPlayer;
import androidx.media3.session.MediaSession.ConnectionResult.AcceptedResultBuilder;
import androidx.media3.session.MediaSession.ControllerInfo;
import androidx.media3.test.session.R;
import androidx.media3.test.session.common.HandlerThreadTestRule;
import androidx.media3.test.session.common.MainLooperTestRule;
import androidx.media3.test.session.common.TestHandler;
@ -153,17 +152,15 @@ public class MediaSessionCallbackTest {
public void onConnect_acceptWithMissingSessionCommand_buttonDisabledAndPermissionDenied()
throws Exception {
CommandButton button1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PLAY)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_play)
.setSessionCommand(new SessionCommand("command1", Bundle.EMPTY))
.setEnabled(true)
.build();
CommandButton button1Disabled = button1.copyWithIsEnabled(false);
CommandButton button2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_PAUSE)
.setDisplayName("button2")
.setIconResId(R.drawable.media3_notification_pause)
.setSessionCommand(new SessionCommand("command2", Bundle.EMPTY))
.setEnabled(true)
.build();

View File

@ -242,19 +242,19 @@ public class MediaSessionServiceTest {
SessionCommand command2 = new SessionCommand("command2", Bundle.EMPTY);
SessionCommand command3 = new SessionCommand("command3", Bundle.EMPTY);
CommandButton button1 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(command1)
.build();
CommandButton button2 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button2")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(command2)
.build();
CommandButton button3 =
new CommandButton.Builder()
new CommandButton.Builder(CommandButton.ICON_UNDEFINED)
.setDisplayName("button3")
.setIconResId(R.drawable.media3_notification_small_icon)
.setSessionCommand(command3)