package io.fotoapparat.parameter.provider;
import java.util.concurrent.Executor;
import io.fotoapparat.hardware.CameraDevice;
import io.fotoapparat.result.CapabilitiesResult;
/**
* Provides camera capabilities.
*/
public class CapabilitiesProvider {
private final CameraDevice cameraDevice;
private final Executor cameraExecutor;
public CapabilitiesProvider(CameraDevice cameraDevice,
Executor cameraExecutor) {
this.cameraDevice = cameraDevice;
this.cameraExecutor = cameraExecutor;
}
/**
* Provides camera capabilities asynchronously, returns immediately.
*
* @return {@link CapabilitiesResult} which will deliver result asynchronously.
*/
public CapabilitiesResult getCapabilities() {
GetCapabilitiesTask getCapabilitiesTask = new GetCapabilitiesTask(cameraDevice);
cameraExecutor.execute(getCapabilitiesTask);
return CapabilitiesResult.fromFuture(getCapabilitiesTask);
}
}