在我的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)
答案 0 :(得分:0)
我当然不会假设所有相机都会在EXIF标题中放置缩略图。正如Morrison Chang在评论中指出的那样getThumbnail()
is allowed to return null
。如果是,您将需要创建自己的缩略图。
我不明白为什么它可以为null,因为它在其他手机上不为空
有数以千计的Android设备型号和数千款相机应用。我怀疑你是否已经对它们进行了全部测试。
因为没有它我的应用程序无法运行
再次,创建自己的缩略图。在android create jpeg thumbnail
上进行Google搜索会带来很多可能性,包括: