CameraManager.OpenCamera Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Sobrecargas
| Nombre | Description |
|---|---|
| OpenCamera(String, IExecutor, CameraDevice+StateCallback) |
Abra una conexión a una cámara con el identificador especificado. |
| OpenCamera(String, CameraDevice+StateCallback, Handler) |
Abra una conexión a una cámara con el identificador especificado. |
OpenCamera(String, IExecutor, CameraDevice+StateCallback)
Abra una conexión a una cámara con el identificador especificado.
[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
Parámetros
- cameraId
- String
Identificador único del dispositivo de cámara que se va a abrir. Este valor no puede ser nulo.
- executor
- IExecutor
Ejecutor que se usará al invocar la devolución de llamada. Este valor no puede ser nulo. Los eventos de devolución de llamada y agente de escucha se envían a través de este Ejecutor, lo que proporciona una manera fácil de controlar qué subproceso se usa. Para enviar eventos a través del subproceso principal de la aplicación, puede usar Context.getMainExecutor(). De lo contrario, proporcione un ejecutor que se envíe a un subproceso adecuado.
- callback
- CameraDevice.StateCallback
Devolución de llamada que se invoca una vez que se abre la cámara. Este valor no puede ser nulo.
- Atributos
Comentarios
Abra una conexión a una cámara con el identificador especificado.
El comportamiento de este método coincide con el de openCamera(String,StateCallback,Handler), excepto que usa Executor como argumento en lugar de Handler.
Tenga en cuenta que se espera que el ejecutor envíe devoluciones de llamada normalmente en un único subproceso. Si el ejecutor usa dos o más subprocesos para enviar devoluciones de llamada, los clientes deben asegurarse de la sincronización correcta y también deben poder controlar el orden potencialmente diferente de las devoluciones de llamada entrantes. Requiere Manifest.permission.CAMERA
Referencia de Android para android.hardware.camera2.CameraManager.openCamera.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.
Se aplica a
OpenCamera(String, CameraDevice+StateCallback, Handler)
Abra una conexión a una cámara con el identificador especificado.
[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
Parámetros
- cameraId
- String
Identificador único del dispositivo de cámara que se va a abrir
- callback
- CameraDevice.StateCallback
Devolución de llamada que se invoca una vez que se abre la cámara.
- handler
- Handler
Controlador en el que se debe invocar la devolución de llamada o null para usar el subproceso Looperactual.
- Atributos
Excepciones
si la directiva de dispositivo deshabilita la cámara, se ha desconectado o está siendo utilizada por un cliente de API de cámara de mayor prioridad.
si cameraId o la devolución de llamada era null, o cameraId no coincide con ningún dispositivo de cámara disponible actualmente o anteriormente.
si la aplicación no tiene permiso para acceder a la cámara
Comentarios
Abra una conexión a una cámara con el identificador especificado.
Use getCameraIdList() para obtener la lista de dispositivos de cámara disponibles. Tenga en cuenta que, incluso si aparece un identificador, es posible que se produzca un error en la apertura si el dispositivo está desconectado entre las llamadas a getCameraIdList() y openCamera(String, StateCallback, Handler) o si un cliente de API de cámara de mayor prioridad comienza a usar el dispositivo de cámara.
A partir del nivel de API 23, se ha llamado a los dispositivos para los que se ha llamado a la devolución de llamada AvailabilityCallback.onCameraUnavailable(String) debido a que el dispositivo está en uso por un cliente de API de cámara de menor prioridad, la cámara en segundo plano todavía se puede abrir llamando a este método cuando el cliente de la API de cámara de llamada tiene una prioridad más alta que el cliente de API de cámara actual que usa este dispositivo. En general, si la actividad en primer plano se ejecuta dentro del proceso de aplicación, el proceso tendrá la prioridad más alta al acceder a la cámara y este método se realizará correctamente incluso si otro cliente de API de cámara usa el dispositivo de cámara. Cualquier aplicación de prioridad inferior que pierda el control de la cámara de esta manera recibirá una devolución de llamada CameraDevice.StateCallback.onDisconnected(CameraDevice). Abrir el mismo identificador de cámara dos veces en la misma aplicación hará que la devolución de llamada CameraDevice.StateCallback.onDisconnected(CameraDevice) se desencadene para cameraDevice desde la primera llamada abierta y se quiten todas las tareas en curso.
Una vez que la cámara se abra correctamente, CameraDevice.StateCallback.onOpened se invocará con la cámara recién abierta CameraDevice. A continuación, el dispositivo de cámara se puede configurar para la operación mediante una llamada a CameraDevice.createCaptureSession y CameraDevice.createCaptureRequest
Antes del nivel de API 30, cuando la aplicación intenta abrir varios dispositivos CameraDevice de diferentes identificadores y el dispositivo no admite la apertura de dicha combinación, se producirá un error en la operación openCamera(String, StateCallback, Handler) y se producirá un error en CameraAccessException o uno o varios de los ya abiertos CameraDevice y recibirá la devolución de llamada CameraDevice.StateCallback.onDisconnected(CameraDevice). El comportamiento que ocurrirá depende de la implementación del dispositivo y puede variar en distintos dispositivos. A partir del nivel de API 30, si el dispositivo no admite la combinación de cámaras que se abren, se garantiza que se producirá un error en la llamada openCamera(String, StateCallback, Handler) y no se desconectará ninguna de las cámaras CameraDevice existentes.
Dado que el dispositivo de cámara se abrirá de forma asincrónica, las operaciones asincrónicas realizadas en la instancia de CameraDevice devuelta se ponerán en cola hasta que se haya completado el inicio del dispositivo y se llame al método onOpened de la devolución de llamada. Después, las operaciones pendientes se procesan en orden.
Si la cámara se desconecta durante la inicialización después de que se devuelva esta llamada de función, CameraDevice.StateCallback.onDisconnected con cameraDevice en el estado desconectado (y se omitirá CameraDevice.StateCallback.onOpened).
Si se produce un error al abrir el dispositivo de cámara, se llamará al método onError de la devolución de llamada del dispositivo y las llamadas posteriores en el dispositivo de cámara producirán una excepción CameraAccessException. Requiere Manifest.permission.CAMERA
Referencia de Android para android.hardware.camera2.CameraManager.openCamera.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.
Consulte también
- GetCameraIdList()
- <xref:Android.App.Admin.DevicePolicyManager.SetCameraDisabled(Android.Content.ComponentName%2c+System.Boolean)>