1 package com.android.wallpaper.asset;
2 
3 import com.android.wallpaper.compat.BuildCompat;
4 
5 import java.io.IOException;
6 import java.io.InputStream;
7 
8 import androidx.exifinterface.media.ExifInterface;
9 
10 /**
11  * Provides access to basic ExifInterface APIs using {@link android.media.ExifInterface} in OMR1+
12  * SDK or SupportLibrary's {@link ExifInterface} for earlier SDK versions.
13  */
14 class ExifInterfaceCompat {
15 
16     public static final String TAG_ORIENTATION = ExifInterface.TAG_ORIENTATION;
17     public static final int EXIF_ORIENTATION_NORMAL = 1;
18     public static final int EXIF_ORIENTATION_UNKNOWN = -1;
19 
20     private ExifInterface mSupportExifInterface;
21     private android.media.ExifInterface mFrameworkExifInterface;
22 
23     /**
24      * Reads Exif tags from the specified image input stream. It's the caller's responsibility to
25      * close the given InputStream after use.
26      * @see ExifInterface#ExifInterface(InputStream)
27      * @see android.media.ExifInterface#ExifInterface(InputStream)
28      */
ExifInterfaceCompat(InputStream inputStream)29     public ExifInterfaceCompat(InputStream inputStream) throws IOException {
30         // O-MR1 added support for more formats (HEIF), which Support Library cannot implement,
31         // so use the framework version for SDK 27+
32         if (BuildCompat.isAtLeastOMR1()) {
33             mFrameworkExifInterface = new android.media.ExifInterface(inputStream);
34         } else {
35             mSupportExifInterface = new ExifInterface(inputStream);
36         }
37     }
38 
getAttributeInt(String tag, int defaultValue)39     public int getAttributeInt(String tag, int defaultValue) {
40         return mFrameworkExifInterface != null
41                 ? mFrameworkExifInterface.getAttributeInt(tag, defaultValue)
42                 : mSupportExifInterface.getAttributeInt(tag, defaultValue);
43     }
44 
getAttribute(String tag)45     public String getAttribute(String tag) {
46         return mFrameworkExifInterface != null
47                 ? mFrameworkExifInterface.getAttribute(tag)
48                 : mSupportExifInterface.getAttribute(tag);
49     }
50 }
51