public interface

BitmapLoader

 androidx.media3.common.util.BitmapLoader

Subclasses:

DataSourceBitmapLoader, SimpleBitmapLoader, BitmapLoader, CacheBitmapLoader

Gradle dependencies

compile group: 'androidx.media3', name: 'media3-common', version: '1.5.0-alpha01'

  • groupId: androidx.media3
  • artifactId: media3-common
  • version: 1.5.0-alpha01

Artifact androidx.media3:media3-common:1.5.0-alpha01 it located at Google repository (https://maven.google.com/)

Overview

Loads images.

Summary

Methods
public <any>decodeBitmap(byte[] data[])

Decodes an image from compressed binary data.

public <any>loadBitmap(Uri uri)

Loads an image from uri.

public <any>loadBitmapFromMetadata(MediaMetadata metadata)

Loads an image from MediaMetadata.

public booleansupportsMimeType(java.lang.String mimeType)

Returns whether the given mimeType is supported.

Methods

public boolean supportsMimeType(java.lang.String mimeType)

Returns whether the given mimeType is supported.

public <any> decodeBitmap(byte[] data[])

Decodes an image from compressed binary data.

public <any> loadBitmap(Uri uri)

Loads an image from uri.

public <any> loadBitmapFromMetadata(MediaMetadata metadata)

Loads an image from MediaMetadata. Returns null if metadata doesn't contain bitmap information.

By default, the method will try to decode an image from MediaMetadata.artworkData if it is present. Otherwise, the method will try to load an image from MediaMetadata.artworkUri if it is present. The method will return null if neither MediaMetadata.artworkData nor MediaMetadata.artworkUri is present.

Source

/*
 * Copyright 2022 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.common.util;

import android.graphics.Bitmap;
import android.net.Uri;
import androidx.annotation.Nullable;
import androidx.media3.common.MediaMetadata;
import com.google.common.util.concurrent.ListenableFuture;

/** Loads images. */
@UnstableApi
public interface BitmapLoader {

  /** Returns whether the given {@code mimeType} is supported. */
  boolean supportsMimeType(String mimeType);

  /** Decodes an image from compressed binary data. */
  ListenableFuture<Bitmap> decodeBitmap(byte[] data);

  /** Loads an image from {@code uri}. */
  ListenableFuture<Bitmap> loadBitmap(Uri uri);

  /**
   * Loads an image from {@link MediaMetadata}. Returns null if {@code metadata} doesn't contain
   * bitmap information.
   *
   * <p>By default, the method will try to decode an image from {@link MediaMetadata#artworkData} if
   * it is present. Otherwise, the method will try to load an image from {@link
   * MediaMetadata#artworkUri} if it is present. The method will return null if neither {@link
   * MediaMetadata#artworkData} nor {@link MediaMetadata#artworkUri} is present.
   */
  @Nullable
  default ListenableFuture<Bitmap> loadBitmapFromMetadata(MediaMetadata metadata) {
    @Nullable ListenableFuture<Bitmap> future;
    if (metadata.artworkData != null) {
      future = decodeBitmap(metadata.artworkData);
    } else if (metadata.artworkUri != null) {
      future = loadBitmap(metadata.artworkUri);
    } else {
      future = null;
    }
    return future;
  }
}