Xamarin.Essentials:手电筒
Flashlight 类,此类使你能够打开或关闭设备的照相机闪光灯,将其转换为一个手电筒。
入门
若要开始使用此 API,请阅读 Xamarin.Essentials 的入门指南,确保在项目中正确安装和设置库。
若要访问 Flashlight 功能,需要以下特定于平台的设置。
需要具有 Flashlight 和 Camera 权限,并且必须在 Android 项目中进行配置。 可以通过以下方法添加权限:
打开 Properties 文件夹下的 AssemblyInfo.cs 文件并添加 :
[assembly: UsesPermission(Android.Manifest.Permission.Flashlight)]
[assembly: UsesPermission(Android.Manifest.Permission.Camera)]
或更新 Android 清单:
打开 Properties 文件夹下的 AndroidManifest.xml 文件,并在“manifest”节点内添加以下代码 。
<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 文件中来绕过此操作:
[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:
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 模式将用于打开或关闭设备的闪光灯。
API 级别 22 及更高版本
创建一个相机表面纹理以打开或关闭相机单元的 FlashMode
。