【问题标题】:ExifInterface bug with Nexus 5Nexus 5 的 ExifInterface 错误
【发布时间】:2015-06-22 02:20:32
【问题描述】:

在我的 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 清单中,

<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)

【问题讨论】:

  • 崩溃的Logcat和崩溃前的缩略图数组大小是多少。
  • 记住 getThumbnail 可以返回 null:developer.android.com/reference/android/media/…
  • 我提供了 Logcat,但我不能给你缩略图的大小,因为我现在没有 Nexus 5,我得到它后会尽快编辑。跨度>
  • @MorrisonChang 我知道,但我不明白为什么它可能为空,因为它在其他手机上不为空,实际上我不希望它为空,因为我的应用程序没有它就无法运行.

标签: android android-camera


【解决方案1】:

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

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

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

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

同样,创建您自己的缩略图。在android create jpeg thumbnail 上进行 Google 搜索会发现很多可能性,包括:

【讨论】:

    猜你喜欢
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    • 2015-05-04
    • 1970-01-01
    相关资源
    最近更新 更多