Compartir a través de


Linterna

Browse sample.Examinar la muestra.

En este artículo se describe cómo puede usar la interfaz IFlashlight de .NET Multi-platform App UI (.NET MAUI). Con esta interfaz, puedes activar y desactivar el flash de la cámara del dispositivo para emular una linterna.

La implementación predeterminada de la interfaz IFlashlight está disponible a través de la propiedad Flashlight.Default. Tanto la interfaz IFlashlight como la clase Flashlight están contenidas en el espacio de nombres Microsoft.Maui.Devices.

Introducción

Para acceder a la funcionalidad de la linterna, se requiere la siguiente configuración específica para la plataforma.

Hay dos permisos para configurar en el proyecto: Flashlight y Camera. Estos permisos pueden establecerse de las siguientes maneras:

  • Agrega el permiso basado en ensamblados:

    Abre el archivo Platforms/Android/MainApplication.cs y agrega los siguientes atributos de ensamblado después de las directivas using:

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

    - o -

  • Actualiza el manifiesto de Android:

    Abre el archivo Platforms/Android/AndroidManifest.xml y agrega esto en el nodo manifest:

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

    - o -

  • Actualiza el manifiesto de Android en el editor de manifiestos:

    En Visual Studio, haz doble clic en el archivo Platforms/Android/AndroidManifest.xml para abrir el editor de manifiestos de Android. Después, en Permisos necesarios, comprueba los permisos de FLASHLIGHT (Linterna) y CAMERA (Cámara). Esto actualizará automáticamente el archivo AndroidManifest.xml.

Mediante la adición de estos permisos Google Play filtrará automáticamente los dispositivos sin necesidad de hardware específico. Para solucionar este filtrado, agrega los siguientes atributos de ensamblado al archivo Platforms/Android/MainApplication.cs después de las directivas using:

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

Usar la linterna

La linterna puede activarse y desactivarse mediante los métodos TurnOnAsync() y TurnOffAsync(). En el ejemplo de código siguiente se vincula el estado de encendido o apagado de la linterna a un control Switch:

private async void FlashlightSwitch_Toggled(object sender, ToggledEventArgs e)
{
    try
    {
        if (FlashlightSwitch.IsToggled)
            await Flashlight.Default.TurnOnAsync();
        else
            await Flashlight.Default.TurnOffAsync();
    }
    catch (FeatureNotSupportedException ex)
    {
        // Handle not supported on device exception
    }
    catch (PermissionException ex)
    {
        // Handle permission exception
    }
    catch (Exception ex)
    {
        // Unable to turn on/off flashlight
    }
}

Además, se puede invocar el método IsSupportedAsync para comprobar si hay una linterna disponible en el dispositivo, antes de llamar al método TurnOnAsync().

Diferencias entre plataformas

En esta sección se describen las diferencias específicas de la plataforma con la linterna.

La clase Flashlight se ha optimizado en función del sistema operativo del dispositivo.

Nivel de API 23 y superior

En los niveles de API más recientes, se usa el Modo Linterna para activar o desactivar la unidad de flash del dispositivo.

Nivel de API 22 e inferior

Se crea una textura de la superficie de cámara para activar o desactivar el FlashMode de la unidad de la cámara.