Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ele CameraView fornece a capacidade de se conectar a uma câmera, exibir uma visualização da câmera, tirar fotos e gravar vídeos. O CameraView também oferece recursos para dar suporte ao controle do flash e da tocha, ajustando o zoom, salvando mídia capturada em um arquivo e oferecendo ganchos diferentes para eventos.
As seções a seguir desenvolverão gradualmente como usar o CameraView em um aplicativo .NET MAUI. Eles contam com o uso de um CameraViewModel. que será definido como o BindingContext do exemplo CameraViewPage.
Inicialização específica da plataforma
O CameraView faz parte do CommunityToolkit.Maui.Camera pacote nuget. Para usar o CameraView pela primeira vez, consulte a seção Primeiros passos. A seguinte configuração específica da plataforma é necessária.
As seguintes permissões precisam ser adicionadas ao arquivo Platforms/Android/AndroidManifest.xml:
<uses-permission android:name="android.permission.CAMERA" />
Caso planeje gravar vídeo, solicite permissões de microfone:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Isso deve ser adicionado dentro do elemento <manifest>. Abaixo mostra um exemplo mais completo:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true" />
<uses-permission android:name="android.permission.CAMERA" />
<!--Optional. Only for video recording-->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
</manifest>
Uso básico
O CameraView pode ser adicionado a um aplicativo .NET MAUI da seguinte maneira.
Solicitar permissões
Os desenvolvedores devem solicitar manualmente as permissões de câmera e/ou microfone.
var cameraPermissionsRequest = await Permissions.RequestAsync<Permissions.Camera>();
Caso planeje gravar vídeo, solicite permissões de microfone:
var microphonePermissionsRequest = await Permissions.RequestAsync<Permissions.Microphone>();
Incluir o namespace XAML
Para usar o kit de ferramentas no XAML, o xmlns a seguir precisa ser adicionado à sua página ou exibição:
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
Portanto, o seguinte:
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
</ContentPage>
Seria modificado para incluir o xmlns conforme o seguinte:
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
</ContentPage>
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.CameraViewPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
<Grid ColumnDefinitions="*,*,*" RowDefinitions="*,30">
<toolkit:CameraView
Grid.ColumnSpan="3"
Grid.Row="0" />
</Grid>
</ContentPage>
O resultado será uma superfície que renderiza a saída da câmera padrão conectada ao dispositivo.
Acesse a câmera atual
A propriedade SelectedCamera oferece a capacidade de acessar a câmera atualmente selecionada.
O exemplo a seguir mostra como vincular a propriedade SelectedCamera do CameraView a uma propriedade no CameraViewModel com o mesmo nome (SelectedCamera).
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.CameraViewPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
<Grid ColumnDefinitions="*,*,*" RowDefinitions="*,30,30">
<toolkit:CameraView
Grid.ColumnSpan="3"
Grid.Row="0"
SelectedCamera="{Binding SelectedCamera}" />
</Grid>
</ContentPage>
Controles de Zoom
A propriedade SelectedCamera fornece tanto uma propriedade MinimumZoomFactor quanto uma propriedade MaximumZoomFactor, ambas são somente leitura e fornecem aos desenvolvedores uma maneira programática de determinar qual zoom pode ser aplicado à câmera atual. Para alterar o zoom na câmera atual o CameraView fornece a propriedade ZoomFactor.
Observação
Se um valor for fornecido fora de MinimumZoomFactor e MaximumZoomFactor, CameraView fixará o valor para mantê-lo dentro dos limites.
O exemplo a seguir mostra como adicionar um Slider ao aplicativo e configurar as seguintes ligações:
- Vincule a
Maximumpropriedade doSliderà propriedadeMaximumZoomFactordoSelectedCamera. - Vincule a
Minimumpropriedade doSliderà propriedadeMinimumZoomFactordoSelectedCamera. - Vincule a propriedade
ValuedoSliderà propriedadeCurrentZoomda classeCameraViewModel.
A mudança final envolve vincular a propriedade ZoomFactor do CameraView à propriedade CurrentZoom da classe CameraViewModel.
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.CameraViewPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
<Grid ColumnDefinitions="*,*,*" RowDefinitions="*,30,30">
<toolkit:CameraView
Grid.ColumnSpan="3"
Grid.Row="0"
SelectedCamera="{Binding SelectedCamera}"
ZoomFactor="{Binding CurrentZoom}" />
<Slider
Grid.Column="0"
Grid.Row="1"
Value="{Binding CurrentZoom}"
Maximum="{Binding SelectedCamera.MaximumZoomFactor, FallbackValue=1}"
Minimum="{Binding SelectedCamera.MinimumZoomFactor, FallbackValue=1}"/>
</Grid>
</ContentPage>
Modo Flash da Câmera
O CameraView fornece a capacidade de alterar programaticamente o modo de flash no dispositivo, as opções possíveis são:
-
Off- o flash está desligado e não será usado. -
On- o flash está ligado e sempre será usado. -
Auto- o flash será usado automaticamente com base nas condições de iluminação.
A propriedade SelectedCamera também fornece o IsFlashSupported que permite determinar se a câmera atualmente selecionada possui um flash que pode ser controlado.
O exemplo a seguir mostra como adicionar um Picker ao aplicativo e configurar as seguintes ligações:
- Vincule a
IsVisiblepropriedade doPickerà propriedadeIsFlashSupporteddoSelectedCamera. - Vincule a propriedade
ItemsSourcedoPickerà propriedadeFlashModesna classeCameraViewModel- uma lista simples dos valores possíveis daCameraFlashModeenumeração. - Vincule a propriedade
SelectedItemdoPickerà propriedadeFlashModeda classeCameraViewModel.
A mudança final envolve vincular a propriedade CameraFlashMode do CameraView à propriedade FlashMode da classe CameraViewModel.
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.CameraViewPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
<Grid ColumnDefinitions="*,*,*" RowDefinitions="*,30,30">
<toolkit:CameraView
Grid.ColumnSpan="3"
Grid.Row="0"
SelectedCamera="{Binding SelectedCamera}"
ZoomFactor="{Binding CurrentZoom}"
CameraFlashMode="{Binding FlashMode}" />
<Slider
Grid.Column="0"
Grid.Row="1"
Value="{Binding CurrentZoom}"
Maximum="{Binding SelectedCamera.MaximumZoomFactor, FallbackValue=1}"
Minimum="{Binding SelectedCamera.MinimumZoomFactor, FallbackValue=1}"/>
<Picker
Grid.Column="1"
Grid.Row="1"
Title="Flash"
IsVisible="{Binding Path=SelectedCamera.IsFlashSupported, FallbackValue=false}"
ItemsSource="{Binding FlashModes}"
SelectedItem="{Binding FlashMode}" />
</Grid>
</ContentPage>
Resolução de Captura de Imagem
O CameraView fornece a capacidade de alterar programaticamente a resolução das imagens capturadas da câmera atual.
Observação
Isso não alterará a resolução exibida na visualização da câmera.
A propriedade SelectedCamera também fornece o SupportedResolutions que permite determinar quais resoluções a câmera atual suporta.
O exemplo a seguir mostra como adicionar um Picker ao aplicativo e configurar as seguintes ligações:
- Vincule a
ItemsSourcepropriedade doPickerà propriedadeSupportedResolutionsdoSelectedCamera. - Vincule a propriedade
SelectedItemdoPickerà propriedadeSelectedResolutionda classeCameraViewModel.
A mudança final envolve vincular a propriedade ImageCaptureResolution do CameraView à propriedade SelectedResolution da classe CameraViewModel.
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.CameraViewPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
<Grid ColumnDefinitions="*,*,*" RowDefinitions="*,30,30">
<toolkit:CameraView
Grid.ColumnSpan="3"
Grid.Row="0"
SelectedCamera="{Binding SelectedCamera}"
ZoomFactor="{Binding CurrentZoom}"
CameraFlashMode="{Binding FlashMode}"
ImageCaptureResolution="{Binding SelectedResolution}" />
<Slider
Grid.Column="0"
Grid.Row="1"
Value="{Binding CurrentZoom}"
Maximum="{Binding SelectedCamera.MaximumZoomFactor, FallbackValue=1}"
Minimum="{Binding SelectedCamera.MinimumZoomFactor, FallbackValue=1}"/>
<Picker
Grid.Column="1"
Grid.Row="1"
Title="Flash"
IsVisible="{Binding Path=SelectedCamera.IsFlashSupported, FallbackValue=false}"
ItemsSource="{Binding FlashModes}"
SelectedItem="{Binding FlashMode}" />
<Picker
Grid.Column="2"
Grid.Row="1"
Title="Available Resolutions"
ItemsSource="{Binding SelectedCamera.SupportedResolutions}"
SelectedItem="{Binding SelectedResolution}" />
</Grid>
</ContentPage>
CaptureImage
O CameraView fornece a capacidade de acionar programaticamente uma captura de imagem. Isso é possível através do método CaptureImage ou do método CaptureImageCommand.
O exemplo a seguir mostra como adicionar um Button ao aplicativo e configurar as seguintes ligações:
- Vincule a propriedade
CommanddoButtonà propriedadeCaptureImageCommandnoCameraView.
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.CameraViewPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
<Grid ColumnDefinitions="*,*,*" RowDefinitions="*,30,30">
<toolkit:CameraView
x:Name="Camera"
Grid.ColumnSpan="3"
Grid.Row="0"
SelectedCamera="{Binding SelectedCamera}"
ZoomFactor="{Binding CurrentZoom}"
CameraFlashMode="{Binding FlashMode}" />
<Slider
Grid.Column="0"
Grid.Row="1"
Value="{Binding CurrentZoom}"
Maximum="{Binding SelectedCamera.MaximumZoomFactor, FallbackValue=1}"
Minimum="{Binding SelectedCamera.MinimumZoomFactor, FallbackValue=1}"/>
<Picker
Grid.Column="1"
Grid.Row="1"
Title="Flash"
IsVisible="{Binding Path=SelectedCamera.IsFlashSupported, FallbackValue=false}"
ItemsSource="{Binding FlashModes}"
SelectedItem="{Binding FlashMode}" />
<Picker
Grid.Column="2"
Grid.Row="1"
Title="Available Resolutions"
ItemsSource="{Binding SelectedCamera.SupportedResolutions}"
SelectedItem="{Binding SelectedResolution}" />
<Button
Grid.Column="0"
Grid.Row="2"
Command="{Binding CaptureImageCommand, Source={x:Reference Camera}}"
Text="Capture Image" />
</Grid>
</ContentPage>
Observação
Para utilizar a imagem que foi capturada o CameraView fornece o evento MediaCaptured.
O exemplo a seguir demonstra como usar o CaptureImage método:
Observação
O código C# abaixo usa o campo Câmera definido acima em XAML (<toolkit:CameraView x:Name="Camera" />)
async void HandleCaptureButtonTapped(object? sender, EventArgs e)
{
try
{
// Use the Camera field defined above in XAML (`<toolkit:CameraView x:Name="Camera" />`)
var captureImageCTS = new CancellationTokenSource(TimeSpan.FromSeconds(3));
Stream stream = await Camera.CaptureImage(captureImageCTS.Token);
}
catch(Exception e)
{
// Handle Exception
Trace.WriteLine(e);
}
}
Gravação de vídeo
O CameraView fornece a capacidade de gravar vídeos. Isso é possível através do método StartVideoRecording ou do método StartVideoRecordingCommand.
O exemplo a seguir mostra como adicionar um Button ao aplicativo e configurar as seguintes ligações:
- Vincule a propriedade
CommanddoButtonà propriedadeStartVideoRecordingCommandnoCameraView.
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.CameraViewPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
<Grid ColumnDefinitions="*,*,*" RowDefinitions="*,30,30">
<toolkit:CameraView
x:Name="Camera"
Grid.ColumnSpan="3"
Grid.Row="0"
SelectedCamera="{Binding SelectedCamera}"
ZoomFactor="{Binding CurrentZoom}"
CameraFlashMode="{Binding FlashMode}" />
<Slider
Grid.Column="0"
Grid.Row="1"
Value="{Binding CurrentZoom}"
Maximum="{Binding SelectedCamera.MaximumZoomFactor, FallbackValue=1}"
Minimum="{Binding SelectedCamera.MinimumZoomFactor, FallbackValue=1}"/>
<Picker
Grid.Column="1"
Grid.Row="1"
Title="Flash"
IsVisible="{Binding Path=SelectedCamera.IsFlashSupported, FallbackValue=false}"
ItemsSource="{Binding FlashModes}"
SelectedItem="{Binding FlashMode}" />
<Picker
Grid.Column="2"
Grid.Row="1"
Title="Available Resolutions"
ItemsSource="{Binding SelectedCamera.SupportedResolutions}"
SelectedItem="{Binding SelectedResolution}" />
<Button Clicked="StartCameraRecording"
Text="StartVideoRecording" />
<Button Command="{Binding StartVideoRecordingCommand, Source={x:Reference Camera}, x:DataType=toolkit:CameraView}"
CommandParameter="{Binding Stream}"
Text="StartVideoRecording" />
<Button Command="{Binding StopVideoRecordingCommand, Source={x:Reference Camera}, x:DataType=toolkit:CameraView}"
CommandParameter="{Binding Token}"
Text="StopVideoRecording" />
</Grid>
</ContentPage>
Observação
Você deve fornecer um fluxo limpo para gravar o vídeo.
O exemplo a seguir demonstra como usar o StartVideoRecording método:
Observação
O código C# abaixo usa o campo Câmera definido acima em XAML (<toolkit:CameraView x:Name="Camera" />)
async void StartCameraRecordingWithCustomStream(object? sender, EventArgs e)
{
using var threeSecondVideoRecordingStream = new FileStream("recording.mp4", FileMode.Create);
await Camera.StartVideoRecording(threeSecondVideoRecordingStream, CancellationToken.None);
await Task.Delay(TimeSpan.FromSeconds(3));
await Camera.StopVideoRecording(CancellationToken.None);
await FileSaver.SaveAsync("recording.mp4", threeSecondVideoRecordingStream);
}
Caso deseje gravar um vídeo curto em MemoryStream, você poderá usar a próxima sobrecarga da classe VideoRecording:
async void StartCameraRecording(object? sender, EventArgs e)
{
await Camera.StartVideoRecording(CancellationToken.None);
await Task.Delay(TimeSpan.FromSeconds(3));
var threeSecondVideoRecordingStream = await Camera.StopVideoRecording(CancellationToken.None);
await FileSaver.SaveAsync("recording.mp4", threeSecondVideoRecordingStream);
}
Iniciar visualização
O CameraView fornece a capacidade de iniciar de forma programática a visualização da câmera. Isso é possível através do método StartCameraPreview ou do método StartCameraPreviewCommand.
O exemplo a seguir mostra como adicionar um Button ao aplicativo e configurar as seguintes ligações:
- Vincule a propriedade
CommanddoButtonà propriedadeStartCameraPreviewCommandnoCameraView.
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.CameraViewPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
<Grid ColumnDefinitions="*,*,*" RowDefinitions="*,30,30">
<toolkit:CameraView
x:Name="Camera"
Grid.ColumnSpan="3"
Grid.Row="0"
SelectedCamera="{Binding SelectedCamera}"
ZoomFactor="{Binding CurrentZoom}"
CameraFlashMode="{Binding FlashMode}" />
<Slider
Grid.Column="0"
Grid.Row="1"
Value="{Binding CurrentZoom}"
Maximum="{Binding SelectedCamera.MaximumZoomFactor, FallbackValue=1}"
Minimum="{Binding SelectedCamera.MinimumZoomFactor, FallbackValue=1}"/>
<Picker
Grid.Column="1"
Grid.Row="1"
Title="Flash"
IsVisible="{Binding Path=SelectedCamera.IsFlashSupported, FallbackValue=false}"
ItemsSource="{Binding FlashModes}"
SelectedItem="{Binding FlashMode}" />
<Picker
Grid.Column="2"
Grid.Row="1"
Title="Available Resolutions"
ItemsSource="{Binding SelectedCamera.SupportedResolutions}"
SelectedItem="{Binding SelectedResolution}" />
<Button
Grid.Column="0"
Grid.Row="2"
Command="{Binding CaptureImageCommand, Source={x:Reference Camera}}"
Text="Capture Image" />
<Button
Grid.Column="1"
Grid.Row="2"
Command="{Binding StartCameraPreviewCommand, Source={x:Reference Camera}}"
Text="Start Preview" />
</Grid>
</ContentPage>
O exemplo a seguir demonstra como usar o StartCameraPreview método:
Observação
O código C# abaixo usa o campo Câmera definido acima em XAML (<toolkit:CameraView x:Name="Camera" />)
async void HandleStartCameraPreviewButtonTapped(object? sender, EventArgs e)
{
try
{
var startCameraPreviewTCS = new CancellationTokenSource(TimeSpan.FromSeconds(3));
// Use the Camera field defined above in XAML (`<toolkit:CameraView x:Name="Camera" />`)
await Camera.StartCameraPreview(startCameraPreviewTCS.Token);
}
catch(Exception e)
{
// Handle Exception
Trace.WriteLine(e);
}
}
Parar visualização
O CameraView fornece a capacidade de interromper a visualização da câmera por meio de programação. Isso é possível através do método StopCameraPreview ou do método StopCameraPreviewCommand.
O exemplo a seguir mostra como adicionar um Button ao aplicativo e configurar as seguintes ligações:
- Vincule a propriedade
CommanddoButtonà propriedadeStopCameraPreviewCommandnoCameraView.
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.CameraViewPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
<Grid ColumnDefinitions="*,*,*" RowDefinitions="*,30,30">
<toolkit:CameraView
x:Name="Camera"
Grid.ColumnSpan="3"
Grid.Row="0"
SelectedCamera="{Binding SelectedCamera}"
ZoomFactor="{Binding CurrentZoom}"
CameraFlashMode="{Binding FlashMode}" />
<Slider
Grid.Column="0"
Grid.Row="1"
Value="{Binding CurrentZoom}"
Maximum="{Binding SelectedCamera.MaximumZoomFactor, FallbackValue=1}"
Minimum="{Binding SelectedCamera.MinimumZoomFactor, FallbackValue=1}"/>
<Picker
Grid.Column="1"
Grid.Row="1"
Title="Flash"
IsVisible="{Binding Path=SelectedCamera.IsFlashSupported, FallbackValue=false}"
ItemsSource="{Binding FlashModes}"
SelectedItem="{Binding FlashMode}" />
<Picker
Grid.Column="2"
Grid.Row="1"
Title="Available Resolutions"
ItemsSource="{Binding SelectedCamera.SupportedResolutions}"
SelectedItem="{Binding SelectedResolution}" />
<Button
Grid.Column="0"
Grid.Row="2"
Command="{Binding CaptureImageCommand, Source={x:Reference Camera}}"
Text="Capture Image" />
<Button
Grid.Column="1"
Grid.Row="2"
Command="{Binding StartCameraPreviewCommand, Source={x:Reference Camera}}"
Text="Start Preview" />
<Button
Grid.Column="2"
Grid.Row="2"
Command="{Binding StopCameraPreviewCommand, Source={x:Reference Camera}}"
Text="Stop Preview" />
</Grid>
</ContentPage>
O exemplo a seguir demonstra como usar o StopCameraPreview método:
Observação
O código C# abaixo usa o campo Câmera definido acima em XAML (<toolkit:CameraView x:Name="Camera" />)
void HandleStopCameraPreviewButtonTapped(object? sender, EventArgs e)
{
try
{
// Use the Camera field defined above in XAML (`<toolkit:CameraView x:Name="Camera" />`)
Camera.StopCameraPreview();
}
catch(Exception e)
{
// Handle Exception
Trace.WriteLine(e);
}
}
Propriedades
| Propriedade | Tipo | Descrição | Valor Padrão |
|---|---|---|---|
CameraFlashMode |
CameraFlashMode |
Obtém ou define o modo flash para a câmera. Esta é uma propriedade vinculável. | CameraFlashMode.Off |
ImageCaptureResolution |
Size |
Obtém ou define a resolução para captura de imagem. Não afeta a resolução da pré-visualização. Esta é uma propriedade vinculável. | Size.Zero |
IsAvailable |
bool |
Obtém se a câmera está disponível no dispositivo. Essa é uma propriedade vinculável somente leitura. | false |
IsBusy |
bool |
Obtém se a câmera está ocupada no momento (por exemplo, capturando uma imagem ou gravação). Esta é uma propriedade vinculável somente leitura. | false |
IsTorchOn |
bool |
Obtém ou define se a lanterna da câmera está habilitada. Esta é uma propriedade vinculável. | false |
SelectedCamera |
CameraInfo? |
Obtém ou define o dispositivo de câmera selecionado no momento. Esta é uma propriedade vinculável com vinculação bidirecional. | null |
ZoomFactor |
float |
Obtém ou define o fator de zoom da câmera. O valor é fixado automaticamente aos MinimumZoomFactor e MaximumZoomFactor da câmera selecionada. Esta é uma propriedade vinculável. |
1f |
Comandos
| Command | Parâmetro de comando | Descrição |
|---|---|---|
CaptureImageCommand |
— | Dispara uma captura de imagem. A imagem capturada é retornada por meio do MediaCaptured evento. |
StartCameraPreviewCommand |
— | Inicia a exibição de visualização da câmera. |
StartVideoRecordingCommand |
Stream (opcional) |
Inicia a gravação de vídeo. Opcionalmente, passe um Stream para gravar. |
StopCameraPreviewCommand |
— | Interrompe a exibição de visualização da câmera. |
StopVideoRecordingCommand |
— | Interrompe a gravação de vídeo e retorna o fluxo gravado. |
Eventos
| Acontecimento | Tipo | Descrição |
|---|---|---|
MediaCaptured |
EventHandler<MediaCapturedEventArgs> |
Gerado quando uma imagem é capturada com êxito. O MediaCapturedEventArgs contém uma propriedade Media do tipo Stream com os dados de imagem capturados. |
MediaCaptureFailed |
EventHandler<MediaCaptureFailedEventArgs> |
Acionado quando uma captura de imagem falha. O MediaCaptureFailedEventArgs contém uma propriedade FailureReason com a mensagem de erro. |
Methods
| Método | Tipo de retorno | Descrição |
|---|---|---|
CaptureImage(CancellationToken) |
Task |
Captura uma única imagem da câmera. O resultado é entregue via o evento MediaCaptured. |
GetAvailableCameras(CancellationToken) |
ValueTask<IReadOnlyList<CameraInfo>> |
Recupera uma lista de dispositivos de câmera disponíveis no dispositivo. |
StartCameraPreview(CancellationToken) |
Task |
Começa a exibir a visualização da câmera. |
StartVideoRecording(CancellationToken) |
Task |
Inicia a gravação de vídeo em um MemoryStream interno. |
StartVideoRecording(Stream, CancellationToken) |
Task |
Inicia a gravação de vídeo para o destino fornecido Stream. |
StopCameraPreview() |
void |
Para de exibir a pré-visualização da câmera. |
StopVideoRecording(CancellationToken) |
Task<Stream> |
Interrompe a gravação de vídeo e retorna o gravado Stream. |
CameraInfo
A CameraInfo classe representa informações sobre um dispositivo de câmera disponível no sistema.
| Propriedade | Tipo | Descrição |
|---|---|---|
DeviceId |
string |
O identificador exclusivo do dispositivo de câmera. |
IsFlashSupported |
bool |
Se a câmera dá suporte a flash. |
MaximumZoomFactor |
float |
O fator de zoom máximo suportado. |
MinimumZoomFactor |
float |
O fator de zoom mínimo com suporte. |
Name |
string |
O nome do dispositivo de câmera. |
Position |
CameraPosition |
A posição física da câmera no dispositivo (FrontouRearUnknown). |
SupportedResolutions |
IReadOnlyList<Size> |
A lista de resoluções com suporte da câmera para captura de imagem. |
CameraFlashMode
A CameraFlashMode enumeração define os modos flash disponíveis.
| Valor | Descrição |
|---|---|
Off |
O flash está desativado e não será usado. |
On |
O flash está ativado e sempre será usado. |
Auto |
O flash será usado automaticamente com base nas condições de iluminação. |
CameraPosition
A CameraPosition enumeração define as possíveis posições físicas de uma câmera em um dispositivo.
| Valor | Descrição |
|---|---|
Unknown |
A posição da câmera é desconhecida. |
Front |
A câmera está na frente do dispositivo (voltada para o usuário). |
Rear |
A câmera está na parte traseira do dispositivo (voltada para longe do usuário). |
Exemplos
Você pode encontrar um exemplo desse recurso na prática em Aplicativo de exemplo do Kit de Ferramentas da Comunidade do .NET MAUI.
API
O código-fonte do CameraView pode ser encontrado no repositório GitHub do .NET MAUI Community Toolkit.
.NET MAUI Community Toolkit