From d36f8b9eb3709431f733b144e86350d51fef5679 Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Thu, 29 Nov 2012 12:51:49 +0400 Subject: [PATCH] Code review comments applied Sample renamed to CameraControl; Picture taking added to show camera preview restart. --- samples/android/CMakeLists.txt | 2 +- .../.classpath | 0 .../.project | 2 +- .../.settings/org.eclipse.jdt.core.prefs | 0 .../AndroidManifest.xml | 3 +- .../CMakeLists.txt | 2 +- .../res/drawable/icon.png | Bin .../res/layout/tutorial5_surface_view.xml | 2 +- .../res/values/strings.xml | 2 +- .../tutorial5/Sample5CameraControl.java} | 20 ++++-- .../tutorial5/SampleJavaCameraView.java | 60 ++++++++++++++++++ .../tutorial5/CustomJavaCameraView.java | 30 --------- 12 files changed, 83 insertions(+), 40 deletions(-) rename samples/android/{tutorial-5-customcamera => tutorial-5-cameracontrol}/.classpath (100%) rename samples/android/{tutorial-5-customcamera => tutorial-5-cameracontrol}/.project (94%) rename samples/android/{tutorial-5-customcamera => tutorial-5-cameracontrol}/.settings/org.eclipse.jdt.core.prefs (100%) rename samples/android/{tutorial-5-customcamera => tutorial-5-cameracontrol}/AndroidManifest.xml (92%) rename samples/android/{tutorial-5-customcamera => tutorial-5-cameracontrol}/CMakeLists.txt (82%) rename samples/android/{tutorial-5-customcamera => tutorial-5-cameracontrol}/res/drawable/icon.png (100%) rename samples/android/{tutorial-5-customcamera => tutorial-5-cameracontrol}/res/layout/tutorial5_surface_view.xml (88%) rename samples/android/{tutorial-5-customcamera => tutorial-5-cameracontrol}/res/values/strings.xml (52%) rename samples/android/{tutorial-5-customcamera/src/org/opencv/samples/tutorial5/Sample5CustomCamera.java => tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/Sample5CameraControl.java} (81%) create mode 100644 samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/SampleJavaCameraView.java delete mode 100644 samples/android/tutorial-5-customcamera/src/org/opencv/samples/tutorial5/CustomJavaCameraView.java diff --git a/samples/android/CMakeLists.txt b/samples/android/CMakeLists.txt index 36495ccf5..12c697c5c 100644 --- a/samples/android/CMakeLists.txt +++ b/samples/android/CMakeLists.txt @@ -16,7 +16,7 @@ add_subdirectory(tutorial-1-addopencv) add_subdirectory(tutorial-2-opencvcamera) add_subdirectory(tutorial-3-native) add_subdirectory(tutorial-4-mixed) -add_subdirectory(tutorial-5-customcamera) +add_subdirectory(tutorial-5-cameracontrol) #hello-android sample if(HAVE_opencv_highgui) diff --git a/samples/android/tutorial-5-customcamera/.classpath b/samples/android/tutorial-5-cameracontrol/.classpath similarity index 100% rename from samples/android/tutorial-5-customcamera/.classpath rename to samples/android/tutorial-5-cameracontrol/.classpath diff --git a/samples/android/tutorial-5-customcamera/.project b/samples/android/tutorial-5-cameracontrol/.project similarity index 94% rename from samples/android/tutorial-5-customcamera/.project rename to samples/android/tutorial-5-cameracontrol/.project index 4d7380723..40a2d7ff2 100644 --- a/samples/android/tutorial-5-customcamera/.project +++ b/samples/android/tutorial-5-cameracontrol/.project @@ -1,6 +1,6 @@ - OpenCV Tutorial 5 - Custom camera + OpenCV Tutorial 5 - Camera Control diff --git a/samples/android/tutorial-5-customcamera/.settings/org.eclipse.jdt.core.prefs b/samples/android/tutorial-5-cameracontrol/.settings/org.eclipse.jdt.core.prefs similarity index 100% rename from samples/android/tutorial-5-customcamera/.settings/org.eclipse.jdt.core.prefs rename to samples/android/tutorial-5-cameracontrol/.settings/org.eclipse.jdt.core.prefs diff --git a/samples/android/tutorial-5-customcamera/AndroidManifest.xml b/samples/android/tutorial-5-cameracontrol/AndroidManifest.xml similarity index 92% rename from samples/android/tutorial-5-customcamera/AndroidManifest.xml rename to samples/android/tutorial-5-cameracontrol/AndroidManifest.xml index 7779cbe66..053033d6c 100644 --- a/samples/android/tutorial-5-customcamera/AndroidManifest.xml +++ b/samples/android/tutorial-5-cameracontrol/AndroidManifest.xml @@ -9,7 +9,7 @@ android:icon="@drawable/icon" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > - @@ -34,5 +34,6 @@ + diff --git a/samples/android/tutorial-5-customcamera/CMakeLists.txt b/samples/android/tutorial-5-cameracontrol/CMakeLists.txt similarity index 82% rename from samples/android/tutorial-5-customcamera/CMakeLists.txt rename to samples/android/tutorial-5-cameracontrol/CMakeLists.txt index 92256bdce..986f75402 100644 --- a/samples/android/tutorial-5-customcamera/CMakeLists.txt +++ b/samples/android/tutorial-5-cameracontrol/CMakeLists.txt @@ -1,4 +1,4 @@ -set(sample example-tutorial-5-customcamera) +set(sample example-tutorial-5-cameracontrol) add_android_project(${sample} "${CMAKE_CURRENT_SOURCE_DIR}" LIBRARY_DEPS ${OpenCV_BINARY_DIR} SDK_TARGET 11 ${ANDROID_SDK_TARGET}) if(TARGET ${sample}) diff --git a/samples/android/tutorial-5-customcamera/res/drawable/icon.png b/samples/android/tutorial-5-cameracontrol/res/drawable/icon.png similarity index 100% rename from samples/android/tutorial-5-customcamera/res/drawable/icon.png rename to samples/android/tutorial-5-cameracontrol/res/drawable/icon.png diff --git a/samples/android/tutorial-5-customcamera/res/layout/tutorial5_surface_view.xml b/samples/android/tutorial-5-cameracontrol/res/layout/tutorial5_surface_view.xml similarity index 88% rename from samples/android/tutorial-5-customcamera/res/layout/tutorial5_surface_view.xml rename to samples/android/tutorial-5-cameracontrol/res/layout/tutorial5_surface_view.xml index 2b858e493..36376e56b 100644 --- a/samples/android/tutorial-5-customcamera/res/layout/tutorial5_surface_view.xml +++ b/samples/android/tutorial-5-cameracontrol/res/layout/tutorial5_surface_view.xml @@ -3,7 +3,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" > - - OCV T5 Custom Camera + OCV T5 Camera Control diff --git a/samples/android/tutorial-5-customcamera/src/org/opencv/samples/tutorial5/Sample5CustomCamera.java b/samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/Sample5CameraControl.java similarity index 81% rename from samples/android/tutorial-5-customcamera/src/org/opencv/samples/tutorial5/Sample5CustomCamera.java rename to samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/Sample5CameraControl.java index 0ba53a633..358d527b9 100644 --- a/samples/android/tutorial-5-customcamera/src/org/opencv/samples/tutorial5/Sample5CustomCamera.java +++ b/samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/Sample5CameraControl.java @@ -11,16 +11,20 @@ import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener; import android.app.Activity; import android.os.Bundle; +import android.os.Environment; import android.util.Log; import android.view.Menu; import android.view.MenuItem; +import android.view.MotionEvent; import android.view.SurfaceView; +import android.view.View; +import android.view.View.OnTouchListener; import android.view.WindowManager; -public class Sample5CustomCamera extends Activity implements CvCameraViewListener { +public class Sample5CameraControl extends Activity implements CvCameraViewListener, OnTouchListener { private static final String TAG = "OCVSample::Activity"; - private CustomJavaCameraView mOpenCvCameraView; + private SampleJavaCameraView mOpenCvCameraView; private MenuItem[] mEffectMenuItems; private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @@ -31,6 +35,7 @@ public class Sample5CustomCamera extends Activity implements CvCameraViewListene { Log.i(TAG, "OpenCV loaded successfully"); mOpenCvCameraView.enableView(); + mOpenCvCameraView.setOnTouchListener(Sample5CameraControl.this); } break; default: { @@ -40,7 +45,7 @@ public class Sample5CustomCamera extends Activity implements CvCameraViewListene } }; - public Sample5CustomCamera() { + public Sample5CameraControl() { Log.i(TAG, "Instantiated new " + this.getClass()); } @@ -53,7 +58,7 @@ public class Sample5CustomCamera extends Activity implements CvCameraViewListene setContentView(R.layout.tutorial5_surface_view); - mOpenCvCameraView = (CustomJavaCameraView) findViewById(R.id.tutorial5_activity_java_surface_view); + mOpenCvCameraView = (SampleJavaCameraView) findViewById(R.id.tutorial5_activity_java_surface_view); mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); @@ -112,4 +117,11 @@ public class Sample5CustomCamera extends Activity implements CvCameraViewListene mOpenCvCameraView.setEffect((String) item.getTitle()); return true; } + + @Override + public boolean onTouch(View v, MotionEvent event) { + Log.i(TAG,"onTouch event"); + mOpenCvCameraView.takePicture(Environment.getExternalStorageDirectory().getPath() + "/sample_picture.jpg"); + return false; + } } diff --git a/samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/SampleJavaCameraView.java b/samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/SampleJavaCameraView.java new file mode 100644 index 000000000..fa33b8f4b --- /dev/null +++ b/samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/SampleJavaCameraView.java @@ -0,0 +1,60 @@ +package org.opencv.samples.tutorial5; + +import java.io.FileOutputStream; +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.util.AttributeSet; +import android.util.Log; + +public class SampleJavaCameraView extends JavaCameraView { + + private static final String TAG = "Sample::SampleJavaCameraView"; + + public SampleJavaCameraView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public List getEffectList() { + return mCamera.getParameters().getSupportedColorEffects(); + } + + public String getEffect() { + return mCamera.getParameters().getColorEffect(); + } + + public void setEffect(String effect) { + Camera.Parameters params = mCamera.getParameters(); + params.setColorEffect(effect); + mCamera.setParameters(params); + } + + 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); + mCamera.startPreview(); + } catch (Exception e) { + e.printStackTrace(); + } + } + }; + + mCamera.takePicture(null, null, callback); + } +} diff --git a/samples/android/tutorial-5-customcamera/src/org/opencv/samples/tutorial5/CustomJavaCameraView.java b/samples/android/tutorial-5-customcamera/src/org/opencv/samples/tutorial5/CustomJavaCameraView.java deleted file mode 100644 index 57d61f152..000000000 --- a/samples/android/tutorial-5-customcamera/src/org/opencv/samples/tutorial5/CustomJavaCameraView.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.opencv.samples.tutorial5; - -import java.util.List; - -import org.opencv.android.JavaCameraView; - -import android.content.Context; -import android.hardware.Camera; -import android.util.AttributeSet; - -public class CustomJavaCameraView extends JavaCameraView { - - public CustomJavaCameraView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public List getEffectList() { - return mCamera.getParameters().getSupportedColorEffects(); - } - - public String getEffect() { - return mCamera.getParameters().getColorEffect(); - } - - public void setEffect(String effect) { - Camera.Parameters params = mCamera.getParameters(); - params.setColorEffect(effect); - mCamera.setParameters(params); - } -}