Share via


Xamarin.Essentials:Flashlight

Flashlight クラスを使用すると、デバイスのカメラのフラッシュを懐中電灯にする機能をオンまたはオフにできます。

作業開始

この API の使用を始めるには、Xamarin.Essentials の概要ガイドを読み、ライブラリが正しくインストールされてプロジェクトに設定されていることを確認してください。

Flashlight の機能にアクセスするには、次のプラットフォーム固有の設定が必要です。

Flashlight および Camera アクセス許可が必要であり、Android プロジェクトで構成する必要があります。 これは次の方法で追加できます。

[プロパティ] フォルダーにある AssemblyInfo.cs ファイルを開き、以下を追加します。

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

または、Android マニフェストを追加します。

[プロパティ] フォルダーにある 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 上で実行時のアクセス許可を処理するには、OnRequestPermissionsResult で、すべての Xamarin.Essentials を受け取る必要があります。 すべての 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 をオン/オフするために、カメラ サーフェス テクスチャが作成されます。

API

他の Xamarin ビデオは、Channel 9 および YouTube でご覧いただけます。