Поделиться через


Xamarin.Essentials:Сигнальный огонь

Класс Flashlight позволяет включить или выключить вспышку камеры устройства и превратить ее в фонарик.

Начало работы

Чтобы начать использовать этот API, ознакомьтесь с руководством по началу работы с Xamarin.Essentials, чтобы правильно настроить и установить библиотеку в проектах.

Чтобы получить доступ к функциям класса Flashlight, нужно создать описанную ниже конфигурацию для конкретной платформы.

Требуются разрешения Flashlight и Camera, которые следует настроить в проекте Android. Для этого можно применить любой из следующих методов:

Откройте файл AssemblyInfo.cs в папке Свойства и добавьте в него:

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

ИЛИ обновите манифест Android:

Откройте файл AndroidManifest.xml в папке Properties и добавьте приведенный ниже код в узел manifest.

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

ИЛИ щелкните правой кнопкой мыши проект Android и откройте свойства проекта. В разделе Манифест Android найдите область Требуемые разрешения: и установите флажок для разрешений FLASHLIGHT и CAMERA. Это действие автоматически обновляет файл AndroidManifest.xml.

После добавления этих разрешений Google Play будет автоматически отфильтровать устройства без конкретного оборудования. Можно обойти это, добавив в файл AssemblyInfo.cs в проекте Android следующий код:

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

Этот API использует разрешения среды выполнения для Android. Убедитесь, что набор Xamarin.Essentials полностью инициализирован и в вашем приложении настроена обработка разрешений.

В MainLauncher проекта Android или в любом запущенном действии Activity необходимо инициализировать Xamarin.Essentials в методе OnCreate:

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
    //...
}    

Для обработки на устройстве Android разрешений среды выполнения Xamarin.Essentials нужно получить любой OnRequestPermissionsResult. Добавьте следующий код во все классы 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);
}

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

Добавьте ссылку на Xamarin.Essentials в своем классе:

using Xamarin.Essentials;

Фонарик можно включить и выключить с помощью методов TurnOnAsync и 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
}

Особенности реализации для платформ

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

API уровня 23 и более поздних версий

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

API уровня 22 и более ранних версий

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

API

Другие видео о Xamarin см. на Channel 9 и YouTube.