You can manually create a SurfaceView and a preview camera as follows:
//First get a reference to the SurfaceView displaying the camera preview cameraSurface = (SurfaceView) findViewById(R.id.cameraSurface); cameraSurfaceHolder = cameraSurface.getHolder(); cameraSurfaceHolder.addCallback(cameraSurfaceHolderCallbacks); . . . private SurfaceHolder.Callback cameraSurfaceHolderCallbacks = new SurfaceHolder.Callback() { @Override public void surfaceDestroyed(SurfaceHolder holder) { if(mCamera == null)return; mCamera.stopPreview(); mCamera.release(); mCamera = null; } @Override public void surfaceCreated(SurfaceHolder holder) { try { mCamera = Camera.open(); mCamera.setPreviewDisplay(holder); } catch (Exception exception) { if(mCamera == null)return; mCamera.release(); mCamera = null; } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { Parameters cameraParameters = mCamera.getParameters(); cameraParameters.setPreviewSize(320, 240); cameraParameters.setPictureSize(320, 240); int avrgExposure = (cameraParameters.getMinExposureCompensation() + cameraParameters.getMaxExposureCompensation())/2; cameraParameters.setExposureCompensation(avrgExposure); mCamera.setParameters(cameraParameters); mCamera.startPreview(); mCamera.takePicture(null, null, mPictureCallback); } };
Remember to add the correct camera resolution to the manifest:
<uses-permission android:name="android.permission.CAMERA"/>
And finally, if you are using Android 4.0 or higher, you can use the method:
mCamera.startFaceDetection(); . . . private FaceDetectionListener faceDetectionListener = new FaceDetectionListener() { @Override public void onFaceDetection(Face[] faces, Camera camera) {
You can go to this post , which explains everything related to this particular functionality, and even provides functional Android source code that you can download it yourself.
Hello!
Martin cazares
source share