手电筒
本文介绍如何使用 .NET Multi-platform App UI (.NET MAUI) IFlashlight 接口。 使用此接口,可以打开和关闭设备的相机闪光灯,以模拟手电筒。
IFlashlight
接口的默认实现通过 Flashlight.Default 属性提供。 IFlashlight
接口和 Flashlight
类都包含在 Microsoft.Maui.Devices
命名空间中。
开始使用
要访问手电筒功能,需执行以下特定于平台的设置。
项目中有两种权限需要配置:Flashlight
和 Camera
。 可通过以下方式设置这些权限:
添加基于程序集的权限:
打开 Platforms/Android/MainApplication.cs 文件,并在
using
指令后面添加以下程序集属性:[assembly: UsesPermission(Android.Manifest.Permission.Flashlight)] [assembly: UsesPermission(Android.Manifest.Permission.Camera)]
- 或 -
更新 Android 清单:
打开 Platforms/Android/AndroidManifest.xml 文件并在
manifest
节点中添加以下内容:<uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-permission android:name="android.permission.CAMERA" />
- 或 -
在清单编辑器中更新 Android 清单:
在 Visual Studio 中,双击 Platforms/Android/AndroidManifest.xml 文件以打开 Android 清单编辑器。 然后,在“所需权限”区域,选中“FLASHLIGHT”和“CAMERA”权限。 这样会自动更新 AndroidManifest.xml 文件。
如果设置了这些权限,Google Play 将自动筛选出设备,而无需特定硬件。 可以通过在 using
指令后面将以下程序集特性添加到 Platforms/Android/MainApplication.cs 文件来绕过此筛选:
[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
}
}
此外,在调用 TurnOnAsync() 方法之前,还可以调用 IsSupportedAsync 方法来检查设备上是否有手电筒。
平台差异
本部分介绍手电筒功能的特定于平台的差异。
Flashlight
类已根据设备的操作系统进行了优化。
API 级别 23 及更高版本
在更新的 API 级别上,Torch 模式将用于打开或关闭设备的闪光单元。
API 级别 22 及更低版本
创建一个相机表面纹理以打开或关闭相机单元的 FlashMode
。