CameraManager.OpenCamera Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Surcharges
| Nom | Description |
|---|---|
| OpenCamera(String, IExecutor, CameraDevice+StateCallback) |
Ouvrez une connexion à une caméra avec l’ID donné. |
| OpenCamera(String, CameraDevice+StateCallback, Handler) |
Ouvrez une connexion à une caméra avec l’ID donné. |
OpenCamera(String, IExecutor, CameraDevice+StateCallback)
Ouvrez une connexion à une caméra avec l’ID donné.
[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
Paramètres
- cameraId
- String
Identificateur unique de l’appareil photo à ouvrir. Cette valeur ne peut pas être null.
- executor
- IExecutor
Exécuteur qui sera utilisé lors de l’appel du rappel. Cette valeur ne peut pas être null. Les événements de rappel et d’écouteur sont distribués via cet exécuteur, ce qui permet de contrôler facilement le thread utilisé. Pour distribuer des événements via le thread principal de votre application, vous pouvez utiliser Context.getMainExecutor(). Sinon, fournissez un exécuteur qui répartit vers un thread approprié.
- callback
- CameraDevice.StateCallback
Rappel appelé une fois l’appareil photo ouvert. Cette valeur ne peut pas être null.
- Attributs
Remarques
Ouvrez une connexion à une caméra avec l’ID donné.
Le comportement de cette méthode correspond à celui d’openCamera(String,StateCallback,Handler), sauf qu’il utilise Executor comme argument au lieu de Gestionnaire.
Notez que les rappels sont généralement censés être distribués par l’exécuteur dans un seul thread. Si l’exécuteur utilise deux threads ou plus pour distribuer des rappels, les clients doivent garantir une synchronisation correcte et doivent également être en mesure de gérer un ordre potentiellement différent des rappels entrants. Nécessite Manifest.permission.CAMERA
Référence Android pour android.hardware.camera2.CameraManager.openCamera.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.
S’applique à
OpenCamera(String, CameraDevice+StateCallback, Handler)
Ouvrez une connexion à une caméra avec l’ID donné.
[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
Paramètres
- cameraId
- String
Identificateur unique de l’appareil photo à ouvrir
- callback
- CameraDevice.StateCallback
Rappel appelé une fois l’appareil photo ouvert
- handler
- Handler
Gestionnaire sur lequel le rappel doit être appelé ou null pour utiliser le thread Looperactuel .
- Attributs
Exceptions
si la caméra est désactivée par la stratégie d’appareil, a été déconnectée ou est utilisée par un client d’API de caméra de priorité supérieure.
si cameraId ou le rappel a été null, ou si cameraId ne correspond à aucun appareil photo actuellement ou précédemment disponible.
si l’application n’a pas l’autorisation d’accéder à la caméra
Remarques
Ouvrez une connexion à une caméra avec l’ID donné.
Utilisez getCameraIdList() pour obtenir la liste des appareils photo disponibles. Notez que même si un ID est répertorié, l’ouverture peut échouer si l’appareil est déconnecté entre les appels à getCameraIdList() et openCamera(String, StateCallback, Handler) ou si un client d’API de caméra de priorité supérieure commence à utiliser l’appareil photo.
À partir du niveau 23 de l’API, les appareils pour lesquels le rappel AvailabilityCallback.onCameraUnavailable(String) a été appelé en raison de l’utilisation de l’appareil par un client d’API de caméra en arrière-plan plus faible, peut toujours être ouvert en appelant cette méthode lorsque le client d’API de caméra appelant a une priorité plus élevée que le client d’API de caméra actuel à l’aide de cet appareil. En règle générale, si l’activité de premier plan est en cours d’exécution dans votre processus d’application, votre processus reçoit la priorité la plus élevée lors de l’accès à la caméra, et cette méthode réussit même si l’appareil photo est en cours d’utilisation par un autre client d’API de caméra. Toute application de priorité inférieure qui perd le contrôle de la caméra de cette façon recevra un rappel CameraDevice.StateCallback.onDisconnected(CameraDevice). L’ouverture du même ID d’appareil photo deux fois dans la même application entraîne de la même façon que le rappel CameraDevice.StateCallback.onDisconnected(CameraDevice) soit déclenché pour cameraDevice à partir du premier appel ouvert et toutes les tâches en cours supprimées.
Une fois l’appareil photo ouvert, CameraDevice.StateCallback.onOpened sera appelé avec la nouvelle caméra CameraDevice ouverte. L’appareil photo peut ensuite être configuré pour l’opération en appelant CameraDevice.createCaptureSession et CameraDevice.createCaptureRequest
Avant le niveau 30 de l’API, lorsque l’application tente d’ouvrir plusieurs ID CameraDevice de différents ID et que l’appareil ne prend pas en charge l’ouverture de cette combinaison, le rappel openCamera(String, StateCallback, Handler) échoue et lève une caméraAccessException ou un ou plusieurs des appareils CameraDevice déjà ouverts seront déconnectés et recevront le rappel CameraDevice.StateCallback.onDisconnected(CameraDevice). Le comportement qui se produit dépend de l’implémentation de l’appareil et peut varier sur différents appareils. À compter du niveau 30 de l’API, si l’appareil ne prend pas en charge la combinaison des caméras ouvertes, il est garanti que l’appel openCamera(String, StateCallback, Handler) échoue et aucun appareil cameraDevice existant ne sera déconnecté.
Étant donné que l’appareil photo est ouvert de manière asynchrone, toutes les opérations asynchrones effectuées sur l’instance CameraDevice retournée sont mises en file d’attente jusqu’à ce que le démarrage de l’appareil soit terminé et que la méthode onOpened du rappel soit appelée. Les opérations en attente sont ensuite traitées dans l’ordre.
Si l’appareil photo devient déconnecté lors de l’initialisation après le retour de cet appel de fonction, CameraDevice.StateCallback.onDisconnected avec un CameraDevice dans l’état déconnecté (et CameraDevice.StateCallback.onOpened est ignoré).
Si l’ouverture de l’appareil photo échoue, la méthode onError du rappel de l’appareil est appelée, et les appels suivants sur l’appareil photo lèvent une caméra CameraAccessException. Nécessite Manifest.permission.CAMERA
Référence Android pour android.hardware.camera2.CameraManager.openCamera.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.
Voir aussi
- GetCameraIdList()
- <xref:Android.App.Admin.DevicePolicyManager.SetCameraDisabled(Android.Content.ComponentName%2c+System.Boolean)>