diff options
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt/android/multimedia/QtCameraListener.java')
-rw-r--r-- | src/android/jar/src/org/qtproject/qt/android/multimedia/QtCameraListener.java | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/multimedia/QtCameraListener.java b/src/android/jar/src/org/qtproject/qt/android/multimedia/QtCameraListener.java index a37544916..7f5361e77 100644 --- a/src/android/jar/src/org/qtproject/qt/android/multimedia/QtCameraListener.java +++ b/src/android/jar/src/org/qtproject/qt/android/multimedia/QtCameraListener.java @@ -45,11 +45,11 @@ import android.hardware.Camera.CameraInfo; import android.graphics.ImageFormat; import android.graphics.SurfaceTexture; import android.util.Log; +import java.io.File; +import java.io.FileOutputStream; import java.lang.Math; import android.media.ExifInterface; -import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.InputStream; import java.lang.String; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -208,11 +208,16 @@ public class QtCameraListener implements Camera.ShutterCallback, @Override public void onPictureTaken(byte[] data, Camera camera) { + File outputFile = null; try { - InputStream stream = new ByteArrayInputStream(data); + outputFile = File.createTempFile("pic_", ".jpg", QtMultimediaUtils.getCacheDirectory()); + FileOutputStream out = new FileOutputStream(outputFile); - ExifInterface exif = new ExifInterface(stream); + // we just want to read the exif... + BitmapFactory.decodeByteArray(data, 0, data.length) + .compress(Bitmap.CompressFormat.JPEG, 10, out); + ExifInterface exif = new ExifInterface(outputFile.getAbsolutePath()); int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED); @@ -260,6 +265,9 @@ public class QtCameraListener implements Camera.ShutterCallback, } catch (Exception e) { Log.w(TAG, "Error fixing bitmap orientation."); e.printStackTrace(); + } finally { + if (outputFile != null && outputFile.exists()) + outputFile.delete(); } notifyPictureCaptured(m_cameraId, data); |