Merge "Fix 5224359: Add width and height to media store."

This commit is contained in:
Chih-Chung Chang
2011-09-20 09:23:34 -07:00
committed by Android (Google) Code Review
2 changed files with 36 additions and 0 deletions

View File

@@ -283,6 +283,17 @@ public final class MediaStore {
*/ */
public static final String IS_DRM = "is_drm"; public static final String IS_DRM = "is_drm";
/**
* The width of the image/video in pixels.
* @hide
*/
public static final String WIDTH = "width";
/**
* The height of the image/video in pixels.
* @hide
*/
public static final String HEIGHT = "height";
} }
/** /**

View File

@@ -470,6 +470,8 @@ public class MediaScanner
private int mCompilation; private int mCompilation;
private boolean mIsDrm; private boolean mIsDrm;
private boolean mNoMedia; // flag to suppress file from appearing in media tables private boolean mNoMedia; // flag to suppress file from appearing in media tables
private int mWidth;
private int mHeight;
public FileCacheEntry beginFile(String path, String mimeType, long lastModified, public FileCacheEntry beginFile(String path, String mimeType, long lastModified,
long fileSize, boolean isDirectory, boolean noMedia) { long fileSize, boolean isDirectory, boolean noMedia) {
@@ -545,6 +547,8 @@ public class MediaScanner
mWriter = null; mWriter = null;
mCompilation = 0; mCompilation = 0;
mIsDrm = false; mIsDrm = false;
mWidth = 0;
mHeight = 0;
return entry; return entry;
} }
@@ -583,6 +587,10 @@ public class MediaScanner
processFile(path, mimeType, this); processFile(path, mimeType, this);
} }
if (MediaFile.isImageFileType(mFileType)) {
processImageFile(path);
}
result = endFile(entry, ringtones, notifications, alarms, music, podcasts); result = endFile(entry, ringtones, notifications, alarms, music, podcasts);
} }
} }
@@ -697,6 +705,18 @@ public class MediaScanner
return genreTagValue; return genreTagValue;
} }
private void processImageFile(String path) {
try {
mBitmapOptions.outWidth = 0;
mBitmapOptions.outHeight = 0;
BitmapFactory.decodeFile(path, mBitmapOptions);
mWidth = mBitmapOptions.outWidth;
mHeight = mBitmapOptions.outHeight;
} catch (Throwable th) {
// ignore;
}
}
public void setMimeType(String mimeType) { public void setMimeType(String mimeType) {
if ("audio/mp4".equals(mMimeType) && if ("audio/mp4".equals(mMimeType) &&
mimeType.startsWith("video")) { mimeType.startsWith("video")) {
@@ -725,6 +745,11 @@ public class MediaScanner
map.put(MediaStore.MediaColumns.MIME_TYPE, mMimeType); map.put(MediaStore.MediaColumns.MIME_TYPE, mMimeType);
map.put(MediaStore.MediaColumns.IS_DRM, mIsDrm); map.put(MediaStore.MediaColumns.IS_DRM, mIsDrm);
if (mWidth > 0 && mHeight > 0) {
map.put(MediaStore.MediaColumns.WIDTH, mWidth);
map.put(MediaStore.MediaColumns.HEIGHT, mHeight);
}
if (!mNoMedia) { if (!mNoMedia) {
if (MediaFile.isVideoFileType(mFileType)) { if (MediaFile.isVideoFileType(mFileType)) {
map.put(Video.Media.ARTIST, (mArtist != null && mArtist.length() > 0 map.put(Video.Media.ARTIST, (mArtist != null && mArtist.length() > 0