Nexus 5的ExifInterface错误

时间:2015-06-21 18:08:30

标签: android android-camera

在我的Android应用中,我使用android.media.action.IMAGE_CAPTURE意图使用相机。然后我使用ExifInterface,因为我需要将照片的缩影发送到我的服务器:

ExifInterface exif = new ExifInterface(GetinnersActivity.this.getExternalFilesDir(null).toString() + File.separator + fileName);
                                byte[] thumbnail = exif.getThumbnail();
                                String miniature = Base64.encodeToString(thumbnail,Base64.DEFAULT); //This line crashes on Nexus 5

我对其他手机没有任何问题,但在尝试执行我提供的最后一行代码时,Nexus 5崩溃了。 Nexus 5在Android 5.1.1上运行。在我的Android Manifest中,

<uses-sdk
        android:minSdkVersion="17"
        android:targetSdkVersion="19" />

我想知道是否由于Nexus 5的一些已知错误或者我做错了什么。

06-21 19:49:55.748: E/AndroidRuntime(29256): java.lang.NullPointerException: Attempt to get length of null array
06-21 19:49:55.748: E/AndroidRuntime(29256):    at android.util.Base64.encode(Base64.java:494)
06-21 19:49:55.748: E/AndroidRuntime(29256):    at android.util.Base64.encodeToString(Base64.java:456)

1 个答案:

答案 0 :(得分:0)

我当然不会假设所有相机都会在EXIF标题中放置缩略图。正如Morrison Chang在评论中指出的那样getThumbnail() is allowed to return null。如果是,您将需要创建自己的缩略图。

  

我不明白为什么它可以为null,因为它在其他手机上不为空

有数以千计的Android设备型号和数千款相机应用。我怀疑你是否已经对它们进行了全部测试。

  

因为没有它我的应用程序无法运行

再次,创建自己的缩略图。在android create jpeg thumbnail上进行Google搜索会带来很多可能性,包括: