分享方式:


Flashlight

Browse sample. 流覽範例

本文說明如何使用 .NET 多平臺應用程式 UI (.NET MAUI) IFlashlight 介面。 透過這個介面,您可以開啟和關閉裝置的相機閃爍,以模擬手電筒筒筒筒。

介面的預設實作 IFlashlight 可透過 Flashlight.Default 屬性取得。 IFlashlight介面和Flashlight類別都包含在 命名空間中Microsoft.Maui.Devices

開始使用

若要存取手電筒筒功能,需要下列平臺特定設定。

在您的項目設定有兩個權限: FlashlightCamera。 您可以透過下列方式來設定這些權限:

  • 新增元件型權限:

    開啟 Platform/Android/MainApplication.cs 檔案,並在 指示詞之後using新增下列元件屬性:

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

    - 或 -

  • 更新 Android 指令清單:

    開啟 [平臺/Android/AndroidManifest.xml] 檔案,並在manifest節點中新增下列內容:

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

    - 或 -

  • 更新指令清單編輯器中的 Android 指令清單:

    在 Visual Studio 中按兩下 [平臺/Android/AndroidManifest.xml ] 檔案,以開啟 Android 指令清單編輯器。 然後,在 [必要許可權] 底下,檢查 FLASHLIGHTCAMERA 許可權。 這將會自動更新 AndroidManifest.xml 檔案。

如果您設定這些許可權, Google Play 會自動篩選掉沒有特定硬體的裝置 。 您可以在 指示詞之後using,將下列元件屬性新增至 Platform/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
    }
}

此外, IsSupportedAsync 您可以叫用 方法來檢查裝置上是否有手電筒筒筒筒,再呼叫 TurnOnAsync() 方法。

平台差異

本節說明手電筒筒的平臺特定差異。

類別 Flashlight 已根據裝置的作業系統進行優化。

API 層級 23 和更新版本

在較新的 API 層級上,手電筒模式將用於開啟或關閉裝置的閃光燈單位。

API 層級 22 和更低

會建立相機表面紋理,以開啟或關閉相機單位的 FlashMode