diff --git a/core/java/android/provider/MediaStore.java b/core/java/android/provider/MediaStore.java index dda90186b4332..1d27828d85c63 100644 --- a/core/java/android/provider/MediaStore.java +++ b/core/java/android/provider/MediaStore.java @@ -869,6 +869,13 @@ public final class MediaStore { */ public static final String ARTIST = "artist"; + /** + * The artist credited for the album that contains the audio file + *

Type: TEXT

+ * @hide + */ + public static final String ALBUM_ARTIST = "album_artist"; + /** * A non human readable key calculated from the ARTIST, used for * searching, sorting and grouping diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java index 1047fa49c8e9c..e9bcafeef8506 100644 --- a/media/java/android/media/MediaScanner.java +++ b/media/java/android/media/MediaScanner.java @@ -634,7 +634,11 @@ public class MediaScanner } else if (MediaFile.isImageFileType(mFileType)) { // FIXME - add DESCRIPTION } else if (MediaFile.isAudioFileType(mFileType)) { - map.put(Audio.Media.ARTIST, (mArtist != null && mArtist.length() > 0 ? mArtist : MediaStore.UNKNOWN_STRING)); + String artist = mArtist != null && mArtist.length() > 0 ? + mArtist : MediaStore.UNKNOWN_STRING; + map.put(Audio.Media.ARTIST, artist); + map.put(Audio.Media.ALBUM_ARTIST, mAlbumArtist != null && + mAlbumArtist.length() > 0 ? mAlbumArtist : artist); map.put(Audio.Media.ALBUM, (mAlbum != null && mAlbum.length() > 0 ? mAlbum : MediaStore.UNKNOWN_STRING)); map.put(Audio.Media.COMPOSER, mComposer); if (mYear != 0) {