Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7b75fe52 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Reconcile MediaStore with MediaMetadataRetriever.

Over the last year we've been converging on saying that MediaProvider
is an indexed view of values that developers can obtain directly from
MediaMetadataRetriever.  This change starts indexing several fields
of interest to bring these two surfaces into sync.

Since we're going to be asking MediaMetadataRetriever about audio,
video, and image files, it could return any metadata values for any
of those file types, so we're adding and promoting fields up to the
MediaColumns level.

Bring back APIs related to "trashing" media items; they had been in
place for the last release, but were hidden until we had firm
requests to add them, and partners have now requested them.  Also
add APIs for marking media items as "favorite", as requested by
partners.

Bug: 135343128, 142478744, 122025511, 142498573
Test: atest --test-mapping packages/providers/MediaProvider
Change-Id: Ie839ec1b2eed621786d0d10f35a061cbc52f192b
parent de6a221b
Loading
Loading
Loading
Loading
+24 −7
Original line number Original line Diff line number Diff line
@@ -38490,7 +38490,11 @@ package android.provider {
    method @NonNull public static String getVersion(@NonNull android.content.Context, @NonNull String);
    method @NonNull public static String getVersion(@NonNull android.content.Context, @NonNull String);
    method @NonNull public static String getVolumeName(@NonNull android.net.Uri);
    method @NonNull public static String getVolumeName(@NonNull android.net.Uri);
    method @NonNull public static android.net.Uri setIncludePending(@NonNull android.net.Uri);
    method @NonNull public static android.net.Uri setIncludePending(@NonNull android.net.Uri);
    method @NonNull public static android.net.Uri setIncludeTrashed(@NonNull android.net.Uri);
    method @NonNull public static android.net.Uri setRequireOriginal(@NonNull android.net.Uri);
    method @NonNull public static android.net.Uri setRequireOriginal(@NonNull android.net.Uri);
    method public static void trash(@NonNull android.content.Context, @NonNull android.net.Uri);
    method public static void trash(@NonNull android.content.Context, @NonNull android.net.Uri, long);
    method public static void untrash(@NonNull android.content.Context, @NonNull android.net.Uri);
    field public static final String ACTION_IMAGE_CAPTURE = "android.media.action.IMAGE_CAPTURE";
    field public static final String ACTION_IMAGE_CAPTURE = "android.media.action.IMAGE_CAPTURE";
    field public static final String ACTION_IMAGE_CAPTURE_SECURE = "android.media.action.IMAGE_CAPTURE_SECURE";
    field public static final String ACTION_IMAGE_CAPTURE_SECURE = "android.media.action.IMAGE_CAPTURE_SECURE";
    field public static final String ACTION_REVIEW = "android.provider.action.REVIEW";
    field public static final String ACTION_REVIEW = "android.provider.action.REVIEW";
@@ -38583,14 +38587,11 @@ package android.provider {
  }
  }
  public static interface MediaStore.Audio.AudioColumns extends android.provider.MediaStore.MediaColumns {
  public static interface MediaStore.Audio.AudioColumns extends android.provider.MediaStore.MediaColumns {
    field public static final String ALBUM = "album";
    field public static final String ALBUM_ID = "album_id";
    field public static final String ALBUM_ID = "album_id";
    field @Deprecated public static final String ALBUM_KEY = "album_key";
    field @Deprecated public static final String ALBUM_KEY = "album_key";
    field public static final String ARTIST = "artist";
    field public static final String ARTIST_ID = "artist_id";
    field public static final String ARTIST_ID = "artist_id";
    field @Deprecated public static final String ARTIST_KEY = "artist_key";
    field @Deprecated public static final String ARTIST_KEY = "artist_key";
    field public static final String BOOKMARK = "bookmark";
    field public static final String BOOKMARK = "bookmark";
    field public static final String COMPOSER = "composer";
    field public static final String GENRE = "genre";
    field public static final String GENRE = "genre";
    field public static final String GENRE_ID = "genre_id";
    field public static final String GENRE_ID = "genre_id";
    field @Deprecated public static final String GENRE_KEY = "genre_key";
    field @Deprecated public static final String GENRE_KEY = "genre_key";
@@ -38705,7 +38706,6 @@ package android.provider {
    field public static final int MEDIA_TYPE_VIDEO = 3; // 0x3
    field public static final int MEDIA_TYPE_VIDEO = 3; // 0x3
    field public static final String MIME_TYPE = "mime_type";
    field public static final String MIME_TYPE = "mime_type";
    field public static final String PARENT = "parent";
    field public static final String PARENT = "parent";
    field public static final String TITLE = "title";
  }
  }
  public static final class MediaStore.Images {
  public static final class MediaStore.Images {
@@ -38714,6 +38714,9 @@ package android.provider {
  public static interface MediaStore.Images.ImageColumns extends android.provider.MediaStore.MediaColumns {
  public static interface MediaStore.Images.ImageColumns extends android.provider.MediaStore.MediaColumns {
    field public static final String DESCRIPTION = "description";
    field public static final String DESCRIPTION = "description";
    field public static final String EXPOSURE_TIME = "exposure_time";
    field public static final String F_NUMBER = "f_number";
    field public static final String ISO = "iso";
    field public static final String IS_PRIVATE = "isprivate";
    field public static final String IS_PRIVATE = "isprivate";
    field @Deprecated public static final String LATITUDE = "latitude";
    field @Deprecated public static final String LATITUDE = "latitude";
    field @Deprecated public static final String LONGITUDE = "longitude";
    field @Deprecated public static final String LONGITUDE = "longitude";
@@ -38762,28 +38765,45 @@ package android.provider {
  }
  }
  public static interface MediaStore.MediaColumns extends android.provider.BaseColumns {
  public static interface MediaStore.MediaColumns extends android.provider.BaseColumns {
    field public static final String ALBUM = "album";
    field public static final String ALBUM_ARTIST = "album_artist";
    field public static final String ARTIST = "artist";
    field public static final String AUTHOR = "author";
    field public static final String BITRATE = "bitrate";
    field public static final String BUCKET_DISPLAY_NAME = "bucket_display_name";
    field public static final String BUCKET_DISPLAY_NAME = "bucket_display_name";
    field public static final String BUCKET_ID = "bucket_id";
    field public static final String BUCKET_ID = "bucket_id";
    field public static final String CAPTURE_FRAMERATE = "capture_framerate";
    field public static final String CD_TRACK_NUMBER = "cd_track_number";
    field public static final String COMPILATION = "compilation";
    field public static final String COMPOSER = "composer";
    field @Deprecated public static final String DATA = "_data";
    field @Deprecated public static final String DATA = "_data";
    field public static final String DATE_ADDED = "date_added";
    field public static final String DATE_ADDED = "date_added";
    field public static final String DATE_EXPIRES = "date_expires";
    field public static final String DATE_EXPIRES = "date_expires";
    field public static final String DATE_MODIFIED = "date_modified";
    field public static final String DATE_MODIFIED = "date_modified";
    field public static final String DATE_TAKEN = "datetaken";
    field public static final String DATE_TAKEN = "datetaken";
    field public static final String DISC_NUMBER = "disc_number";
    field public static final String DISPLAY_NAME = "_display_name";
    field public static final String DISPLAY_NAME = "_display_name";
    field public static final String DOCUMENT_ID = "document_id";
    field public static final String DOCUMENT_ID = "document_id";
    field public static final String DURATION = "duration";
    field public static final String DURATION = "duration";
    field public static final String GENRE = "genre";
    field public static final String HEIGHT = "height";
    field public static final String HEIGHT = "height";
    field public static final String INSTANCE_ID = "instance_id";
    field public static final String INSTANCE_ID = "instance_id";
    field public static final String IS_FAVORITE = "is_favorite";
    field public static final String IS_PENDING = "is_pending";
    field public static final String IS_PENDING = "is_pending";
    field public static final String IS_TRASHED = "is_trashed";
    field public static final String MIME_TYPE = "mime_type";
    field public static final String MIME_TYPE = "mime_type";
    field public static final String NUM_TRACKS = "num_tracks";
    field public static final String ORIENTATION = "orientation";
    field public static final String ORIENTATION = "orientation";
    field public static final String ORIGINAL_DOCUMENT_ID = "original_document_id";
    field public static final String ORIGINAL_DOCUMENT_ID = "original_document_id";
    field public static final String OWNER_PACKAGE_NAME = "owner_package_name";
    field public static final String OWNER_PACKAGE_NAME = "owner_package_name";
    field public static final String RELATIVE_PATH = "relative_path";
    field public static final String RELATIVE_PATH = "relative_path";
    field public static final String RESOLUTION = "resolution";
    field public static final String SIZE = "_size";
    field public static final String SIZE = "_size";
    field public static final String TITLE = "title";
    field public static final String TITLE = "title";
    field public static final String VOLUME_NAME = "volume_name";
    field public static final String VOLUME_NAME = "volume_name";
    field public static final String WIDTH = "width";
    field public static final String WIDTH = "width";
    field public static final String WRITER = "writer";
    field public static final String YEAR = "year";
  }
  }
  public static final class MediaStore.Video {
  public static final class MediaStore.Video {
@@ -38823,8 +38843,6 @@ package android.provider {
  }
  }
  public static interface MediaStore.Video.VideoColumns extends android.provider.MediaStore.MediaColumns {
  public static interface MediaStore.Video.VideoColumns extends android.provider.MediaStore.MediaColumns {
    field public static final String ALBUM = "album";
    field public static final String ARTIST = "artist";
    field public static final String BOOKMARK = "bookmark";
    field public static final String BOOKMARK = "bookmark";
    field public static final String CATEGORY = "category";
    field public static final String CATEGORY = "category";
    field public static final String COLOR_RANGE = "color_range";
    field public static final String COLOR_RANGE = "color_range";
@@ -38836,7 +38854,6 @@ package android.provider {
    field @Deprecated public static final String LATITUDE = "latitude";
    field @Deprecated public static final String LATITUDE = "latitude";
    field @Deprecated public static final String LONGITUDE = "longitude";
    field @Deprecated public static final String LONGITUDE = "longitude";
    field @Deprecated public static final String MINI_THUMB_MAGIC = "mini_thumb_magic";
    field @Deprecated public static final String MINI_THUMB_MAGIC = "mini_thumb_magic";
    field public static final String RESOLUTION = "resolution";
    field public static final String TAGS = "tags";
    field public static final String TAGS = "tags";
  }
  }
+10 −8
Original line number Original line Diff line number Diff line
@@ -444,13 +444,12 @@ package android.provider {
    method @Deprecated @NonNull public static android.net.Uri createPending(@NonNull android.content.Context, @NonNull android.provider.MediaStore.PendingParams);
    method @Deprecated @NonNull public static android.net.Uri createPending(@NonNull android.content.Context, @NonNull android.provider.MediaStore.PendingParams);
    method @Deprecated @NonNull public static java.util.Set<java.lang.String> getAllVolumeNames(@NonNull android.content.Context);
    method @Deprecated @NonNull public static java.util.Set<java.lang.String> getAllVolumeNames(@NonNull android.content.Context);
    method @Deprecated @NonNull public static android.provider.MediaStore.PendingSession openPending(@NonNull android.content.Context, @NonNull android.net.Uri);
    method @Deprecated @NonNull public static android.provider.MediaStore.PendingSession openPending(@NonNull android.content.Context, @NonNull android.net.Uri);
    method @Deprecated @NonNull public static android.net.Uri setIncludeTrashed(@NonNull android.net.Uri);
    method @Deprecated public static void trash(@NonNull android.content.Context, @NonNull android.net.Uri);
    method @Deprecated public static void trash(@NonNull android.content.Context, @NonNull android.net.Uri, long);
    method @Deprecated public static void untrash(@NonNull android.content.Context, @NonNull android.net.Uri);
  }
  }


  public static interface MediaStore.Audio.AudioColumns extends android.provider.MediaStore.MediaColumns {
  public static interface MediaStore.Audio.AudioColumns extends android.provider.MediaStore.MediaColumns {
    field public static final String ALBUM = "album";
    field public static final String ARTIST = "artist";
    field public static final String COMPOSER = "composer";
    field public static final String DURATION = "duration";
    field public static final String DURATION = "duration";
  }
  }


@@ -458,6 +457,10 @@ package android.provider {
    field @Deprecated public static final String DESCRIPTION = "description";
    field @Deprecated public static final String DESCRIPTION = "description";
  }
  }


  public static interface MediaStore.Files.FileColumns extends android.provider.MediaStore.MediaColumns {
    field public static final String TITLE = "title";
  }

  public static interface MediaStore.Images.ImageColumns extends android.provider.MediaStore.MediaColumns {
  public static interface MediaStore.Images.ImageColumns extends android.provider.MediaStore.MediaColumns {
    field public static final String BUCKET_DISPLAY_NAME = "bucket_display_name";
    field public static final String BUCKET_DISPLAY_NAME = "bucket_display_name";
    field public static final String BUCKET_ID = "bucket_id";
    field public static final String BUCKET_ID = "bucket_id";
@@ -468,10 +471,6 @@ package android.provider {


  public static interface MediaStore.MediaColumns extends android.provider.BaseColumns {
  public static interface MediaStore.MediaColumns extends android.provider.BaseColumns {
    field @Deprecated public static final String GROUP_ID = "group_id";
    field @Deprecated public static final String GROUP_ID = "group_id";
    field @Deprecated public static final String HASH = "_hash";
    field @Deprecated public static final String IS_TRASHED = "is_trashed";
    field @Deprecated public static final String PRIMARY_DIRECTORY = "primary_directory";
    field @Deprecated public static final String SECONDARY_DIRECTORY = "secondary_directory";
  }
  }


  @Deprecated public static class MediaStore.PendingParams {
  @Deprecated public static class MediaStore.PendingParams {
@@ -491,11 +490,14 @@ package android.provider {
  }
  }


  public static interface MediaStore.Video.VideoColumns extends android.provider.MediaStore.MediaColumns {
  public static interface MediaStore.Video.VideoColumns extends android.provider.MediaStore.MediaColumns {
    field public static final String ALBUM = "album";
    field public static final String ARTIST = "artist";
    field public static final String BUCKET_DISPLAY_NAME = "bucket_display_name";
    field public static final String BUCKET_DISPLAY_NAME = "bucket_display_name";
    field public static final String BUCKET_ID = "bucket_id";
    field public static final String BUCKET_ID = "bucket_id";
    field public static final String DATE_TAKEN = "datetaken";
    field public static final String DATE_TAKEN = "datetaken";
    field public static final String DURATION = "duration";
    field public static final String DURATION = "duration";
    field public static final String GROUP_ID = "group_id";
    field public static final String GROUP_ID = "group_id";
    field public static final String RESOLUTION = "resolution";
  }
  }


  public static final class Settings.Global extends android.provider.Settings.NameValueTable {
  public static final class Settings.Global extends android.provider.Settings.NameValueTable {
+230 −123

File changed.

Preview size limit exceeded, changes collapsed.