incubator-callback-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Phil Snell (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CB-1212) When camera is started, and then cancelled with no photo, attempt to read exif data results in fatal error
Date Wed, 08 Aug 2012 18:35:20 GMT
Phil Snell created CB-1212:
------------------------------

             Summary: When camera is started, and then cancelled with no photo, attempt to
read exif data results in fatal error
                 Key: CB-1212
                 URL: https://issues.apache.org/jira/browse/CB-1212
             Project: Apache Cordova
          Issue Type: Bug
          Components: Android
    Affects Versions: 2.0.0
         Environment: Dell Streak device using SDK version 7 
            Reporter: Phil Snell
            Assignee: Joe Bowser


If you start the camera, it loads normally, and then when you click cancel right after that,
it causes a fatal error. This is because it's trying to initialize the exif data, but no image
exists. What ends up happening is an error when parseInt is called on null. Selected error
messages:

E/AndroidRuntime(3206): Caused by: java.lang.NumberFormatException: unable to parse 'null'
as integer
E/AndroidRuntime(3206): at org.apache.cordova.ExifHelper.getOrientation(ExifHelper.java:167)
E/AndroidRuntime(3206): at org.apache.cordova.CameraLauncher.onActivityResult(CameraLauncher.java:282)

I found a fix that works for me by editing CameraLauncher.onActivityResult. I moved the code
that deals with exif to inside the conditional:

if (resultCode == Activity.RESULT_OK) {

because this is when you know there is an image available. Diff:

diff --git a/framework/src/org/apache/cordova/CameraLauncher.java b/framework/src/org/apache/cordova/CameraLauncher.java
index 6d05c64..48c5676 100755
--- a/framework/src/org/apache/cordova/CameraLauncher.java
+++ b/framework/src/org/apache/cordova/CameraLauncher.java
@@ -273,19 +273,22 @@ public class CameraLauncher extends Plugin implements MediaScannerConnectionClie
 
         // If CAMERA
         if (srcType == CAMERA) {
-            // Create an ExifHelper to save the exif data that is lost during compression
-            ExifHelper exif = new ExifHelper();
-            try {
-                if (this.encodingType == JPEG) {
-                    exif.createInFile(DirectoryManager.getTempDirectoryPath(this.cordova.getActivity())
+ "/.Pic.jpg");
-                    exif.readExifData();
-                    rotate = exif.getOrientation();
-                }
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
+
             // If image available
             if (resultCode == Activity.RESULT_OK) {
+
+                // Create an ExifHelper to save the exif data that is lost during compression
+                ExifHelper exif = new ExifHelper();
+                try {
+                    if (this.encodingType == JPEG) {
+                        exif.createInFile(DirectoryManager.getTempDirectoryPath(this.cordova.getActivity())
+ "/.Pic.jpg");
+                        exif.readExifData();
+                        rotate = exif.getOrientation();
+                    }
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+                
                 try {
                     Bitmap bitmap = null;
                     Uri uri = null;
 






--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message