All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.android.media.Session2CommandGroup Maven / Gradle / Ivy

Go to download

A library jar that provides APIs for Applications written for the Google Android Platform.

There is a newer version: 15-robolectric-12650502
Show newest version
/*
 * Copyright 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.media;

import static android.media.Session2Command.COMMAND_CODE_CUSTOM;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Parcel;
import android.os.Parcelable;

import java.util.Collection;
import java.util.HashSet;
import java.util.Set;

/**
 * This API is not generally intended for third party application developers.
 * Use the AndroidX
 * Media2 session
 * Library for consistent behavior across all devices.
 * 

* A set of {@link Session2Command} which represents a command group. */ public final class Session2CommandGroup implements Parcelable { private static final String TAG = "Session2CommandGroup"; public static final @android.annotation.NonNull Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override public Session2CommandGroup createFromParcel(Parcel in) { return new Session2CommandGroup(in); } @Override public Session2CommandGroup[] newArray(int size) { return new Session2CommandGroup[size]; } }; Set mCommands = new HashSet<>(); /** * Creates a new Session2CommandGroup with commands copied from another object. * * @param commands The collection of commands to copy. */ @SuppressWarnings("WeakerAccess") /* synthetic access */ Session2CommandGroup(@Nullable Collection commands) { if (commands != null) { mCommands.addAll(commands); } } /** * Used by parcelable creator. */ @SuppressWarnings("WeakerAccess") /* synthetic access */ Session2CommandGroup(Parcel in) { Parcelable[] commands = in.readParcelableArray(Session2Command.class.getClassLoader()); if (commands != null) { for (Parcelable command : commands) { mCommands.add((Session2Command) command); } } } /** * Checks whether this command group has a command that matches given {@code command}. * * @param command A command to find. Shouldn't be {@code null}. */ public boolean hasCommand(@NonNull Session2Command command) { if (command == null) { throw new IllegalArgumentException("command shouldn't be null"); } return mCommands.contains(command); } /** * Checks whether this command group has a command that matches given {@code commandCode}. * * @param commandCode A command code to find. * Shouldn't be {@link Session2Command#COMMAND_CODE_CUSTOM}. */ public boolean hasCommand(int commandCode) { if (commandCode == COMMAND_CODE_CUSTOM) { throw new IllegalArgumentException("Use hasCommand(Command) for custom command"); } for (Session2Command command : mCommands) { if (command.getCommandCode() == commandCode) { return true; } } return false; } /** * Gets all commands of this command group. */ @NonNull public Set getCommands() { return new HashSet<>(mCommands); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(@NonNull Parcel dest, int flags) { if (dest == null) { throw new IllegalArgumentException("parcel shouldn't be null"); } dest.writeParcelableArray(mCommands.toArray(new Session2Command[0]), 0); } /** * This API is not generally intended for third party application developers. * Use the AndroidX * Media2 session * Library for consistent behavior across all devices. *

* Builds a {@link Session2CommandGroup} object. */ public static final class Builder { private Set mCommands; public Builder() { mCommands = new HashSet<>(); } /** * Creates a new builder for {@link Session2CommandGroup} with commands copied from another * {@link Session2CommandGroup} object. * @param commandGroup */ public Builder(@NonNull Session2CommandGroup commandGroup) { if (commandGroup == null) { throw new IllegalArgumentException("command group shouldn't be null"); } mCommands = commandGroup.getCommands(); } /** * Adds a command to this command group. * * @param command A command to add. Shouldn't be {@code null}. */ @NonNull public Builder addCommand(@NonNull Session2Command command) { if (command == null) { throw new IllegalArgumentException("command shouldn't be null"); } mCommands.add(command); return this; } /** * Removes a command from this group which matches given {@code command}. * * @param command A command to find. Shouldn't be {@code null}. */ @NonNull public Builder removeCommand(@NonNull Session2Command command) { if (command == null) { throw new IllegalArgumentException("command shouldn't be null"); } mCommands.remove(command); return this; } /** * Builds {@link Session2CommandGroup}. * * @return a new {@link Session2CommandGroup}. */ @NonNull public Session2CommandGroup build() { return new Session2CommandGroup(mCommands); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy