Android Camera2 front camera

YOYOYO picture YOYOYO · Sep 8, 2015 · Viewed 18.1k times · Source

I recently noticed that the Camera API is deprecated and I found the new API called Camera2.

I have read the documentation but I don't really understand it.

So my question is: how do I preview the front camera with the new camera api?

Just a preview, not recording.

I want to use this new API because in the future I'm guessing the current Camera API will be replaced and stop working.

So I want to be prepared and just sit and watch while everyone panics. XD

Answer

user0770 picture user0770 · Sep 18, 2015

First of all, find out the id of your front camera (if it has one of course)

    CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);
            try {
                return manager.getCameraIdList();
            } catch (CameraAccessException e) {
                return null;
            }

Then find the faceCamera like this:

CameraCharacteristics cameraCharacteristics = manager.getCameraCharacteristics(cameraId);

        if (cameraCharacteristics == null)
            throw new NullPointerException("No camera with id " + cameraId);

        return cameraCharacteristics.get(CameraCharacteristics.LENS_FACING) == CameraCharacteristics.LENS_FACING_FRONT;

Lastly, you have to set the camera with that id:

CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);
   try {
       characteristics = manager.getCameraCharacteristics(mCameraId);
   }  catch (CameraAccessException e) {
       e.printStackTrace();
   } 

Note, these are just tips on how to do what you wanna do. For details on how to start a preview and more, refer to: http://developer.android.com/samples/Camera2Basic/index.html