Fix/workaround bogus error in Android samples running on Android 4.1.1
authorAndrey Kamaev <andrey.kamaev@itseez.com>
Thu, 23 Aug 2012 15:17:51 +0000 (19:17 +0400)
committerAndrey Kamaev <andrey.kamaev@itseez.com>
Fri, 24 Aug 2012 12:24:53 +0000 (16:24 +0400)
samples/android/tutorial-0-androidcamera/src/org/opencv/samples/tutorial0/SampleViewBase.java
samples/android/tutorial-1-addopencv/src/org/opencv/samples/tutorial1/SampleViewBase.java
samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/SampleViewBase.java
samples/android/tutorial-4-mixed/src/org/opencv/samples/tutorial4/SampleViewBase.java

index 147393a..376c86a 100644 (file)
@@ -25,6 +25,7 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
     private byte[]              mFrame;
     private boolean             mThreadRun;
     private byte[]              mBuffer;
+    private SurfaceTexture      mSf;
 
 
     public SampleViewBase(Context context) {
@@ -43,16 +44,17 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
     }
 
     public void setPreview() throws IOException {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
-            mCamera.setPreviewTexture( new SurfaceTexture(10) );
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+            mSf = new SurfaceTexture(10);
+            mCamera.setPreviewTexture( mSf );
+        }
         else
-        mCamera.setPreviewDisplay(null);
+            mCamera.setPreviewDisplay(null);
     }
 
 
     public boolean openCamera() {
         Log.i(TAG, "openCamera");
-        releaseCamera();
         mCamera = Camera.open();
         if(mCamera == null) {
             Log.e(TAG, "Can't open camera!");
@@ -125,15 +127,15 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
                 mFrame = new byte [size];
                 mCamera.addCallbackBuffer(mBuffer);
 
+                /* Notify that the preview is about to be started and deliver preview size */
+                onPreviewStarted(params.getPreviewSize().width, params.getPreviewSize().height);
+
                 try {
                     setPreview();
                 } catch (IOException e) {
                     Log.e(TAG, "mCamera.setPreviewDisplay/setPreviewTexture fails: " + e);
                 }
 
-                /* Notify that the preview is about to be started and deliver preview size */
-                onPreviewStarted(params.getPreviewSize().width, params.getPreviewSize().height);
-
                 /* Now we can start a preview */
                 mCamera.startPreview();
             }
index d479215..6151eb0 100644 (file)
@@ -25,6 +25,7 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
     private byte[]              mFrame;
     private boolean             mThreadRun;
     private byte[]              mBuffer;
+    private SurfaceTexture      mSf;
 
 
     public SampleViewBase(Context context) {
@@ -43,8 +44,10 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
     }
 
     public void setPreview() throws IOException {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
-            mCamera.setPreviewTexture( new SurfaceTexture(10) );
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+            mSf = new SurfaceTexture(10);
+            mCamera.setPreviewTexture( mSf );
+        }
         else
             mCamera.setPreviewDisplay(null);
     }
@@ -124,15 +127,15 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
                 mFrame = new byte [size];
                 mCamera.addCallbackBuffer(mBuffer);
 
+                /* Notify that the preview is about to be started and deliver preview size */
+                onPreviewStarted(params.getPreviewSize().width, params.getPreviewSize().height);
+
                 try {
                     setPreview();
                 } catch (IOException e) {
                     Log.e(TAG, "mCamera.setPreviewDisplay/setPreviewTexture fails: " + e);
                 }
 
-                /* Notify that the preview is about to be started and deliver preview size */
-                onPreviewStarted(params.getPreviewSize().width, params.getPreviewSize().height);
-
                 /* Now we can start a preview */
                 mCamera.startPreview();
             }
index ac1762a..f4666ed 100644 (file)
@@ -24,6 +24,7 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
     private byte[]              mFrame;
     private boolean             mThreadRun;
     private byte[]              mBuffer;
+    private SurfaceTexture      mSf;
 
 
     public SampleViewBase(Context context) {
@@ -42,8 +43,10 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
     }
 
     public void setPreview() throws IOException {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
-            mCamera.setPreviewTexture( new SurfaceTexture(10) );
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+            mSf = new SurfaceTexture(10);
+            mCamera.setPreviewTexture( mSf );
+        }
         else
             mCamera.setPreviewDisplay(null);
     }
@@ -123,15 +126,15 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
                 mFrame = new byte [size];
                 mCamera.addCallbackBuffer(mBuffer);
 
+                /* Notify that the preview is about to be started and deliver preview size */
+                onPreviewStarted(params.getPreviewSize().width, params.getPreviewSize().height);
+
                 try {
                     setPreview();
                 } catch (IOException e) {
                     Log.e(TAG, "mCamera.setPreviewDisplay/setPreviewTexture fails: " + e);
                 }
 
-                /* Notify that the preview is about to be started and deliver preview size */
-                onPreviewStarted(params.getPreviewSize().width, params.getPreviewSize().height);
-
                 /* Now we can start a preview */
                 mCamera.startPreview();
             }
index 4dafedd..4991e30 100644 (file)
@@ -24,6 +24,7 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
     private byte[]              mFrame;
     private boolean             mThreadRun;
     private byte[]              mBuffer;
+    private SurfaceTexture      mSf;
 
 
     public SampleViewBase(Context context) {
@@ -42,8 +43,10 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
     }
 
     public void setPreview() throws IOException {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
-            mCamera.setPreviewTexture( new SurfaceTexture(10) );
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+            mSf = new SurfaceTexture(10);
+            mCamera.setPreviewTexture( mSf );
+        }
         else
             mCamera.setPreviewDisplay(null);
     }
@@ -123,15 +126,15 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
                 mFrame = new byte [size];
                 mCamera.addCallbackBuffer(mBuffer);
 
+                /* Notify that the preview is about to be started and deliver preview size */
+                onPreviewStarted(params.getPreviewSize().width, params.getPreviewSize().height);
+
                 try {
                     setPreview();
                 } catch (IOException e) {
                     Log.e(TAG, "mCamera.setPreviewDisplay/setPreviewTexture fails: " + e);
                 }
 
-                /* Notify that the preview is about to be started and deliver preview size */
-                onPreviewStarted(params.getPreviewSize().width, params.getPreviewSize().height);
-
                 /* Now we can start a preview */
                 mCamera.startPreview();
             }