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
камеры.