Loading api/current.txt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -33452,6 +33452,7 @@ package android.os { method public static boolean isExternalStorageRemovable(); method public static boolean isExternalStorageRemovable(); method public static boolean isExternalStorageRemovable(java.io.File); method public static boolean isExternalStorageRemovable(java.io.File); field public static java.lang.String DIRECTORY_ALARMS; field public static java.lang.String DIRECTORY_ALARMS; field public static java.lang.String DIRECTORY_AUDIOBOOKS; field public static java.lang.String DIRECTORY_DCIM; field public static java.lang.String DIRECTORY_DCIM; field public static java.lang.String DIRECTORY_DOCUMENTS; field public static java.lang.String DIRECTORY_DOCUMENTS; field public static java.lang.String DIRECTORY_DOWNLOADS; field public static java.lang.String DIRECTORY_DOWNLOADS; Loading Loading @@ -37308,6 +37309,7 @@ package android.provider { field public static final java.lang.String COMPOSER = "composer"; field public static final java.lang.String COMPOSER = "composer"; field public static final java.lang.String DURATION = "duration"; field public static final java.lang.String DURATION = "duration"; field public static final java.lang.String IS_ALARM = "is_alarm"; field public static final java.lang.String IS_ALARM = "is_alarm"; field public static final java.lang.String IS_AUDIOBOOK = "is_audiobook"; field public static final java.lang.String IS_MUSIC = "is_music"; field public static final java.lang.String IS_MUSIC = "is_music"; field public static final java.lang.String IS_NOTIFICATION = "is_notification"; field public static final java.lang.String IS_NOTIFICATION = "is_notification"; field public static final java.lang.String IS_PODCAST = "is_podcast"; field public static final java.lang.String IS_PODCAST = "is_podcast"; core/java/android/os/Environment.java +11 −1 Original line number Original line Diff line number Diff line Loading @@ -656,6 +656,12 @@ public class Environment { */ */ public static String DIRECTORY_SCREENSHOTS = "Screenshots"; public static String DIRECTORY_SCREENSHOTS = "Screenshots"; /** * Standard directory in which to place any audio files which are * audiobooks. */ public static String DIRECTORY_AUDIOBOOKS = "Audiobooks"; /** /** * List of standard storage directories. * List of standard storage directories. * <p> * <p> Loading @@ -671,6 +677,7 @@ public class Environment { * <li>{@link #DIRECTORY_DOWNLOADS} * <li>{@link #DIRECTORY_DOWNLOADS} * <li>{@link #DIRECTORY_DCIM} * <li>{@link #DIRECTORY_DCIM} * <li>{@link #DIRECTORY_DOCUMENTS} * <li>{@link #DIRECTORY_DOCUMENTS} * <li>{@link #DIRECTORY_AUDIOBOOKS} * </ul> * </ul> * @hide * @hide */ */ Loading @@ -684,7 +691,8 @@ public class Environment { DIRECTORY_MOVIES, DIRECTORY_MOVIES, DIRECTORY_DOWNLOADS, DIRECTORY_DOWNLOADS, DIRECTORY_DCIM, DIRECTORY_DCIM, DIRECTORY_DOCUMENTS DIRECTORY_DOCUMENTS, DIRECTORY_AUDIOBOOKS, }; }; /** /** Loading @@ -709,6 +717,7 @@ public class Environment { /** {@hide} */ public static final int HAS_DOWNLOADS = 1 << 7; /** {@hide} */ public static final int HAS_DOWNLOADS = 1 << 7; /** {@hide} */ public static final int HAS_DCIM = 1 << 8; /** {@hide} */ public static final int HAS_DCIM = 1 << 8; /** {@hide} */ public static final int HAS_DOCUMENTS = 1 << 9; /** {@hide} */ public static final int HAS_DOCUMENTS = 1 << 9; /** {@hide} */ public static final int HAS_AUDIOBOOKS = 1 << 10; /** {@hide} */ public static final int HAS_ANDROID = 1 << 16; /** {@hide} */ public static final int HAS_ANDROID = 1 << 16; /** {@hide} */ public static final int HAS_OTHER = 1 << 17; /** {@hide} */ public static final int HAS_OTHER = 1 << 17; Loading Loading @@ -738,6 +747,7 @@ public class Environment { else if (DIRECTORY_DOWNLOADS.equals(name)) res |= HAS_DOWNLOADS; else if (DIRECTORY_DOWNLOADS.equals(name)) res |= HAS_DOWNLOADS; else if (DIRECTORY_DCIM.equals(name)) res |= HAS_DCIM; else if (DIRECTORY_DCIM.equals(name)) res |= HAS_DCIM; else if (DIRECTORY_DOCUMENTS.equals(name)) res |= HAS_DOCUMENTS; else if (DIRECTORY_DOCUMENTS.equals(name)) res |= HAS_DOCUMENTS; else if (DIRECTORY_AUDIOBOOKS.equals(name)) res |= HAS_AUDIOBOOKS; else if (DIRECTORY_ANDROID.equals(name)) res |= HAS_ANDROID; else if (DIRECTORY_ANDROID.equals(name)) res |= HAS_ANDROID; else res |= HAS_OTHER; else res |= HAS_OTHER; } } Loading core/java/android/provider/MediaStore.java +6 −0 Original line number Original line Diff line number Diff line Loading @@ -1564,6 +1564,12 @@ public final class MediaStore { */ */ public static final String IS_NOTIFICATION = "is_notification"; public static final String IS_NOTIFICATION = "is_notification"; /** * Non-zero if the audio file is an audiobook * <P>Type: INTEGER (boolean)</P> */ public static final String IS_AUDIOBOOK = "is_audiobook"; /** /** * The genre of the audio file, if any * The genre of the audio file, if any * <P>Type: TEXT</P> * <P>Type: TEXT</P> Loading media/java/android/media/MediaScanner.java +10 −6 Original line number Original line Diff line number Diff line Loading @@ -156,7 +156,8 @@ public class MediaScanner implements AutoCloseable { private static final String NOTIFICATIONS_DIR = "/notifications/"; private static final String NOTIFICATIONS_DIR = "/notifications/"; private static final String ALARMS_DIR = "/alarms/"; private static final String ALARMS_DIR = "/alarms/"; private static final String MUSIC_DIR = "/music/"; private static final String MUSIC_DIR = "/music/"; private static final String PODCAST_DIR = "/podcasts/"; private static final String PODCASTS_DIR = "/podcasts/"; private static final String AUDIOBOOKS_DIR = "/audiobooks/"; public static final String SCANNED_BUILD_PREFS_NAME = "MediaScanBuild"; public static final String SCANNED_BUILD_PREFS_NAME = "MediaScanBuild"; public static final String LAST_INTERNAL_SCAN_FINGERPRINT = "lastScanFingerprint"; public static final String LAST_INTERNAL_SCAN_FINGERPRINT = "lastScanFingerprint"; Loading Loading @@ -654,7 +655,7 @@ public class MediaScanner implements AutoCloseable { // rescan for metadata if file was modified since last scan // rescan for metadata if file was modified since last scan if (entry != null && (entry.mLastModifiedChanged || scanAlways)) { if (entry != null && (entry.mLastModifiedChanged || scanAlways)) { if (noMedia) { if (noMedia) { result = endFile(entry, false, false, false, false, false); result = endFile(entry, false, false, false, false, false, false); } else { } else { boolean isaudio = MediaFile.isAudioMimeType(mMimeType); boolean isaudio = MediaFile.isAudioMimeType(mMimeType); boolean isvideo = MediaFile.isVideoMimeType(mMimeType); boolean isvideo = MediaFile.isVideoMimeType(mMimeType); Loading @@ -679,11 +680,13 @@ public class MediaScanner implements AutoCloseable { boolean notifications = mScanSuccess && boolean notifications = mScanSuccess && (lowpath.indexOf(NOTIFICATIONS_DIR) > 0); (lowpath.indexOf(NOTIFICATIONS_DIR) > 0); boolean alarms = mScanSuccess && (lowpath.indexOf(ALARMS_DIR) > 0); boolean alarms = mScanSuccess && (lowpath.indexOf(ALARMS_DIR) > 0); boolean podcasts = mScanSuccess && (lowpath.indexOf(PODCAST_DIR) > 0); boolean podcasts = mScanSuccess && (lowpath.indexOf(PODCASTS_DIR) > 0); boolean audiobooks = mScanSuccess && (lowpath.indexOf(AUDIOBOOKS_DIR) > 0); boolean music = mScanSuccess && ((lowpath.indexOf(MUSIC_DIR) > 0) || boolean music = mScanSuccess && ((lowpath.indexOf(MUSIC_DIR) > 0) || (!ringtones && !notifications && !alarms && !podcasts)); (!ringtones && !notifications && !alarms && !podcasts && !audiobooks)); result = endFile(entry, ringtones, notifications, alarms, music, podcasts); result = endFile(entry, ringtones, notifications, alarms, podcasts, audiobooks, music); } } } } } catch (RemoteException e) { } catch (RemoteException e) { Loading Loading @@ -957,7 +960,7 @@ public class MediaScanner implements AutoCloseable { @UnsupportedAppUsage @UnsupportedAppUsage private Uri endFile(FileEntry entry, boolean ringtones, boolean notifications, private Uri endFile(FileEntry entry, boolean ringtones, boolean notifications, boolean alarms, boolean music, boolean podcasts) boolean alarms, boolean podcasts, boolean audiobooks, boolean music) throws RemoteException { throws RemoteException { // update database // update database Loading Loading @@ -1003,6 +1006,7 @@ public class MediaScanner implements AutoCloseable { values.put(Audio.Media.IS_ALARM, alarms); values.put(Audio.Media.IS_ALARM, alarms); values.put(Audio.Media.IS_MUSIC, music); values.put(Audio.Media.IS_MUSIC, music); values.put(Audio.Media.IS_PODCAST, podcasts); values.put(Audio.Media.IS_PODCAST, podcasts); values.put(Audio.Media.IS_AUDIOBOOK, audiobooks); } else if (MediaFile.isExifMimeType(mMimeType) && !mNoMedia) { } else if (MediaFile.isExifMimeType(mMimeType) && !mNoMedia) { ExifInterface exif = null; ExifInterface exif = null; try { try { Loading Loading
api/current.txt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -33452,6 +33452,7 @@ package android.os { method public static boolean isExternalStorageRemovable(); method public static boolean isExternalStorageRemovable(); method public static boolean isExternalStorageRemovable(java.io.File); method public static boolean isExternalStorageRemovable(java.io.File); field public static java.lang.String DIRECTORY_ALARMS; field public static java.lang.String DIRECTORY_ALARMS; field public static java.lang.String DIRECTORY_AUDIOBOOKS; field public static java.lang.String DIRECTORY_DCIM; field public static java.lang.String DIRECTORY_DCIM; field public static java.lang.String DIRECTORY_DOCUMENTS; field public static java.lang.String DIRECTORY_DOCUMENTS; field public static java.lang.String DIRECTORY_DOWNLOADS; field public static java.lang.String DIRECTORY_DOWNLOADS; Loading Loading @@ -37308,6 +37309,7 @@ package android.provider { field public static final java.lang.String COMPOSER = "composer"; field public static final java.lang.String COMPOSER = "composer"; field public static final java.lang.String DURATION = "duration"; field public static final java.lang.String DURATION = "duration"; field public static final java.lang.String IS_ALARM = "is_alarm"; field public static final java.lang.String IS_ALARM = "is_alarm"; field public static final java.lang.String IS_AUDIOBOOK = "is_audiobook"; field public static final java.lang.String IS_MUSIC = "is_music"; field public static final java.lang.String IS_MUSIC = "is_music"; field public static final java.lang.String IS_NOTIFICATION = "is_notification"; field public static final java.lang.String IS_NOTIFICATION = "is_notification"; field public static final java.lang.String IS_PODCAST = "is_podcast"; field public static final java.lang.String IS_PODCAST = "is_podcast";
core/java/android/os/Environment.java +11 −1 Original line number Original line Diff line number Diff line Loading @@ -656,6 +656,12 @@ public class Environment { */ */ public static String DIRECTORY_SCREENSHOTS = "Screenshots"; public static String DIRECTORY_SCREENSHOTS = "Screenshots"; /** * Standard directory in which to place any audio files which are * audiobooks. */ public static String DIRECTORY_AUDIOBOOKS = "Audiobooks"; /** /** * List of standard storage directories. * List of standard storage directories. * <p> * <p> Loading @@ -671,6 +677,7 @@ public class Environment { * <li>{@link #DIRECTORY_DOWNLOADS} * <li>{@link #DIRECTORY_DOWNLOADS} * <li>{@link #DIRECTORY_DCIM} * <li>{@link #DIRECTORY_DCIM} * <li>{@link #DIRECTORY_DOCUMENTS} * <li>{@link #DIRECTORY_DOCUMENTS} * <li>{@link #DIRECTORY_AUDIOBOOKS} * </ul> * </ul> * @hide * @hide */ */ Loading @@ -684,7 +691,8 @@ public class Environment { DIRECTORY_MOVIES, DIRECTORY_MOVIES, DIRECTORY_DOWNLOADS, DIRECTORY_DOWNLOADS, DIRECTORY_DCIM, DIRECTORY_DCIM, DIRECTORY_DOCUMENTS DIRECTORY_DOCUMENTS, DIRECTORY_AUDIOBOOKS, }; }; /** /** Loading @@ -709,6 +717,7 @@ public class Environment { /** {@hide} */ public static final int HAS_DOWNLOADS = 1 << 7; /** {@hide} */ public static final int HAS_DOWNLOADS = 1 << 7; /** {@hide} */ public static final int HAS_DCIM = 1 << 8; /** {@hide} */ public static final int HAS_DCIM = 1 << 8; /** {@hide} */ public static final int HAS_DOCUMENTS = 1 << 9; /** {@hide} */ public static final int HAS_DOCUMENTS = 1 << 9; /** {@hide} */ public static final int HAS_AUDIOBOOKS = 1 << 10; /** {@hide} */ public static final int HAS_ANDROID = 1 << 16; /** {@hide} */ public static final int HAS_ANDROID = 1 << 16; /** {@hide} */ public static final int HAS_OTHER = 1 << 17; /** {@hide} */ public static final int HAS_OTHER = 1 << 17; Loading Loading @@ -738,6 +747,7 @@ public class Environment { else if (DIRECTORY_DOWNLOADS.equals(name)) res |= HAS_DOWNLOADS; else if (DIRECTORY_DOWNLOADS.equals(name)) res |= HAS_DOWNLOADS; else if (DIRECTORY_DCIM.equals(name)) res |= HAS_DCIM; else if (DIRECTORY_DCIM.equals(name)) res |= HAS_DCIM; else if (DIRECTORY_DOCUMENTS.equals(name)) res |= HAS_DOCUMENTS; else if (DIRECTORY_DOCUMENTS.equals(name)) res |= HAS_DOCUMENTS; else if (DIRECTORY_AUDIOBOOKS.equals(name)) res |= HAS_AUDIOBOOKS; else if (DIRECTORY_ANDROID.equals(name)) res |= HAS_ANDROID; else if (DIRECTORY_ANDROID.equals(name)) res |= HAS_ANDROID; else res |= HAS_OTHER; else res |= HAS_OTHER; } } Loading
core/java/android/provider/MediaStore.java +6 −0 Original line number Original line Diff line number Diff line Loading @@ -1564,6 +1564,12 @@ public final class MediaStore { */ */ public static final String IS_NOTIFICATION = "is_notification"; public static final String IS_NOTIFICATION = "is_notification"; /** * Non-zero if the audio file is an audiobook * <P>Type: INTEGER (boolean)</P> */ public static final String IS_AUDIOBOOK = "is_audiobook"; /** /** * The genre of the audio file, if any * The genre of the audio file, if any * <P>Type: TEXT</P> * <P>Type: TEXT</P> Loading
media/java/android/media/MediaScanner.java +10 −6 Original line number Original line Diff line number Diff line Loading @@ -156,7 +156,8 @@ public class MediaScanner implements AutoCloseable { private static final String NOTIFICATIONS_DIR = "/notifications/"; private static final String NOTIFICATIONS_DIR = "/notifications/"; private static final String ALARMS_DIR = "/alarms/"; private static final String ALARMS_DIR = "/alarms/"; private static final String MUSIC_DIR = "/music/"; private static final String MUSIC_DIR = "/music/"; private static final String PODCAST_DIR = "/podcasts/"; private static final String PODCASTS_DIR = "/podcasts/"; private static final String AUDIOBOOKS_DIR = "/audiobooks/"; public static final String SCANNED_BUILD_PREFS_NAME = "MediaScanBuild"; public static final String SCANNED_BUILD_PREFS_NAME = "MediaScanBuild"; public static final String LAST_INTERNAL_SCAN_FINGERPRINT = "lastScanFingerprint"; public static final String LAST_INTERNAL_SCAN_FINGERPRINT = "lastScanFingerprint"; Loading Loading @@ -654,7 +655,7 @@ public class MediaScanner implements AutoCloseable { // rescan for metadata if file was modified since last scan // rescan for metadata if file was modified since last scan if (entry != null && (entry.mLastModifiedChanged || scanAlways)) { if (entry != null && (entry.mLastModifiedChanged || scanAlways)) { if (noMedia) { if (noMedia) { result = endFile(entry, false, false, false, false, false); result = endFile(entry, false, false, false, false, false, false); } else { } else { boolean isaudio = MediaFile.isAudioMimeType(mMimeType); boolean isaudio = MediaFile.isAudioMimeType(mMimeType); boolean isvideo = MediaFile.isVideoMimeType(mMimeType); boolean isvideo = MediaFile.isVideoMimeType(mMimeType); Loading @@ -679,11 +680,13 @@ public class MediaScanner implements AutoCloseable { boolean notifications = mScanSuccess && boolean notifications = mScanSuccess && (lowpath.indexOf(NOTIFICATIONS_DIR) > 0); (lowpath.indexOf(NOTIFICATIONS_DIR) > 0); boolean alarms = mScanSuccess && (lowpath.indexOf(ALARMS_DIR) > 0); boolean alarms = mScanSuccess && (lowpath.indexOf(ALARMS_DIR) > 0); boolean podcasts = mScanSuccess && (lowpath.indexOf(PODCAST_DIR) > 0); boolean podcasts = mScanSuccess && (lowpath.indexOf(PODCASTS_DIR) > 0); boolean audiobooks = mScanSuccess && (lowpath.indexOf(AUDIOBOOKS_DIR) > 0); boolean music = mScanSuccess && ((lowpath.indexOf(MUSIC_DIR) > 0) || boolean music = mScanSuccess && ((lowpath.indexOf(MUSIC_DIR) > 0) || (!ringtones && !notifications && !alarms && !podcasts)); (!ringtones && !notifications && !alarms && !podcasts && !audiobooks)); result = endFile(entry, ringtones, notifications, alarms, music, podcasts); result = endFile(entry, ringtones, notifications, alarms, podcasts, audiobooks, music); } } } } } catch (RemoteException e) { } catch (RemoteException e) { Loading Loading @@ -957,7 +960,7 @@ public class MediaScanner implements AutoCloseable { @UnsupportedAppUsage @UnsupportedAppUsage private Uri endFile(FileEntry entry, boolean ringtones, boolean notifications, private Uri endFile(FileEntry entry, boolean ringtones, boolean notifications, boolean alarms, boolean music, boolean podcasts) boolean alarms, boolean podcasts, boolean audiobooks, boolean music) throws RemoteException { throws RemoteException { // update database // update database Loading Loading @@ -1003,6 +1006,7 @@ public class MediaScanner implements AutoCloseable { values.put(Audio.Media.IS_ALARM, alarms); values.put(Audio.Media.IS_ALARM, alarms); values.put(Audio.Media.IS_MUSIC, music); values.put(Audio.Media.IS_MUSIC, music); values.put(Audio.Media.IS_PODCAST, podcasts); values.put(Audio.Media.IS_PODCAST, podcasts); values.put(Audio.Media.IS_AUDIOBOOK, audiobooks); } else if (MediaFile.isExifMimeType(mMimeType) && !mNoMedia) { } else if (MediaFile.isExifMimeType(mMimeType) && !mNoMedia) { ExifInterface exif = null; ExifInterface exif = null; try { try { Loading