Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Error While using ExifInterface

Tags:

I am trying to check the orientation of bitmap and flip it if there is a need, but I have error while applying the code. Here is my code while i am trying to flipp the image using ExifInterface:

@RequiresApi(api = Build.VERSION_CODES.N)     public void flipping(Bitmap b)     {         ByteArrayOutputStream bos = new ByteArrayOutputStream();         b.compress(Bitmap.CompressFormat.JPEG,100, bos);         byte[] bitmapdata = bos.toByteArray();         ByteArrayInputStream bs = new ByteArrayInputStream(bitmapdata);         try {              ExifInterface exif = new ExifInterface(bs);             int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,                     ExifInterface.ORIENTATION_UNDEFINED);             switch(orientation) {                  case ExifInterface.ORIENTATION_ROTATE_90:                     rotateImage(b, 90);                     break;                  case ExifInterface.ORIENTATION_ROTATE_180:                     rotateImage(b, 180);                     break;                  case ExifInterface.ORIENTATION_ROTATE_270:                     rotateImage(b, 270);                     break;                  case ExifInterface.ORIENTATION_NORMAL:                  default:                     break;             }              encoding();         } catch (IOException e) {             e.printStackTrace();         }     }     public static Bitmap rotateImage(Bitmap source, float angle) {         Matrix matrix = new Matrix();         matrix.postRotate(angle);         return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(),                 matrix, true);     } 

And here is the error:

java.lang.NoSuchMethodError: No direct method <init>(Ljava/io/InputStream;)V in class Landroid/media/ExifInterface; or its super classes (declaration of 'android.media.ExifInterface' appears in /system/framework/framework.jar)                                                                        at com.sara.image_test.MainActivity.flipping(MainActivity.java:181)                                                                        at com.sara.image_test.MainActivity.onActivityResult(MainActivity.java:66)                                                                        at android.app.Activity.dispatchActivityResult(Activity.java:7165)                                                                        at android.app.ActivityThread.deliverResults(ActivityThread.java:4994)                                                                        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5041)                                                                        at android.app.ActivityThread.access$1600(ActivityThread.java:229)                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1875)                                                                        at android.os.Handler.dispatchMessage(Handler.java:102)                                                                        at android.os.Looper.loop(Looper.java:148)                                                                        at android.app.ActivityThread.main(ActivityThread.java:7325)                                                                        at java.lang.reflect.Method.invoke(Native Method)                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
like image 428
Saleh Refaai Avatar asked May 29 '17 15:05

Saleh Refaai


1 Answers

for AndroidX use

androidx.exifinterface.media.ExifInterface 

Import this dependency in build.gradle:

implementation 'androidx.exifinterface:exifinterface:1.3.2' 
like image 162
Francis Avatar answered Oct 09 '22 02:10

Francis