Xamarin.Essentials:Lanterna

A classe Flashlight tem a capacidade de ativar ou desativar o flash da câmera do dispositivo para transformá-lo em uma lanterna.

Introdução

Para começar a usar essa API, leia o guia de introdução para Xamarin.Essentials para garantir que a biblioteca esteja instalada e configurada corretamente em seus projetos.

Para acessar a funcionalidade Flashlight, a seguinte configuração específica da plataforma é necessária.

As permissões Flashlight e Camera são necessárias e devem ser configuradas no projeto do Android. Isso pode ser usado das seguintes maneiras:

Abra o arquivo AssemblyInfo.cs na pasta Propriedades e adicione:

[assembly: UsesPermission(Android.Manifest.Permission.Flashlight)]
[assembly: UsesPermission(Android.Manifest.Permission.Camera)]

OU Atualize o Manifesto do Android:

Abra o arquivo AndroidManifest.xml na pasta Propriedades e adicione o seguinte dentro do nó de manifesto .

<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.CAMERA" />

Ou clique com o botão direito do mouse no projeto do Android e abra as propriedades do projeto. Em Manifesto do Android, localize a área Permissões necessárias: e marque as permissões FLASHLIGHT e CAMERA. Isso atualizará automaticamente o arquivo AndroidManifest.xml.

Ao adicionar essas permissões, o Google Play filtrará automaticamente os dispositivos sem um hardware específico. Você pode contornar isso adicionando o seguinte ao seu arquivo AssemblyInfo.cs em seu projeto do Android:

[assembly: UsesFeature("android.hardware.camera", Required = false)]
[assembly: UsesFeature("android.hardware.camera.autofocus", Required = false)]

Essa API usa permissões de runtime no Android. Verifique se Xamarin.Essentials está totalmente inicializado e se o tratamento de permissões está configurado em seu aplicativo.

No projeto do MainLauncher Android ou em qualquer Activity que seja iniciado Xamarin.Essentials , deve ser inicializado no OnCreate método :

protected override void OnCreate(Bundle savedInstanceState) 
{
    //...
    base.OnCreate(savedInstanceState);
    Xamarin.Essentials.Platform.Init(this, savedInstanceState); // add this line to your code, it may also be called: bundle
    //...
}    

Para lidar com permissões de runtime no Android, Xamarin.Essentials deve receber qualquer OnRequestPermissionsResult. Adicione o seguinte código a todas as classes Activity:

public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Android.Content.PM.Permission[] grantResults)
{
    Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);

    base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}

Como usar Flashlight

Adicione uma referência a Xamarin.Essentials em sua classe:

using Xamarin.Essentials;

A lanterna pode ser ativada e desativada por meio dos métodos TurnOnAsync e TurnOffAsync:

try
{
    // Turn On
    await Flashlight.TurnOnAsync();

    // Turn Off
    await Flashlight.TurnOffAsync();
}
catch (FeatureNotSupportedException fnsEx)
{
    // Handle not supported on device exception
}
catch (PermissionException pEx)
{
    // Handle permission exception
}
catch (Exception ex)
{
    // Unable to turn on/off flashlight
}

Particularidades de implementação da plataforma

A classe Flashlight foi otimizada com base no sistema operacional do dispositivo.

Nível da API 23 e superior

Em níveis mais recentes da API, o Modo Tocha será usado para ativar ou desativar a unidade de flash do dispositivo.

Nível da API 22 e inferior

Uma textura de superfície da câmera é criada para ativar ou desativar o FlashMode da unidade de câmera.

API

Encontre mais vídeos sobre o Xamarin no Channel 9 e no YouTube.