Question

When I try to get the taken photo orientation (after Camera Intent) i'm getting some exceptions and it forces to close my app. It happens some times, so I don't know what the cause is. NEED HELP!!!

public int getCameraPhotoOrientation(){
    BitmapFactory.Options bounds = new BitmapFactory.Options();
    bounds.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(mCurrentPhotoPath, bounds);

    ExifInterface exif;
    int rotationAngle = 0;

    try {
    exif = new ExifInterface(mCurrentPhotoPath);
        String orientString = exif.getAttribute(ExifInterface.TAG_ORIENTATION);
        int orientation = orientString != null ? Integer.parseInt(orientString) :     ExifInterface.ORIENTATION_NORMAL;
        if (orientation == ExifInterface.ORIENTATION_ROTATE_90) rotationAngle = 90;
        if (orientation == ExifInterface.ORIENTATION_ROTATE_180) rotationAngle = 180;
        if (orientation == ExifInterface.ORIENTATION_ROTATE_270) rotationAngle = 270;
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    return rotationAngle;
}

From my Logcat:

03-13 22:41:06.040: I/dalvikvm(3236): "main" prio=5 tid=1 NATIVE
03-13 22:41:06.040: I/dalvikvm(3236):   | group="main" sCount=0 dsCount=0 obj=0x4179c508    self=0x41789ba0
03-13 22:41:06.040: I/dalvikvm(3236):   | sysTid=3236 nice=0 sched=0/0 cgrp=apps handle=1074179888
03-13 22:41:06.040: I/dalvikvm(3236):   | schedstat=( 367647085 48508912 344 ) utm=19 stm=17 core=1
03-13 22:41:06.075: I/dalvikvm(3236):   #00  pc 00001260  /system/lib/libcorkscrew.so (unwind_backtrace_thread+27)
03-13 22:41:06.075: I/dalvikvm(3236):   #01  pc 0005f944  /system/lib/libdvm.so (dvmDumpNativeStack(DebugOutputTarget const*, int)+35)
03-13 22:41:06.075: I/dalvikvm(3236):   #02  pc 000537ec  /system/lib/libdvm.so (dvmDumpThreadEx(DebugOutputTarget const*, Thread*, bool)+303)
03-13 22:41:06.075: I/dalvikvm(3236):   #03  pc 00053886  /system/lib/libdvm.so (dvmDumpThread(Thread*, bool)+25)
03-13 22:41:06.075: I/dalvikvm(3236):   #04  pc 00038e42  /system/lib/libdvm.so
03-13 22:41:06.075: I/dalvikvm(3236):   #05  pc 00039116  /system/lib/libdvm.so
03-13 22:41:06.075: I/dalvikvm(3236):   #06  pc 0003a1c6  /system/lib/libdvm.so
03-13 22:41:06.075: I/dalvikvm(3236):   #07  pc 0003c36a  /system/lib/libdvm.so
03-13 22:41:06.075: I/dalvikvm(3236):   #08  pc 00000ed2  /system/lib/libexif_jni.so
03-13 22:41:06.075: I/dalvikvm(3236):   #09  pc 0001deb0  /system/lib/libdvm.so (dvmPlatformInvoke+112)
03-13 22:41:06.075: I/dalvikvm(3236):   #10  pc 0004d102  /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+393)
03-13 22:41:06.075: I/dalvikvm(3236):   #11  pc 000272e0  /system/lib/libdvm.so
03-13 22:41:06.075: I/dalvikvm(3236):   #12  pc 0002bbe8  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+180)
03-13 22:41:06.075: I/dalvikvm(3236):   #13  pc 0005fb36  /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+373)
03-13 22:41:06.075: I/dalvikvm(3236):   #14  pc 000670e4  /system/lib/libdvm.so
03-13 22:41:06.075: I/dalvikvm(3236):   #15  pc 000272e0  /system/lib/libdvm.so
03-13 22:41:06.075: I/dalvikvm(3236):   #16  pc 0002bbe8  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+180)
03-13 22:41:06.075: I/dalvikvm(3236):   #17  pc 0005f870  /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+271)
03-13 22:41:06.075: I/dalvikvm(3236):   #18  pc 000496f2  /system/lib/libdvm.so
03-13 22:41:06.075: I/dalvikvm(3236):   #19  pc 0004c56e  /system/lib/libandroid_runtime.so
03-13 22:41:06.075: I/dalvikvm(3236):   #20  pc 0004d6d2  /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+389)
03-13 22:41:06.075: I/dalvikvm(3236):   #21  pc 00000dce  /system/bin/app_process
03-13 22:41:06.075: I/dalvikvm(3236):   #22  pc 00017120  /system/lib/libc.so (__libc_init+35)
03-13 22:41:06.075: I/dalvikvm(3236):   at android.media.ExifInterface.getAttributesNative(Native Method)
03-13 22:41:06.080: I/dalvikvm(3236):   at android.media.ExifInterface.loadAttributes(ExifInterface.java:204)
03-13 22:41:06.080: I/dalvikvm(3236):   at android.media.ExifInterface.<init>(ExifInterface.java:121)
03-13 22:41:06.085: I/dalvikvm(3236):   at actividadesDePantalla.Compartir.getCameraPhotoOrientation(Compartir.java:220)
03-13 22:41:06.085: I/dalvikvm(3236):   at actividadesDePantalla.Compartir.setPic(Compartir.java:843)
03-13 22:41:06.085: I/dalvikvm(3236):   at actividadesDePantalla.Compartir.onActivityResult(Compartir.java:167)
03-13 22:41:06.085: I/dalvikvm(3236):   at android.app.Activity.dispatchActivityResult(Activity.java:5390)
03-13 22:41:06.085: I/dalvikvm(3236):   at android.app.ActivityThread.deliverResults(ActivityThread.java:3178)
03-13 22:41:06.090: I/dalvikvm(3236):   at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2603)
03-13 22:41:06.090: I/dalvikvm(3236):   at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2644)
03-13 22:41:06.090: I/dalvikvm(3236):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2130)
03-13 22:41:06.090: I/dalvikvm(3236):   at android.app.ActivityThread.access$600(ActivityThread.java:140)
03-13 22:41:06.090: I/dalvikvm(3236):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
03-13 22:41:06.090: I/dalvikvm(3236):   at android.os.Handler.dispatchMessage(Handler.java:99)
03-13 22:41:06.090: I/dalvikvm(3236):   at android.os.Looper.loop(Looper.java:137)
03-13 22:41:06.090: I/dalvikvm(3236):   at android.app.ActivityThread.main(ActivityThread.java:4898)
03-13 22:41:06.090: I/dalvikvm(3236):   at java.lang.reflect.Method.invokeNative(Native Method)
03-13 22:41:06.090: I/dalvikvm(3236):   at java.lang.reflect.Method.invoke(Method.java:511)
03-13 22:41:06.090: I/dalvikvm(3236):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
03-13 22:41:06.090: I/dalvikvm(3236):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
03-13 22:41:06.090: I/dalvikvm(3236):   at dalvik.system.NativeStart.main(Native Method)
03-13 22:41:06.090: E/dalvikvm(3236): VM aborting
03-13 22:41:06.095: A/libc(3236): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 3236 (example.quecomo)
Was it helpful?

Solution

Obviously, new ExifInterface(mCurrentPhotoPath) fails. This could happen if the file name is corrupted, so the first thing to check would be to print the path to logcat and make sure it's healthy. Maybe, the file is corrupt. Maybe, the specific device does not support Exif. If you want more specific answers, please give more details on It happens some times.

Good luck.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top