package io.fotoapparat.hardware.v2.session;
import android.hardware.camera2.CameraCaptureSession;
import io.fotoapparat.hardware.operators.PreviewOperator;
import io.fotoapparat.hardware.v2.connection.CameraConnection;
/**
* Manages a {@link android.hardware.camera2.CameraCaptureSession} of a {@link
* io.fotoapparat.hardware.v2.Camera2}.
*/
@SuppressWarnings("NewApi")
public class SessionManager implements PreviewOperator, CameraConnection.Listener {
private final SessionProvider sessionProvider;
private PreviewSession session;
public SessionManager(CameraConnection connection,
SessionProvider sessionProvider) {
this.sessionProvider = sessionProvider;
connection.setListener(this);
}
@Override
public void startPreview() {
session = sessionProvider.getPreviewSession();
session.startPreview();
}
@Override
public void stopPreview() {
session.stopPreview();
}
@Override
public void onConnectionClosed() {
if (session != null) {
session.close();
}
}
/**
* @return the currently opened capture session of the camera
*/
public CameraCaptureSession getCaptureSession() {
if (session == null) {
throw new IllegalStateException("Preview has not been yet started.");
}
return session.getCaptureSession();
}
}