当我尝试拍摄照片时(相机意图之后)我得到了一些异常,它强制关闭我的应用程序。它发生了一些时间,所以我不知道原因是什么。需要帮助!!!
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)
答案 0 :(得分:0)
显然,new ExifInterface(mCurrentPhotoPath)
失败了。如果文件名已损坏,可能会发生这种情况,因此首先要检查的是打印logcat
的路径并确保其健康。也许,该文件已损坏。也许,具体设备不支持Exif。如果您想要更具体的答案,请提供更多详细信息有时会发生。