dotnet / dotnet/android-libraries
Xamarin.AndroidX.CameraExtensions: ProcessCameraProvider must implement ICameraProvider
- Dominant language
- C#
- Stars
- 317
- Forks
- 73
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 17
Description
### Android framework version
net9.0-android
### Affected platform version
.NET 9
### Description
ProcessCameraProvider must implement ICameraProvider: https://developer.android.com/reference/androidx/camera/lifecycle/ProcessCameraProvider
### Steps to Reproduce
```csharp
async Task EnableModes(CameraInfo selectedCamera)
{
var cameraFutureCts = new TaskCompletionSource();
var cameraSelector = selectedCamera.CameraSelector ?? throw new CameraException($"Unable to retrieve {nameof(CameraSelector)}");
var cameraProviderFuture = ProcessCameraProvider.GetInstance(context) ?? throw new CameraException($"Unable to retrieve {nameof(ProcessCameraProvider)}");
cameraProviderFuture.AddListener(new Runnable(() =>
{
var cameraProviderInstance = cameraProviderFuture.Get();
if (cameraProviderInstance is not AndroidX.Camera.Core.ICameraProvider androidCameraProvider) // this is true, but must be false
{
cameraFutureCts.SetResult();
return;
}
var extensionsManagerFuture = ExtensionsManager.GetInstanceAsync(context, androidCameraProvider);
extensionsManagerFuture.AddListener(new Runnable(() =>
{
var extensionsManager = (ExtensionsManager)extensionsManagerFuture.Get()!;
if (extensionsManager.IsExtensionAvailable(cameraSelector, extensionMode))
{
cameraSelector = extensionsManager.GetExtensionEnabledCameraSelector(cameraSelector, extensionMode);
}
cameraFutureCts.SetResult();
}), ContextCompat.GetMainExecutor(context));
}), ContextCompat.GetMainExecutor(context));
await cameraFutureCts.Task;
return cameraSelector;
}
```
### Did you find any workaround?
_No response_
### Relevant log output
```shell
```
Contributor guide
Assessment
This issue has not been assessed yet.