Xamarin.Essentials:手電筒筒筒
手電筒類別可以開啟或關閉裝置相機閃光燈,將其變為手電筒。
開始使用
若要開始使用此 API,請閱讀 入門指南Xamarin.Essentials,以確保連結庫已正確安裝並設定在您的專案中。
若要存取手電筒功能,需要下列平台特定設定。
需要手電筒和相機的權限,並且必須在 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 資訊清單] 下,尋找 [必要權限] 區域並選取 [手電筒] 和 [相機] 權限。 這將會自動更新 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
啟動時 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);
}
使用手電筒
在類別中新增 的 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
}
平台實作特性
手電筒類別已根據裝置的作業系統進行最佳化。
API 層級 23 與更高版本
在較新的 API 層級上,手電筒模式將用於開啟或關閉裝置的閃光燈單位。
API 層級22 與更低版本
會建立相機表面紋理,以開啟或關閉相機單位的 FlashMode
。