Language

CameraManager.OpenCamera メソッド

定義

オーバーロード

Name 説明
OpenCamera(String, IExecutor, CameraDevice+StateCallback)

指定された ID を持つカメラへの接続を開きます。

OpenCamera(String, CameraDevice+StateCallback, Handler)

指定された ID を持つカメラへの接続を開きます。

OpenCamera(String, IExecutor, CameraDevice+StateCallback)

指定された ID を持つカメラへの接続を開きます。

[Android.Runtime.Register("openCamera", "(Ljava/lang/String;Ljava/util/concurrent/Executor;Landroid/hardware/camera2/CameraDevice$StateCallback;)V", "", ApiSince=28)]
[Android.Runtime.RequiresPermission("android.permission.CAMERA")]
public void OpenCamera(string cameraId, Java.Util.Concurrent.IExecutor executor, Android.Hardware.Camera2.CameraDevice.StateCallback callback);
[<Android.Runtime.Register("openCamera", "(Ljava/lang/String;Ljava/util/concurrent/Executor;Landroid/hardware/camera2/CameraDevice$StateCallback;)V", "", ApiSince=28)>]
[<Android.Runtime.RequiresPermission("android.permission.CAMERA")>]
member this.OpenCamera : string * Java.Util.Concurrent.IExecutor * Android.Hardware.Camera2.CameraDevice.StateCallback -> unit

パラメーター

cameraId
String

開くカメラ デバイスの一意識別子。 この値は null にすることはできません。

executor
IExecutor

コールバックを呼び出すときに使用される Executor。 この値は null にすることはできません。 コールバック イベントとリスナー イベントは、この Executor を介してディスパッチされるため、使用するスレッドを簡単に制御できます。 アプリケーションのメイン スレッドを介してイベントをディスパッチするには、Context.getMainExecutor() を使用できます。 それ以外の場合は、適切なスレッドにディスパッチする Executor を指定します。

callback
CameraDevice.StateCallback

カメラを開くと呼び出されるコールバック。 この値は null にすることはできません。

属性

注釈

指定された ID を持つカメラへの接続を開きます。

このメソッドの動作は、ハンドラーの代わりに Executor を引数として使用することを除き、openCamera(String,StateCallback,Handler) の動作と一致します。

通常、コールバックは 1 つのスレッドで Executor によってディスパッチされることが想定されることに注意してください。 Executor が 2 つ以上のスレッドを使用してコールバックをディスパッチする場合、クライアントは正しい同期を確保する必要があり、受信コールバックの順序が異なる可能性もあります。 Manifest.permission.CAMERA が必要です

android.hardware.camera2.CameraManager.openCameraの Android リファレンス。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象

OpenCamera(String, CameraDevice+StateCallback, Handler)

指定された ID を持つカメラへの接続を開きます。

[Android.Runtime.Register("openCamera", "(Ljava/lang/String;Landroid/hardware/camera2/CameraDevice$StateCallback;Landroid/os/Handler;)V", "")]
[Android.Runtime.RequiresPermission("android.permission.CAMERA")]
public void OpenCamera(string cameraId, Android.Hardware.Camera2.CameraDevice.StateCallback callback, Android.OS.Handler? handler);
[<Android.Runtime.Register("openCamera", "(Ljava/lang/String;Landroid/hardware/camera2/CameraDevice$StateCallback;Landroid/os/Handler;)V", "")>]
[<Android.Runtime.RequiresPermission("android.permission.CAMERA")>]
member this.OpenCamera : string * Android.Hardware.Camera2.CameraDevice.StateCallback * Android.OS.Handler -> unit

パラメーター

cameraId
String

開くカメラ デバイスの一意識別子

callback
CameraDevice.StateCallback

カメラを開くと呼び出されるコールバック

handler
Handler

コールバックを呼び出すハンドラー。現在のスレッドのnullを使用するLooper。

属性

例外

カメラがデバイス ポリシーによって無効になっている場合、切断されている場合、または優先度の高いカメラ API クライアントによって使用されている場合。

cameraId またはコールバックが null の場合、または cameraId が現在または以前に使用可能なカメラ デバイスと一致しない場合。

アプリケーションにカメラへのアクセス許可がない場合

注釈

指定された ID を持つカメラへの接続を開きます。

getCameraIdList() を使用して、使用可能なカメラ デバイスの一覧を取得します。 ID がリストされている場合でも、getCameraIdList() と openCamera(String, StateCallback, Handler) の呼び出しの間でデバイスが切断された場合、またはカメラ デバイスの使用を優先順位の高いカメラ API クライアントが開始した場合、open は失敗する可能性があることに注意してください。

API レベル 23 の時点で、優先順位の低いバックグラウンド カメラ API クライアントで使用されているデバイスが原因で AvailabilityCallback.onCameraUnavailable(String) コールバックが呼び出されたデバイスは、呼び出し元のカメラ API クライアントがこのデバイスを使用している現在のカメラ API クライアントよりも優先度が高い場合でも、このメソッドを呼び出すことによって開くことができます。 一般に、最上位のフォアグラウンド アクティビティがアプリケーション プロセス内で実行されている場合、カメラにアクセスするときにプロセスの優先度が最も高くなります。このメソッドは、カメラ デバイスが別のカメラ API クライアントで使用されている場合でも成功します。 この方法でカメラの制御を失う優先順位の低いアプリケーションは、CameraDevice.StateCallback.onDisconnected(CameraDevice) コールバックを受け取ります。 同じアプリケーションで同じカメラ ID を 2 回開くと、最初の開いている呼び出しから CameraDevice に対して CameraDevice.StateCallback.onDisconnected(CameraDevice) コールバックが発生し、進行中のすべてのタスクが削除されます。

カメラが正常に開かれると、新しく開いた CameraDevice で CameraDevice.StateCallback.onOpened が呼び出されます。 その後、CameraDevice.createCaptureSession と CameraDevice.createCaptureRequest を呼び出して、カメラ デバイスを操作用に設定できます。

API レベル 30 より前のバージョンでは、アプリケーションが異なる ID の複数の CameraDevice を開こうとし、デバイスがこのような組み合わせを開けなかった場合、openCamera(String、StateCallback、Handler) は失敗して CameraAccessException をスローするか、既に開いている 1 つ以上の CameraDevice が切断され、CameraDevice.StateCallback.onDisconnected(CameraDevice) コールバックを受け取ります。 どの動作が発生するかは、デバイスの実装によって異なり、デバイスによって異なる場合があります。 API レベル 30 以降では、デバイスが開いているカメラの組み合わせをサポートしていない場合、openCamera(String、StateCallback、Handler) 呼び出しが失敗し、既存の CameraDevice が切断されないことが保証されます。

カメラ デバイスは非同期的に開かれるため、返された CameraDevice インスタンスで行われた非同期操作は、デバイスの起動が完了し、コールバックの onOpened メソッドが呼び出されるまでキューに入れられます。 その後、保留中の操作が順番に処理されます。

この関数呼び出しが戻った後に初期化中にカメラが切断された場合、CameraDevice.StateCallback.onDisconnected と CameraDevice が切断状態になります (CameraDevice.StateCallback.onOpened はスキップされます)。

カメラ デバイスを開かない場合、デバイス コールバックの onError メソッドが呼び出され、カメラ デバイスの後続の呼び出しで CameraAccessException がスローされます。 Manifest.permission.CAMERA が必要です

android.hardware.camera2.CameraManager.openCameraの Android リファレンス。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

関連項目

  • GetCameraIdList()
  • <xref:Android.App.Admin.DevicePolicyManager.SetCameraDisabled(Android.Content.ComponentName%2c+System.Boolean)>

適用対象