Xamarin.Essentials:手电筒

Flashlight 类,此类使你能够打开或关闭设备的照相机闪光灯,将其转换为一个手电筒。

入门

若要开始使用此 API,请阅读 Xamarin.Essentials 的入门指南,确保在项目中正确安装和设置库。

若要访问 Flashlight 功能,需要以下特定于平台的设置。

需要具有 Flashlight 和 Camera 权限,并且必须在 Android 项目中进行配置。 可以通过以下方法添加权限:

打开 Properties 文件夹下的 AssemblyInfo.cs 文件并添加 :

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

或更新 Android 清单:

打开 Properties 文件夹下的 AndroidManifest.xml 文件,并在“manifest”节点内添加以下代码 。

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

或右键单击 Android 项目并打开项目的属性。 在“Android 清单”下找到“所需权限:”区域,然后选中“FLASHLIGHT”和“CAMERA”权限 。 这样会自动更新 AndroidManifest.xml 文件。

通过添加这些权限,Google Play 将自动筛选出设备,而无需任何特定硬件。 可以通过将以下代码添加到 Android 项目中的 AssemblyInfo.cs 文件中来绕过此操作:

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

此 API 在 Android 上使用运行时权限。 请确保 Xamarin.Essentials 已完全初始化,并且在你的应用中设置了权限处理。

在 Android 项目的 MainLauncher 或任何已启动的 Activity 中,必须在 OnCreate 方法中初始化 Xamarin.Essentials:

C#
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 类:

C#
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 的引用:

C#
using Xamarin.Essentials;

可以通过 TurnOnAsyncTurnOffAsync 方法来打开或关闭手电筒:

C#
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 模式将用于打开或关闭设备的闪光灯。

API 级别 22 及更高版本

创建一个相机表面纹理以打开或关闭相机单元的 FlashMode

API

第 9 频道YouTube 上查找更多 Xamarin 视频。