summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2011-01-12 14:30:30 -0800
committerMarco Nelissen <marcone@google.com>2011-01-12 14:46:49 -0800
commita8a656b0c595fa876a387a91f8813f88a2d3abe7 (patch)
tree62808958a310d2fe6a8a873b0a5c6dfd8b121fe6 /media
parente7b2310a856889aa1e683104039033ada3f6b696 (diff)
downloadframeworks_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.java24
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);