Flashlight

Browse sample. Обзор примера

В этой статье описывается, как использовать интерфейс многоплатформенного приложения .NET (.NET MAUI). IFlashlight С помощью этого интерфейса можно переключать вспышку и выключение камеры устройства, чтобы эмулировать фонарик.

Реализация интерфейса по умолчанию IFlashlight доступна через Flashlight.Default свойство. Интерфейс IFlashlight и Flashlight класс содержатся в Microsoft.Maui.Devices пространстве имен.

Начать

Для доступа к функциям фонарика требуется следующая настройка для конкретной платформы.

В проекте Flashlight есть два разрешения: и Camera. Эти разрешения можно задать следующим образом:

  • Добавьте разрешение на основе сборки:

    Откройте файл Platform/Android/MainApplication.cs и добавьте следующие атрибуты сборки после using директив:

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

    - или -

  • Обновите манифест Android:

    Откройте файл Platform/Android/AndroidManifest.xml и добавьте в узел следующееmanifest:

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

    - или -

  • Обновите манифест Android в редакторе манифеста:

    В Visual Studio дважды щелкните файл Platform/Android/AndroidManifest.xml , чтобы открыть редактор манифеста Android. Затем в разделе "Необходимые разрешения" проверка разрешения FLASHLIGHT и CAMERA. Это действие автоматически обновляет файл AndroidManifest.xml.

Если эти разрешения заданы, Google Play автоматически отфильтрует устройства без определенного оборудования. Вы можете обойти эту фильтрацию, добавив следующие атрибуты сборки в файл Platform/Android/MainApplication.cs после using директив:

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

Использование фонарика

Фонарик можно включить и отключить с помощью TurnOnAsync() методов и TurnOffAsync() методов. Следующий пример кода связывает состояние фонарика включено или выключение с элементом 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
    }
}

Кроме того, IsSupportedAsync метод можно вызвать для проверка, если фонарик доступен на устройстве, перед вызовом TurnOnAsync() метода.

Различия между платформами

В этом разделе описываются различия платформы с фонариком.

Класс Flashlight оптимизирован на основе операционной системы устройства.

Уровень API 23 и выше

В более поздних уровнях API режим Torch Mode будет использоваться для включения и выключения вспышки устройства.

Уровень API 22 и более низкий

Текстура поверхности камеры предусмотрена для включения или выключения режима FlashMode камеры.