MediaConstants.java

/*
 * Copyright 2019 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 androidx.media3.session;

import android.net.Uri;

/** Constants that can be shared between media session and controller. */
public final class MediaConstants {

  /**
   * A {@link Uri} scheme used in a media uri.
   *
   * @see MediaController#setMediaUri
   * @see MediaSession.SessionCallback#onSetMediaUri
   */
  public static final String MEDIA_URI_SCHEME = "androidx";

  /**
   * A {@link Uri} authority used in a media uri.
   *
   * @see MediaController#setMediaUri
   * @see MediaSession.SessionCallback#onSetMediaUri
   */
  public static final String MEDIA_URI_AUTHORITY = "media3-session";

  /**
   * A {@link Uri} path used by {@code
   * android.support.v4.media.session.MediaControllerCompat.TransportControls#playFromMediaId}.
   *
   * @see MediaController#setMediaUri
   * @see MediaSession.SessionCallback#onSetMediaUri
   */
  public static final String MEDIA_URI_PATH_PLAY_FROM_MEDIA_ID = "playFromMediaId";

  /**
   * A {@link Uri} path used by {@code
   * android.support.v4.media.session.MediaControllerCompat.TransportControls#playFromSearch}.
   *
   * @see MediaController#setMediaUri
   * @see MediaSession.SessionCallback#onSetMediaUri
   */
  public static final String MEDIA_URI_PATH_PLAY_FROM_SEARCH = "playFromSearch";

  /**
   * A {@link Uri} path used by {@link
   * android.support.v4.media.session.MediaControllerCompat.TransportControls#prepareFromMediaId}.
   *
   * @see MediaController#setMediaUri
   * @see MediaSession.SessionCallback#onSetMediaUri
   */
  public static final String MEDIA_URI_PATH_PREPARE_FROM_MEDIA_ID = "prepareFromMediaId";

  /**
   * A {@link Uri} path used by {@link
   * android.support.v4.media.session.MediaControllerCompat.TransportControls#prepareFromSearch}.
   *
   * @see MediaController#setMediaUri
   * @see MediaSession.SessionCallback#onSetMediaUri
   */
  public static final String MEDIA_URI_PATH_PREPARE_FROM_SEARCH = "prepareFromSearch";

  /**
   * A {@link Uri} path for encoding how the uri will be translated when connected to {@link
   * android.support.v4.media.session.MediaSessionCompat}.
   *
   * @see MediaController#setMediaUri
   */
  public static final String MEDIA_URI_PATH_SET_MEDIA_URI = "setMediaUri";

  // From scheme to path, plus path delimiter
  /* package */ static final String MEDIA_URI_SET_MEDIA_URI_PREFIX =
      new Uri.Builder()
              .scheme(MEDIA_URI_SCHEME)
              .authority(MEDIA_URI_AUTHORITY)
              .path(MEDIA_URI_PATH_SET_MEDIA_URI)
              .build()
              .toString()
          + "?";

  /**
   * A {@link Uri} query for media id.
   *
   * @see MediaSession.SessionCallback#onSetMediaUri
   * @see MediaController#setMediaUri
   */
  public static final String MEDIA_URI_QUERY_ID = "id";

  /**
   * A {@link Uri} query for search query.
   *
   * @see MediaSession.SessionCallback#onSetMediaUri
   * @see MediaController#setMediaUri
   */
  public static final String MEDIA_URI_QUERY_QUERY = "query";

  /**
   * A {@link Uri} query for media uri.
   *
   * @see MediaController#setMediaUri
   */
  public static final String MEDIA_URI_QUERY_URI = "uri";

  /* package */ static final String SESSION_COMMAND_ON_EXTRAS_CHANGED =
      "androidx.media3.session.SESSION_COMMAND_ON_EXTRAS_CHANGED";
  /* package */ static final String SESSION_COMMAND_ON_CAPTIONING_ENABLED_CHANGED =
      "androidx.media3.session.SESSION_COMMAND_ON_CAPTIONING_ENABLED_CHANGED";
  /* package */ static final String SESSION_COMMAND_REQUEST_SESSION3_TOKEN =
      "androidx.media3.session.SESSION_COMMAND_REQUEST_SESSION3_TOKEN";

  /* package */ static final String ARGUMENT_CAPTIONING_ENABLED =
      "androidx.media3.session.ARGUMENT_CAPTIONING_ENABLED";

  private MediaConstants() {}
}