Android - 让相机照片方向无效

时间:2014-03-14 02:15:44

标签: android-intent camera orientation photo

当我尝试拍摄照片时(相机意图之后)我得到了一些异常,它强制关闭我的应用程序。它发生了一些时间,所以我不知道原因是什么。需要帮助!!!

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;
}

来自我的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)

1 个答案:

答案 0 :(得分:0)

显然,new ExifInterface(mCurrentPhotoPath)失败了。如果文件名已损坏,可能会发生这种情况,因此首先要检查的是打印logcat的路径并确保其健康。也许,该文件已损坏。也许,具体设备不支持Exif。如果您想要更具体的答案,请提供更多详细信息有时会发生

祝你好运。