diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25b41ae..518f078 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ + + + + + + + + diff --git a/app/src/main/java/de/trac/spherical/MainActivity.java b/app/src/main/java/de/trac/spherical/MainActivity.java index 1bb24f3..a41c177 100644 --- a/app/src/main/java/de/trac/spherical/MainActivity.java +++ b/app/src/main/java/de/trac/spherical/MainActivity.java @@ -75,7 +75,7 @@ public class MainActivity extends AppCompatActivity { displayPhotoSphere(imageUri); break; - case MIME_IMAGE: + default: displayMaybePhotoSphere(imageUri); break; } @@ -95,12 +95,10 @@ public class MainActivity extends AppCompatActivity { String xml = SphereParser.getXMLContent(inputStream); PhotoSphereMetadata metadata = SphereParser.parse(xml); - inputStream = getContentResolver().openInputStream(uri); - - if (metadata.isUsePanoramaViewer()) { - displayPhotoSphere(inputStream, metadata); + if (metadata == null || !metadata.isUsePanoramaViewer()) { + displayFlatImage(getContentResolver().openInputStream(uri)); } else { - displayFlatImage(inputStream); + displayPhotoSphere(getContentResolver().openInputStream(uri), metadata); } } catch (FileNotFoundException e) { @@ -120,6 +118,11 @@ public class MainActivity extends AppCompatActivity { String xml = SphereParser.getXMLContent(inputStream); PhotoSphereMetadata metadata = SphereParser.parse(xml); + if (metadata == null) { + Log.e(TAG, "Metadata is null. Fall back to flat image."); + displayFlatImage(getContentResolver().openInputStream(uri)); + } + displayPhotoSphere(getContentResolver().openInputStream(uri), metadata); } catch (FileNotFoundException e) { @@ -133,6 +136,7 @@ public class MainActivity extends AppCompatActivity { private void displayPhotoSphere(InputStream inputStream, PhotoSphereMetadata metadata) { renderer.setBitmap(BitmapFactory.decodeStream(inputStream)); + Log.d(TAG, "Display Photo Sphere!"); } /** @@ -140,6 +144,6 @@ public class MainActivity extends AppCompatActivity { * @param inputStream */ private void displayFlatImage(InputStream inputStream) { - Toast.makeText(this, "Not yet implemented", Toast.LENGTH_SHORT).show(); + Log.d(TAG, "Display Flat Image!"); } } diff --git a/app/src/main/java/de/trac/spherical/parser/SphereParser.java b/app/src/main/java/de/trac/spherical/parser/SphereParser.java index 57d36c5..0f2a420 100644 --- a/app/src/main/java/de/trac/spherical/parser/SphereParser.java +++ b/app/src/main/java/de/trac/spherical/parser/SphereParser.java @@ -115,12 +115,15 @@ public class SphereParser { byte[] xml = new byte[xmlLen - 2]; i = inputStream.read(xml); - throwIfUnexpectedEOF(i, r.length); + throwIfUnexpectedEOF(i, xml.length); return new String(xml); } public static PhotoSphereMetadata parse(String xmp) { + if (xmp == null) { + return null; + } PhotoSphereMetadata meta = new PhotoSphereMetadata(); meta.setUsePanoramaViewer(parseBoolean(USE_PANORAMA_VIEWER, xmp, true)); meta.setCaptureSoftware(parseString(CAPTURE_SOFTWARE, xmp));