1 /* 2 * Copyright 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package androidx.camera.core.imagecapture; 18 19 import androidx.annotation.MainThread; 20 import androidx.camera.core.ImageCapture; 21 import androidx.camera.core.impl.CaptureConfig; 22 23 import com.google.common.util.concurrent.ListenableFuture; 24 25 import org.jspecify.annotations.NonNull; 26 27 import java.util.List; 28 29 /** 30 * Interface for controlling {@link ImageCapture}. 31 */ 32 public interface ImageCaptureControl { 33 34 /** 35 * Invokes {@link ImageCapture#lockFlashMode()}. 36 */ 37 @MainThread lockFlashMode()38 void lockFlashMode(); 39 40 /** 41 * Invokes {@link ImageCapture#unlockFlashMode()}. 42 */ 43 @MainThread unlockFlashMode()44 void unlockFlashMode(); 45 46 /** 47 * Invokes {@link ImageCapture#submitStillCaptureRequest(List)}} 48 */ 49 @MainThread submitStillCaptureRequests( @onNull List<CaptureConfig> captureConfigs)50 @NonNull ListenableFuture<Void> submitStillCaptureRequests( 51 @NonNull List<CaptureConfig> captureConfigs); 52 } 53