|
|
|
@ -6,17 +6,16 @@ import java.util.List; |
|
|
|
|
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); |
|
|
|
@ -56,26 +55,31 @@ public class Tutorial3View extends JavaCameraView { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |