import org.opencv.android.JavaCameraView;
import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.Size;
import android.util.AttributeSet;
import android.util.Log;
-public class Tutorial3View extends JavaCameraView {
+public class Tutorial3View extends JavaCameraView implements PictureCallback {
private static final String TAG = "Sample::Tutorial3View";
+ private String mPictureFileName;
public Tutorial3View(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void takePicture(final String fileName) {
- Log.i(TAG, "Tacking picture");
- PictureCallback callback = new PictureCallback() {
-
- private String mPictureFileName = fileName;
-
- @Override
- public void onPictureTaken(byte[] data, Camera camera) {
- Log.i(TAG, "Saving a bitmap to file");
- Bitmap picture = BitmapFactory.decodeByteArray(data, 0, data.length);
- try {
- FileOutputStream out = new FileOutputStream(mPictureFileName);
- picture.compress(Bitmap.CompressFormat.JPEG, 90, out);
- picture.recycle();
- mCamera.startPreview();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- };
-
- mCamera.takePicture(null, null, callback);
+ Log.i(TAG, "Taking picture");
+ this.mPictureFileName = fileName;
+ // Call to garbage collector to avoid bug http://code.opencv.org/issues/2961
+ System.gc();
+
+ // PictureCallback is implemented by the current class
+ mCamera.takePicture(null, null, this);
+ }
+
+ @Override
+ public void onPictureTaken(byte[] data, Camera camera) {
+ Log.i(TAG, "Saving a bitmap to file");
+ // The camera preview was automatically stopped. Start it again.
+ mCamera.startPreview();
+
+ // Write the image in a file (in jpeg format)
+ try {
+ FileOutputStream fos = new FileOutputStream(mPictureFileName);
+
+ fos.write(data);
+ fos.close();
+
+ } catch (java.io.IOException e) {
+ Log.e("PictureDemo", "Exception in photoCallback", e);
+ }
+
}
-}
+}
\ No newline at end of file