diff --git a/samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/Sample5CameraControl.java b/samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/Sample5CameraControl.java index ccc988a0c..46d038a0e 100644 --- a/samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/Sample5CameraControl.java +++ b/samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/Sample5CameraControl.java @@ -13,12 +13,14 @@ import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener; import android.annotation.SuppressLint; import android.app.Activity; +import android.hardware.Camera.Size; 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.SubMenu; import android.view.SurfaceView; import android.view.View; import android.view.View.OnTouchListener; @@ -29,7 +31,11 @@ public class Sample5CameraControl extends Activity implements CvCameraViewListen private static final String TAG = "OCVSample::Activity"; private SampleJavaCameraView mOpenCvCameraView; + private List mResolutionList; private MenuItem[] mEffectMenuItems; + private SubMenu mColorEffectsMenu; + private MenuItem[] mResolutionMenuItems; + private SubMenu mResolutionMenu; private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override @@ -109,22 +115,50 @@ public class Sample5CameraControl extends Activity implements CvCameraViewListen return true; } + mColorEffectsMenu = menu.addSubMenu("Color Effect"); mEffectMenuItems = new MenuItem[effects.size()]; int idx = 0; - ListIterator itr = effects.listIterator(); - while(itr.hasNext()) { - String element = itr.next(); - mEffectMenuItems[idx] = menu.add(element); + ListIterator effectItr = effects.listIterator(); + while(effectItr.hasNext()) { + String element = effectItr.next(); + mEffectMenuItems[idx] = mColorEffectsMenu.add(1, idx, Menu.NONE, element); idx++; } + + mResolutionMenu = menu.addSubMenu("Resolution"); + mResolutionList = mOpenCvCameraView.getResolutionList(); + mResolutionMenuItems = new MenuItem[mResolutionList.size()]; + + ListIterator resolutionItr = mResolutionList.listIterator(); + idx = 0; + while(resolutionItr.hasNext()) { + Size element = resolutionItr.next(); + mResolutionMenuItems[idx] = mResolutionMenu.add(2, idx, Menu.NONE, + Integer.valueOf(element.width).toString() + "x" + Integer.valueOf(element.height).toString()); + idx++; + } + return true; } public boolean onOptionsItemSelected(MenuItem item) { Log.i(TAG, "called onOptionsItemSelected; selected item: " + item); - mOpenCvCameraView.setEffect((String) item.getTitle()); - Toast.makeText(this, mOpenCvCameraView.getEffect(), Toast.LENGTH_SHORT).show(); + if (item.getGroupId() == 1) + { + mOpenCvCameraView.setEffect((String) item.getTitle()); + Toast.makeText(this, mOpenCvCameraView.getEffect(), Toast.LENGTH_SHORT).show(); + } + else if (item.getGroupId() == 2) + { + int id = item.getItemId(); + Size resolution = mResolutionList.get(id); + mOpenCvCameraView.setResolution(resolution); + resolution = mOpenCvCameraView.getResolution(); + String caption = Integer.valueOf(resolution.width).toString() + "x" + Integer.valueOf(resolution.height).toString(); + Toast.makeText(this, caption, Toast.LENGTH_SHORT).show(); + } + return true; } 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 index 8cbf312ba..da12bb098 100644 --- 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 @@ -10,6 +10,7 @@ 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; @@ -34,11 +35,26 @@ public class SampleJavaCameraView extends JavaCameraView { } public void setEffect(String effect) { - Camera.Parameters params = mCamera.getParameters(); + Camera.Parameters params = mCamera.getParameters(); params.setColorEffect(effect); mCamera.setParameters(params); } + public List getResolutionList() { + return mCamera.getParameters().getSupportedPreviewSizes(); + } + + public void setResolution(Size resolution) { + disconnectCamera(); + mMaxHeight = resolution.height; + mMaxWidth = resolution.width; + connectCamera(getWidth(), getHeight()); + } + + public Size getResolution() { + return mCamera.getParameters().getPreviewSize(); + } + public void takePicture(final String fileName) { Log.i(TAG, "Tacking picture"); PictureCallback callback = new PictureCallback() {