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 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>OpenCV Tutorial 5 - Custom camera</name>
+	<name>OpenCV Tutorial 5 - Camera Control</name>
 	<comment></comment>
 	<projects>
 	</projects>
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" >
 
-        <activity android:name="Sample5CustomCamera"
+        <activity android:name="Sample5CameraControl"
                   android:label="@string/app_name"
                   android:screenOrientation="landscape"
                   android:configChanges="keyboardHidden|orientation">
@@ -34,5 +34,6 @@
     <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
     <uses-feature android:name="android.hardware.camera.front" android:required="false"/>
     <uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 
 </manifest>
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" >
 
-    <org.opencv.samples.tutorial5.CustomJavaCameraView
+    <org.opencv.samples.tutorial5.SampleJavaCameraView
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:visibility="gone"
diff --git a/samples/android/tutorial-5-customcamera/res/values/strings.xml b/samples/android/tutorial-5-cameracontrol/res/values/strings.xml
similarity index 52%
rename from samples/android/tutorial-5-customcamera/res/values/strings.xml
rename to samples/android/tutorial-5-cameracontrol/res/values/strings.xml
index d4bb35f54..bf1a740ff 100644
--- a/samples/android/tutorial-5-customcamera/res/values/strings.xml
+++ b/samples/android/tutorial-5-cameracontrol/res/values/strings.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-    <string name="app_name">OCV T5 Custom Camera</string>
+    <string name="app_name">OCV T5 Camera Control</string>
 </resources>
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<String> 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<String> 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);
-    }
-}