// Signature format: 4.0
package androidx.camera.view {

  public abstract class CameraController {
    method @MainThread public void clearImageAnalysisAnalyzer();
    method @MainThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> enableTorch(boolean);
    method @MainThread public androidx.camera.core.CameraInfo? getCameraInfo();
    method @MainThread public androidx.camera.core.CameraSelector getCameraSelector();
    method @MainThread @androidx.camera.core.ImageAnalysis.BackpressureStrategy public int getImageAnalysisBackpressureStrategy();
    method @MainThread public int getImageAnalysisImageQueueDepth();
    method @MainThread @androidx.camera.core.ImageCapture.FlashMode public int getImageCaptureFlashMode();
    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> getInitializationFuture();
    method @MainThread public androidx.lifecycle.LiveData<java.lang.Integer!> getTorchState();
    method @MainThread public androidx.lifecycle.LiveData<androidx.camera.core.ZoomState!> getZoomState();
    method @MainThread public boolean hasCamera(androidx.camera.core.CameraSelector);
    method @MainThread public boolean isImageAnalysisEnabled();
    method @MainThread public boolean isImageCaptureEnabled();
    method @MainThread public boolean isPinchToZoomEnabled();
    method @MainThread @androidx.camera.view.video.ExperimentalVideo public boolean isRecording();
    method @MainThread public boolean isTapToFocusEnabled();
    method @MainThread @androidx.camera.view.video.ExperimentalVideo public boolean isVideoCaptureEnabled();
    method @MainThread public void setCameraSelector(androidx.camera.core.CameraSelector);
    method @MainThread public void setEnabledUseCases(int);
    method @MainThread public void setImageAnalysisAnalyzer(java.util.concurrent.Executor, androidx.camera.core.ImageAnalysis.Analyzer);
    method @MainThread public void setImageAnalysisBackpressureStrategy(@androidx.camera.core.ImageAnalysis.BackpressureStrategy int);
    method @MainThread public void setImageAnalysisImageQueueDepth(int);
    method @MainThread public void setImageCaptureFlashMode(@androidx.camera.core.ImageCapture.FlashMode int);
    method @MainThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setLinearZoom(@FloatRange(from=0.0f, to=1.0f) float);
    method @MainThread public void setPinchToZoomEnabled(boolean);
    method @MainThread public void setTapToFocusEnabled(boolean);
    method @MainThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setZoomRatio(float);
    method @MainThread @androidx.camera.view.video.ExperimentalVideo public void startRecording(androidx.camera.view.video.OutputFileOptions, java.util.concurrent.Executor, androidx.camera.view.video.OnVideoSavedCallback);
    method @MainThread @androidx.camera.view.video.ExperimentalVideo public void stopRecording();
    method @MainThread public void takePicture(androidx.camera.core.ImageCapture.OutputFileOptions, java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageSavedCallback);
    method @MainThread public void takePicture(java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageCapturedCallback);
    field public static final int IMAGE_ANALYSIS = 2; // 0x2
    field public static final int IMAGE_CAPTURE = 1; // 0x1
    field @androidx.camera.view.video.ExperimentalVideo public static final int VIDEO_CAPTURE = 4; // 0x4
  }

  @Deprecated public final class CameraView extends android.widget.FrameLayout {
    ctor @Deprecated public CameraView(android.content.Context);
    ctor @Deprecated public CameraView(android.content.Context, android.util.AttributeSet?);
    ctor @Deprecated public CameraView(android.content.Context, android.util.AttributeSet?, int);
    ctor @Deprecated @RequiresApi(21) public CameraView(android.content.Context, android.util.AttributeSet?, int, int);
    method @Deprecated @RequiresPermission(android.Manifest.permission.CAMERA) public void bindToLifecycle(androidx.lifecycle.LifecycleOwner);
    method @Deprecated public void enableTorch(boolean);
    method @Deprecated public Integer? getCameraLensFacing();
    method @Deprecated public androidx.camera.view.CameraView.CaptureMode getCaptureMode();
    method @Deprecated @androidx.camera.core.ImageCapture.FlashMode public int getFlash();
    method @Deprecated public float getMaxZoomRatio();
    method @Deprecated public float getMinZoomRatio();
    method @Deprecated public androidx.lifecycle.LiveData<androidx.camera.view.PreviewView.StreamState!> getPreviewStreamState();
    method @Deprecated public androidx.camera.view.PreviewView.ScaleType getScaleType();
    method @Deprecated public float getZoomRatio();
    method @Deprecated @RequiresPermission(android.Manifest.permission.CAMERA) public boolean hasCameraWithLensFacing(@androidx.camera.core.CameraSelector.LensFacing int);
    method @Deprecated public boolean isPinchToZoomEnabled();
    method @Deprecated @androidx.camera.view.video.ExperimentalVideo public boolean isRecording();
    method @Deprecated public boolean isTorchOn();
    method @Deprecated public boolean isZoomSupported();
    method @Deprecated public void setCameraLensFacing(Integer?);
    method @Deprecated public void setCaptureMode(androidx.camera.view.CameraView.CaptureMode);
    method @Deprecated public void setFlash(@androidx.camera.core.ImageCapture.FlashMode int);
    method @Deprecated public void setPinchToZoomEnabled(boolean);
    method @Deprecated public void setScaleType(androidx.camera.view.PreviewView.ScaleType);
    method @Deprecated public void setZoomRatio(float);
    method @Deprecated @androidx.camera.view.video.ExperimentalVideo public void startRecording(java.io.File, java.util.concurrent.Executor, androidx.camera.view.video.OnVideoSavedCallback);
    method @Deprecated @androidx.camera.view.video.ExperimentalVideo public void startRecording(android.os.ParcelFileDescriptor, java.util.concurrent.Executor, androidx.camera.view.video.OnVideoSavedCallback);
    method @Deprecated @androidx.camera.view.video.ExperimentalVideo public void startRecording(androidx.camera.view.video.OutputFileOptions, java.util.concurrent.Executor, androidx.camera.view.video.OnVideoSavedCallback);
    method @Deprecated @androidx.camera.view.video.ExperimentalVideo public void stopRecording();
    method @Deprecated public void takePicture(java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageCapturedCallback);
    method @Deprecated public void takePicture(androidx.camera.core.ImageCapture.OutputFileOptions, java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageSavedCallback);
    method @Deprecated public void toggleCamera();
  }

  @Deprecated public enum CameraView.CaptureMode {
    enum_constant @Deprecated public static final androidx.camera.view.CameraView.CaptureMode IMAGE;
    enum_constant @Deprecated @androidx.camera.view.video.ExperimentalVideo public static final androidx.camera.view.CameraView.CaptureMode MIXED;
    enum_constant @Deprecated @androidx.camera.view.video.ExperimentalVideo public static final androidx.camera.view.CameraView.CaptureMode VIDEO;
  }

  public final class LifecycleCameraController extends androidx.camera.view.CameraController {
    ctor public LifecycleCameraController(android.content.Context);
    method @MainThread public void bindToLifecycle(androidx.lifecycle.LifecycleOwner);
    method @MainThread public void unbind();
  }

  public final class PreviewView extends android.widget.FrameLayout {
    ctor @UiThread public PreviewView(android.content.Context);
    ctor @UiThread public PreviewView(android.content.Context, android.util.AttributeSet?);
    ctor @UiThread public PreviewView(android.content.Context, android.util.AttributeSet?, int);
    ctor @UiThread public PreviewView(android.content.Context, android.util.AttributeSet?, int, int);
    method @UiThread public android.graphics.Bitmap? getBitmap();
    method @UiThread public androidx.camera.view.CameraController? getController();
    method @UiThread public androidx.camera.view.PreviewView.ImplementationMode getImplementationMode();
    method @UiThread public androidx.camera.core.MeteringPointFactory getMeteringPointFactory();
    method public androidx.lifecycle.LiveData<androidx.camera.view.PreviewView.StreamState!> getPreviewStreamState();
    method @UiThread public androidx.camera.view.PreviewView.ScaleType getScaleType();
    method @UiThread public androidx.camera.core.Preview.SurfaceProvider getSurfaceProvider();
    method @UiThread @androidx.camera.core.ExperimentalUseCaseGroup public androidx.camera.core.ViewPort? getViewPort();
    method @UiThread @androidx.camera.core.ExperimentalUseCaseGroup public androidx.camera.core.ViewPort? getViewPort(@androidx.camera.core.impl.ImageOutputConfig.RotationValue int);
    method @UiThread public void setController(androidx.camera.view.CameraController?);
    method @UiThread public void setImplementationMode(androidx.camera.view.PreviewView.ImplementationMode);
    method @UiThread public void setScaleType(androidx.camera.view.PreviewView.ScaleType);
  }

  public enum PreviewView.ImplementationMode {
    enum_constant public static final androidx.camera.view.PreviewView.ImplementationMode COMPATIBLE;
    enum_constant public static final androidx.camera.view.PreviewView.ImplementationMode PERFORMANCE;
  }

  public enum PreviewView.ScaleType {
    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FILL_CENTER;
    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FILL_END;
    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FILL_START;
    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FIT_CENTER;
    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FIT_END;
    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FIT_START;
  }

  public enum PreviewView.StreamState {
    enum_constant public static final androidx.camera.view.PreviewView.StreamState IDLE;
    enum_constant public static final androidx.camera.view.PreviewView.StreamState STREAMING;
  }

}

package androidx.camera.view.video {

  @experimental.Experimental @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalVideo {
  }

  @androidx.camera.view.video.ExperimentalVideo @com.google.auto.value.AutoValue public abstract class Metadata {
    method public static androidx.camera.view.video.Metadata.Builder builder();
    method public abstract android.location.Location? getLocation();
  }

  @com.google.auto.value.AutoValue.Builder public abstract static class Metadata.Builder {
    method public abstract androidx.camera.view.video.Metadata build();
    method public abstract androidx.camera.view.video.Metadata.Builder setLocation(android.location.Location?);
  }

  @androidx.camera.view.video.ExperimentalVideo public interface OnVideoSavedCallback {
    method public void onError(int, String, Throwable?);
    method public void onVideoSaved(androidx.camera.view.video.OutputFileResults);
    field public static final int ERROR_ENCODER = 1; // 0x1
    field public static final int ERROR_FILE_IO = 4; // 0x4
    field public static final int ERROR_INVALID_CAMERA = 5; // 0x5
    field public static final int ERROR_MUXER = 2; // 0x2
    field public static final int ERROR_RECORDING_IN_PROGRESS = 3; // 0x3
    field public static final int ERROR_UNKNOWN = 0; // 0x0
  }

  @androidx.camera.view.video.ExperimentalVideo @com.google.auto.value.AutoValue public abstract class OutputFileOptions {
    method public static androidx.camera.view.video.OutputFileOptions.Builder builder(java.io.File);
    method public static androidx.camera.view.video.OutputFileOptions.Builder builder(android.os.ParcelFileDescriptor);
    method public static androidx.camera.view.video.OutputFileOptions.Builder builder(android.content.ContentResolver, android.net.Uri, android.content.ContentValues);
    method public abstract androidx.camera.view.video.Metadata getMetadata();
  }

  @com.google.auto.value.AutoValue.Builder public abstract static class OutputFileOptions.Builder {
    method public abstract androidx.camera.view.video.OutputFileOptions build();
    method public abstract androidx.camera.view.video.OutputFileOptions.Builder setMetadata(androidx.camera.view.video.Metadata);
  }

  @androidx.camera.view.video.ExperimentalVideo @com.google.auto.value.AutoValue public abstract class OutputFileResults {
    method public abstract android.net.Uri? getSavedUri();
  }

}

