From e106aa909b2aafb12644a695cf4e1d36a8e1f60e Mon Sep 17 00:00:00 2001 From: Hyoungho Choi Date: Thu, 2 Mar 2023 22:05:30 +0900 Subject: [PATCH] Use a ExifInterface ctor with a file descriptor as a parameter To avoid a binder circular dependency, ExifInterface is changed to use a file descriptor for getting HEIF attributes (when available). Bug: 199822700 Test: manual Change-Id: I1b0762fd91f89bfb739b47467a685149309dd157 --- media/java/android/media/ThumbnailUtils.java | 25 +++++++++++--------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/media/java/android/media/ThumbnailUtils.java b/media/java/android/media/ThumbnailUtils.java index e6d95eb6d5a1..cf3ba872feb5 100644 --- a/media/java/android/media/ThumbnailUtils.java +++ b/media/java/android/media/ThumbnailUtils.java @@ -49,6 +49,7 @@ import com.android.internal.util.ArrayUtils; import libcore.io.IoUtils; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.util.Arrays; import java.util.Comparator; @@ -255,17 +256,19 @@ public class ThumbnailUtils { // get orientation if (MediaFile.isExifMimeType(mimeType)) { - exif = new ExifInterface(file); - switch (exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 0)) { - case ExifInterface.ORIENTATION_ROTATE_90: - orientation = 90; - break; - case ExifInterface.ORIENTATION_ROTATE_180: - orientation = 180; - break; - case ExifInterface.ORIENTATION_ROTATE_270: - orientation = 270; - break; + try (FileInputStream is = new FileInputStream(file)) { + exif = new ExifInterface(is.getFD()); + switch (exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 0)) { + case ExifInterface.ORIENTATION_ROTATE_90: + orientation = 90; + break; + case ExifInterface.ORIENTATION_ROTATE_180: + orientation = 180; + break; + case ExifInterface.ORIENTATION_ROTATE_270: + orientation = 270; + break; + } } }