package io.github.memfis19.annca.internal.controller;

import android.annotation.SuppressLint;
import android.os.Bundle;

import java.io.File;

import io.github.memfis19.annca.internal.configuration.AnncaConfiguration;
import io.github.memfis19.annca.internal.manager.CameraManager;

/**
 * Created by memfis on 7/6/16.
 */
public interface CameraController<CameraId> {

    void onCreate(Bundle savedInstanceState);

    void onResume();

    void onPause();

    void onDestroy();

    void takePhoto();

    void startVideoRecord();

    void stopVideoRecord();

    void openCamera();

    boolean isVideoRecording();

    void switchCamera(@AnncaConfiguration.CameraFace int cameraFace);

    void switchQuality();

    void setFlashMode(@AnncaConfiguration.FlashMode int flashMode);

    int getNumberOfCameras();

    @SuppressLint("SupportAnnotationUsage")
    @AnncaConfiguration.MediaAction

    CameraId getCurrentCameraId();

    int getMediaAction();

    File getOutputFile();

    CameraManager getCameraManager();
}
