懐中電灯
この記事では、.NET Multi-platform App UI (.NET MAUI) IFlashlight インターフェイスを使用する方法について説明します。 このインターフェイスを使用すると、デバイスのカメラ フラッシュのオンとオフを切り替えて、懐中電灯をエミュレートできます。
IFlashlight
インターフェイスのデフォルトの実装は、Flashlight.Default プロパティを通じて使用できます。 IFlashlight
インターフェイスと Flashlight
クラスはどちらも Microsoft.Maui.Devices
名前空間に含まれています。
作業の開始
懐中電灯の機能にアクセスするには、次のプラットフォーム固有の設定が必要です。
プロジェクトで設定できるアクセス許可は、Flashlight
と Camera
の 2 つです。 これらのアクセス許可は、次の方法で確認できます。
アセンブリベースのアクセス許可を追加します。
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 で自動的にフィルタリングされます。 このフィルター処理を回避するには、Platforms/Android/MainApplication.cs ファイルの using
ディレクティブの後に次のアセンブリ属性を追加します。
[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
をオン/オフするために、カメラ サーフェス テクスチャが作成されます。
.NET MAUI