Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O CameraView permite a ligação a uma câmara, mostrar uma pré-visualização da câmara, tirar fotografias e gravar vídeos. Também CameraView oferece funcionalidades para controlar o flash e a lanterna, ajustar o zoom, guardar media capturada num ficheiro e oferecer diferentes ganchos para eventos.
As seções a seguir serão incrementalmente baseadas em como usar o CameraView em um aplicativo .NET MAUI. Baseiam-se na utilização 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 primeiro utilizar o CameraView, consulte a seção Introdução. É necessária a seguinte configuração específica da plataforma.
As seguintes permissões precisam ser adicionadas ao arquivo Platforms/Android/AndroidManifest.xml:
<uses-permission android:name="android.permission.CAMERA" />
Caso planeie gravar vídeo, peça permissões de microfone:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Isso deve ser adicionado dentro do <manifest> elemento . 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>
Utilização básica
O CameraView pode ser adicionado a um aplicativo .NET MAUI da seguinte maneira.
Pedir permissões
Os programadores devem solicitar manualmente permissões para a câmara e/ou para o microfone.
var cameraPermissionsRequest = await Permissions.RequestAsync<Permissions.Camera>();
Caso planeie gravar vídeo, peça permissões de microfone:
var microphonePermissionsRequest = await Permissions.RequestAsync<Permissions.Microphone>();
Incluindo o namespace XAML
Para usar o kit de ferramentas em XAML, a seguinte xmlns precisa ser adicionada à sua página ou vista.
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
Por conseguinte, 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 da seguinte forma:
<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 renderizando a saída da câmera padrão conectada ao dispositivo.
Aceda à câmara atual
A SelectedCamera propriedade fornece a capacidade de acessar a câmera atualmente selecionada.
O exemplo a seguir mostra como vincular a SelectedCamera propriedade 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>
Controle de Zoom
A propriedade SelectedCamera fornece tanto uma propriedade MinimumZoomFactor como uma propriedade MaximumZoomFactor, que são de leitura apenas e fornecem aos desenvolvedores uma maneira programática de determinar qual zoom pode ser aplicado à câmera atual. A fim de alterar o zoom na câmera atual o CameraView fornece a ZoomFactor propriedade.
Observação
Se um valor é fornecido fora do MinimumZoomFactor e MaximumZoomFactor o CameraView irá apertar o valor para mantê-lo dentro dos limites.
O exemplo a seguir mostra como adicionar um Slider ao aplicativo e configurar as seguintes associações:
- Vincular a propriedade do
MaximumaoSliderda propriedadeMaximumZoomFactor. - Vincular a propriedade do
MinimumaoSliderda propriedadeMinimumZoomFactor. - Vincule a propriedade
ValuedoSliderà propriedadeCurrentZoomna classeCameraViewModel.
A alteração final envolve a vinculação da 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 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 será sempre usado. -
Auto- O flash será usado automaticamente com base nas condições de iluminação.
A SelectedCamera propriedade também fornece o IsFlashSupported que torna possível determinar se a câmera atualmente selecionada tem um flash que pode ser controlado.
O exemplo a seguir mostra como adicionar um Picker ao aplicativo e configurar as seguintes associações:
- Vincular a propriedade do
IsVisibleaoPickerda propriedadeIsFlashSupported. - Vincular a propriedade
ItemsSourcedePickerà propriedadeFlashModesna classeCameraViewModel- uma lista simples dos valores possíveis do enumeradorCameraFlashMode. - Vincule a propriedade
SelectedItemdoPickerà propriedadeFlashModena classeCameraViewModel.
A alteração final envolve a vinculação da 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çãoDeCapturaDeImagem
O CameraView fornece a capacidade de alterar programaticamente a resolução para imagens capturadas da câmera atual.
Observação
Isso não mudará a resolução que é exibida na pré-visualização da câmera.
A SelectedCamera propriedade também fornece o SupportedResolutions que torna possível determinar quais resoluções a câmera atual suporta.
O exemplo a seguir mostra como adicionar um Picker ao aplicativo e configurar as seguintes associações:
- Vincular a propriedade do
ItemsSourceaoPickerda propriedadeSupportedResolutions. - Vincule a propriedade
SelectedItemdoPickerà propriedadeSelectedResolutionna classeCameraViewModel.
A alteração final envolve a vinculação da 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. Isto é possível através do CaptureImage método ou do CaptureImageCommand.
O exemplo a seguir mostra como adicionar um Button ao aplicativo e configurar as seguintes associaçõ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 usar a imagem que foi capturada, o CameraView fornece o MediaCaptured evento.
O exemplo a seguir demonstra como usar o CaptureImage método:
Observação
O código C# abaixo usa o campo Camera 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. Isto é possível através do StartVideoRecording método ou do StartVideoRecordingCommand.
O exemplo a seguir mostra como adicionar um Button ao aplicativo e configurar as seguintes associaçõ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 Camera 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);
}
No caso de você querer gravar um vídeo curto e gravar vídeo em MemoryStream você pode usar a próxima sobrecarga de 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 pré-visualização
O CameraView permite iniciar a visualização a partir da câmera de forma programática. Isto é possível através do StartCameraPreview método ou do StartCameraPreviewCommand.
O exemplo a seguir mostra como adicionar um Button ao aplicativo e configurar as seguintes associaçõ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 Camera 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 pré-visualização
O CameraView fornece a capacidade de parar programaticamente a visualização da câmera. Isto é possível através do StopCameraPreview método ou do StopCameraPreviewCommand.
O exemplo a seguir mostra como adicionar um Button ao aplicativo e configurar as seguintes associaçõ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 Camera 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 |
Recebe ou define o modo de flash da câmara. 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 de pré-visualização. Esta é uma propriedade vinculável. | Size.Zero |
IsAvailable |
bool |
Percebe se a câmara está disponível no dispositivo. Esta é uma propriedade vinculável apenas de leitura. | false |
IsBusy |
bool |
Percebe se a câmara está ocupada no momento (por exemplo, a captar uma imagem ou a gravar). Esta é uma propriedade vinculável apenas de leitura. | false |
IsTorchOn |
bool |
Obtém ou define se a lanterna da câmara está ativada. Esta é uma propriedade vinculável. | false |
SelectedCamera |
CameraInfo? |
Obtém ou define o dispositivo de câmara presentemente selecionado. Esta é uma propriedade vinculável com ligação bidirecional. | null |
ZoomFactor |
float |
Obtém ou define o fator de zoom da câmara. O valor é automaticamente fixado aos MinimumZoomFactor e MaximumZoomFactor da câmara selecionada. Esta é uma propriedade vinculável. |
1f |
Comandos
| Comando | Parâmetro de Comando | Descrição |
|---|---|---|
CaptureImageCommand |
— | Desencadeia uma captura de imagem. A imagem captada é devolvida através do MediaCaptured evento. |
StartCameraPreviewCommand |
— | Inicia o ecrã de pré-visualização da câmara. |
StartVideoRecordingCommand |
Stream (opcional) |
Inicia a gravação de vídeo. Pode opcionalmente passar um Stream para onde gravar. |
StopCameraPreviewCommand |
— | Interrompe a pré-visualização da câmara. |
StopVideoRecordingCommand |
— | Para a gravação de vídeo e retorna o fluxo gravado. |
Events
| Event | Tipo | Descrição |
|---|---|---|
MediaCaptured |
EventHandler<MediaCapturedEventArgs> |
Eleva-se quando uma imagem é captada com sucesso. O MediaCapturedEventArgs contém uma propriedade Media de tipo Stream com os dados da imagem capturados. |
MediaCaptureFailed |
EventHandler<MediaCaptureFailedEventArgs> |
É gerado 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 |
Capta uma única imagem da câmara. O resultado é transmitido através do MediaCaptured evento. |
GetAvailableCameras(CancellationToken) |
ValueTask<IReadOnlyList<CameraInfo>> |
Recupera uma lista dos dispositivos de câmara disponíveis no dispositivo. |
StartCameraPreview(CancellationToken) |
Task |
Começa a mostrar a pré-visualização da câmara. |
StartVideoRecording(CancellationToken) |
Task |
Começa a gravar vídeo numa unidade interna MemoryStream. |
StartVideoRecording(Stream, CancellationToken) |
Task |
Começa a gravar vídeo no arquivo fornecido Stream. |
StopCameraPreview() |
void |
Deixa de mostrar a pré-visualização da câmara. |
StopVideoRecording(CancellationToken) |
Task<Stream> |
Interrompe a gravação de vídeo e devolve a gravação Stream. |
CameraInfo
A CameraInfo classe representa informação sobre um dispositivo de câmara disponível no sistema.
| Propriedade | Tipo | Descrição |
|---|---|---|
DeviceId |
string |
O identificador único do dispositivo da câmara. |
IsFlashSupported |
bool |
Se a câmara suporta flash. |
MaximumZoomFactor |
float |
O fator de zoom máximo suportado. |
MinimumZoomFactor |
float |
O fator de zoom mínimo suportado. |
Name |
string |
O nome do dispositivo da câmara. |
Position |
CameraPosition |
A posição física da câmara no dispositivo (Front, Rear, ou Unknown). |
SupportedResolutions |
IReadOnlyList<Size> |
A lista de resoluções suportadas pela câmara para captura de imagem. |
Modo FlashCâmara
O CameraFlashMode enum define os modos de flash disponíveis.
| Value | Descrição |
|---|---|
Off |
O flash está desligado e não será usado. |
On |
O flash está ligado e será sempre usado. |
Auto |
O flash será usado automaticamente com base nas condições de iluminação. |
CâmaraPosição
O CameraPosition enum define as possíveis posições físicas de uma câmara num dispositivo.
| Value | Descrição |
|---|---|
Unknown |
A posição da câmara é desconhecida. |
Front |
A câmara está na frente do dispositivo (virada para o utilizador). |
Rear |
A câmara está na parte traseira do dispositivo (virada para longe do utilizador). |
Exemplos
Você pode encontrar um exemplo desse recurso em ação no .NET MAUI Community Toolkit Sample Application.
API
Você pode encontrar o código-fonte para CameraView no repositório GitHub do .NET MAUI Community Toolkit.
.NET MAUI Community Toolkit