Loading core/java/android/provider/MediaStore.java +20 −10 Original line number Diff line number Diff line Loading @@ -249,6 +249,8 @@ public final class MediaStore { private static final int MICRO_KIND = 3; private static final String[] PROJECTION = new String[] {_ID, MediaColumns.DATA}; static final int DEFAULT_GROUP_ID = 0; private static final Object sThumbBufLock = new Object(); private static byte[] sThumbBuf; private static Bitmap getMiniThumbFromFile(Cursor c, Uri baseUri, ContentResolver cr, BitmapFactory.Options options) { Bitmap bitmap = null; Loading Loading @@ -321,13 +323,17 @@ public final class MediaStore { long magic = thumbFile.getMagic(origId); if (magic != 0) { if (kind == MICRO_KIND) { byte[] data = new byte[MiniThumbFile.BYTES_PER_MINTHUMB]; if (thumbFile.getMiniThumbFromFile(origId, data) != null) { bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); synchronized (sThumbBufLock) { if (sThumbBuf == null) { sThumbBuf = new byte[MiniThumbFile.BYTES_PER_MINTHUMB]; } if (thumbFile.getMiniThumbFromFile(origId, sThumbBuf) != null) { bitmap = BitmapFactory.decodeByteArray(sThumbBuf, 0, sThumbBuf.length); if (bitmap == null) { Log.w(TAG, "couldn't decode byte array."); } } } return bitmap; } else if (kind == MINI_KIND) { String column = isVideo ? "video_id=" : "image_id="; Loading Loading @@ -357,13 +363,17 @@ public final class MediaStore { // Assuming thumbnail has been generated, at least original image exists. if (kind == MICRO_KIND) { byte[] data = new byte[MiniThumbFile.BYTES_PER_MINTHUMB]; if (thumbFile.getMiniThumbFromFile(origId, data) != null) { bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); synchronized (sThumbBufLock) { if (sThumbBuf == null) { sThumbBuf = new byte[MiniThumbFile.BYTES_PER_MINTHUMB]; } if (thumbFile.getMiniThumbFromFile(origId, sThumbBuf) != null) { bitmap = BitmapFactory.decodeByteArray(sThumbBuf, 0, sThumbBuf.length); if (bitmap == null) { Log.w(TAG, "couldn't decode byte array."); } } } } else if (kind == MINI_KIND) { if (c.moveToFirst()) { bitmap = getMiniThumbFromFile(c, baseUri, cr, options); Loading Loading
core/java/android/provider/MediaStore.java +20 −10 Original line number Diff line number Diff line Loading @@ -249,6 +249,8 @@ public final class MediaStore { private static final int MICRO_KIND = 3; private static final String[] PROJECTION = new String[] {_ID, MediaColumns.DATA}; static final int DEFAULT_GROUP_ID = 0; private static final Object sThumbBufLock = new Object(); private static byte[] sThumbBuf; private static Bitmap getMiniThumbFromFile(Cursor c, Uri baseUri, ContentResolver cr, BitmapFactory.Options options) { Bitmap bitmap = null; Loading Loading @@ -321,13 +323,17 @@ public final class MediaStore { long magic = thumbFile.getMagic(origId); if (magic != 0) { if (kind == MICRO_KIND) { byte[] data = new byte[MiniThumbFile.BYTES_PER_MINTHUMB]; if (thumbFile.getMiniThumbFromFile(origId, data) != null) { bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); synchronized (sThumbBufLock) { if (sThumbBuf == null) { sThumbBuf = new byte[MiniThumbFile.BYTES_PER_MINTHUMB]; } if (thumbFile.getMiniThumbFromFile(origId, sThumbBuf) != null) { bitmap = BitmapFactory.decodeByteArray(sThumbBuf, 0, sThumbBuf.length); if (bitmap == null) { Log.w(TAG, "couldn't decode byte array."); } } } return bitmap; } else if (kind == MINI_KIND) { String column = isVideo ? "video_id=" : "image_id="; Loading Loading @@ -357,13 +363,17 @@ public final class MediaStore { // Assuming thumbnail has been generated, at least original image exists. if (kind == MICRO_KIND) { byte[] data = new byte[MiniThumbFile.BYTES_PER_MINTHUMB]; if (thumbFile.getMiniThumbFromFile(origId, data) != null) { bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); synchronized (sThumbBufLock) { if (sThumbBuf == null) { sThumbBuf = new byte[MiniThumbFile.BYTES_PER_MINTHUMB]; } if (thumbFile.getMiniThumbFromFile(origId, sThumbBuf) != null) { bitmap = BitmapFactory.decodeByteArray(sThumbBuf, 0, sThumbBuf.length); if (bitmap == null) { Log.w(TAG, "couldn't decode byte array."); } } } } else if (kind == MINI_KIND) { if (c.moveToFirst()) { bitmap = getMiniThumbFromFile(c, baseUri, cr, options); Loading