diff options
author | Marco Nelissen <marcone@google.com> | 2011-01-12 14:30:30 -0800 |
---|---|---|
committer | Marco Nelissen <marcone@google.com> | 2011-01-12 14:46:49 -0800 |
commit | a8a656b0c595fa876a387a91f8813f88a2d3abe7 (patch) | |
tree | 62808958a310d2fe6a8a873b0a5c6dfd8b121fe6 /media | |
parent | e7b2310a856889aa1e683104039033ada3f6b696 (diff) | |
download | frameworks_base-a8a656b0c595fa876a387a91f8813f88a2d3abe7.zip frameworks_base-a8a656b0c595fa876a387a91f8813f88a2d3abe7.tar.gz frameworks_base-a8a656b0c595fa876a387a91f8813f88a2d3abe7.tar.bz2 |
Fix scanning of modified files.
When a media file, particularly a music file, is updated, the media
scanner should use the correct Uri to update it, and not the generic
files Uri. Otherwise, things like artist and album name will not
be properly updated.
Change-Id: I576629c51282bfbeb61c23f1e43b072700084a6c
Diffstat (limited to 'media')
-rw-r--r-- | media/java/android/media/MediaScanner.java | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java index 3708623..6b438bf 100644 --- a/media/java/android/media/MediaScanner.java +++ b/media/java/android/media/MediaScanner.java @@ -462,7 +462,10 @@ public class MediaScanner key = path.toLowerCase(); } FileCacheEntry entry = mFileCache.get(key); - if (entry == null) { + // add some slack to avoid a rounding error + long delta = (entry != null) ? (lastModified - entry.mLastModified) : 0; + boolean wasModified = delta > 1 || delta < -1; + if (entry == null || wasModified) { Uri tableUri; if (isDirectory) { tableUri = mFilesUri; @@ -475,18 +478,17 @@ public class MediaScanner } else { tableUri = mFilesUri; } - entry = new FileCacheEntry(tableUri, 0, path, 0, - (isDirectory ? MtpConstants.FORMAT_ASSOCIATION : 0)); - mFileCache.put(key, entry); - } - entry.mSeenInFileSystem = true; - - // add some slack to avoid a rounding error - long delta = lastModified - entry.mLastModified; - if (delta > 1 || delta < -1) { - entry.mLastModified = lastModified; + if (wasModified) { + entry.mLastModified = lastModified; + entry.mTableUri = tableUri; + } else { + entry = new FileCacheEntry(tableUri, 0, path, lastModified, + (isDirectory ? MtpConstants.FORMAT_ASSOCIATION : 0)); + mFileCache.put(key, entry); + } entry.mLastModifiedChanged = true; } + entry.mSeenInFileSystem = true; if (mProcessPlaylists && MediaFile.isPlayListFileType(mFileType)) { mPlayLists.add(entry); |