À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release au lieu de aosp-main pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
  
         
       
     
  
  
  
    
  
  
  
    
    
      
    
    
      
      Restez organisé à l'aide des collections
    
    
      
      Enregistrez et classez les contenus selon vos préférences.
    
  
  
    
  
  
  
  
    
  
  
    
    
    
  
  Documentation de référence sur la struct camera_device_ops
 
  
   #include <
   
    camera.h
   
   >
  
 
 
  
   | 
    
    | 
  
  
   | 
    int(* 
    | 
   
    
     set_preview_window
    
    )(struct
    
     camera_device
    
    *, struct
    
     preview_stream_ops
    
    *window)
    | 
  
  
   | 
     
    | 
  
  
   | 
    void(* 
    | 
   
    
     set_callbacks
    
    )(struct
    
     CameraDevice
    
    *,
    
     CameraNotifyCallback
    
    notify_cb,
    
     CameraDataCallback
    
    data_cb,
    
     CameraDataTimestampCallback
    
    data_cb_timestamp,
    
     CameraRequestMemory
    
    get_memory, void *user)
    | 
  
  
   | 
     
    | 
  
  
   | 
    void(* 
    | 
   
    
     enable_msg_type
    
    )(struct
    
     Camera_device
    
    *, int32_t msg_type)
    | 
  
  
   | 
     
    | 
  
  
   | 
    void(* 
    | 
   
    
     disable_msg_type
    
    )(struct
    
     Camera_device
    
    *, int32_t msg_type)
    | 
  
  
   | 
     
    | 
  
  
   | 
    int(* 
    | 
   
    
     msg_type_enabled
    
    )(struct
    
     Camera_device
    
    *, int32_t msg_type)
    | 
  
  
   | 
     
    | 
  
  
   | 
    int(* 
    | 
   
    
     start_preview
    
    )(struct
    
     Camera_device
    
    *)
    | 
  
  
   | 
     
    | 
  
  
   | 
    void(* 
    | 
   
    
     stop_preview
    
    )(struct
    
     camera_device
    
    *)
    | 
  
  
   | 
     
    | 
  
  
   | 
    int(* 
    | 
   
    
     preview_enabled
    (struct 
     camera_device
    *)
    | 
  
  
   | 
     
    | 
  
  
   | 
    int(* 
    | 
   
    
     store_meta_data_in_buffers
    
    )(struct
    
     Camera_device
    
    *, int enable)
    | 
  
  
   | 
     
    | 
  
  
   | 
    int(* 
    | 
   
    
     start_recording
    
    )(struct
    
     Camera_device
    
    *)
    | 
  
  
   | 
     
    | 
  
  
   | 
    void(* 
    | 
   
    
     stop_recording
    
    )(struct
    
     Camera_device
    
    *)
    | 
  
  
   | 
     
    | 
  
  
   | 
    int(* 
    | 
   
    
     recording_enabled
    
    )(struct
    
     Camera_device
    
    *)
    | 
  
  
   | 
     
    | 
  
  
   | 
    void(* 
    | 
   
    
     release_recording_frame
    
    )(struct
    
     Camera_device
    
    *, const void *opaque)
    | 
  
  
   | 
     
    | 
  
  
   | 
    int(* 
    | 
   
    
     auto_focus
    
    )(struct
    
     Camera_device
    
    *)
    | 
  
  
   | 
     
    | 
  
  
   | 
    int(* 
    | 
   
    
     cancel_auto_focus
    
    )(struct
    
     Camera_device
    
    *)
    | 
  
  
   | 
     
    | 
  
  
   | 
    int(* 
    | 
   
    
     take_picture
    
    )(struct
    
     Camera_device
    
    *)
    | 
  
  
   | 
     
    | 
  
  
   | 
    int(* 
    | 
   
    
     cancel_picture
    
    )(struct
    
     Camera_device
    
    *)
    | 
  
  
   | 
     
    | 
  
  
   | 
    int(* 
    | 
   
    
     set_parameters
    
    )(struct
    
     Camera_device
    
    *, const char *parms)
    | 
  
  
   | 
     
    | 
  
  
   | 
    char *(* 
    | 
   
    
     get_parameters
    
    )(struct
    
     Camera_device
    
    *)
    | 
  
  
   | 
     
    | 
  
  
   | 
    void(* 
    | 
   
    
     put_parameters
    (struct 
     camera_device
    *, char *)
    | 
  
  
   | 
     
    | 
  
  
   | 
    int(* 
    | 
   
    
     send_command
    (struct 
     camera_device
    *, int32_t cmd, int32_t arg1, int32_t arg2)
    | 
  
  
   | 
     
    | 
  
  
   | 
    void(* 
    | 
   
    
     release
    
    )(struct
    
     Camera_device
    
    *)
    | 
  
  
   | 
     
    | 
  
  
   | 
    int(* 
    | 
   
    
     dump
    
    )(struct
    
     Camera_device
    
    *, int fd)
    | 
  
  
   | 
     
    | 
  
 
 
 
 
 
  
   Définition à la ligne 
    99
    du fichier 
    camera.h
   .
  
  
 
 
 
 
  
  
   
    Démarrez la mise au point automatique. La routine de rappel de notification est appelée avec CAMERA_MSG_FOCUS une fois la mise au point terminée. autoFocus() sera appelé à nouveau si une autre mise au point automatique est nécessaire.
   
   
    Définition à la ligne 
     227
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Annule la fonction de mise au point automatique. Si le mode autofocus est toujours en cours, cette fonction l'annule. Que le mode autofocus soit en cours ou non, cette fonction rétablit la position de mise au point par défaut. Si l'appareil photo n'est pas compatible avec le mode autofocus, cette opération n'a aucun effet.
   
   
    Définition à la ligne 
     235
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Annuler une photo lancée avec takePicture. Appeler cette méthode lorsqu'aucune photo n'est prise n'a aucun effet.
   
   
    Définition à la ligne 
     246
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
   
    
     | 
      void(* disable_msg_type)(struct
      
       Camera_device
      
      *, int32_t msg_type)
      | 
    
   
   
  
   
    Désactiver un message ou un ensemble de messages
   
   
    Une fois qu'un appel à disableMsgType(CAMERA_MSG_VIDEO_FRAME) a été reçu, le HAL de la caméra ne doit pas s'appuyer sur son client pour appeler releaseRecordingFrame() afin de libérer les images d'enregistrement vidéo envoyées par le HAL de la caméra avant et après l'appel disableMsgType(CAMERA_MSG_VIDEO_FRAME). Les clients HAL de la caméra ne doivent pas modifier ni accéder à un frame d'enregistrement vidéo après avoir appelé disableMsgType(CAMERA_MSG_VIDEO_FRAME).
   
   
    Définition à la ligne 
     132
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    État de vidage du matériel de la caméra
   
   
    Définition à la ligne 
     282
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
   
    
     | 
      void(* enable_msg_type)(struct
      
       Camera_device
      
      *, int32_t msg_type)
      | 
    
   
   
  
   
    Les trois fonctions suivantes acceptent toutes un msg_type, qui est un masque de bits des messages définis dans include/ui/Camera.h Activez un message ou un ensemble de messages.
   
   
    Définition à la ligne 
     120
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Récupérez les paramètres de l'appareil photo. Le tampon renvoyé par le HAL de la caméra doit lui être renvoyé avec put_parameters, si put_parameters n'est pas NULL.
   
   
    Définition à la ligne 
     258
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
   
    
     | 
      int(* msg_type_enabled)(struct
      
       Camera_device
      
      *, int32_t msg_type)
      | 
    
   
   
  
   
    Interrogez si un message ou un ensemble de messages est activé. Notez que cette opération fonctionne comme une opération AND. Si l'un des messages interrogés est désactivé, la valeur renvoyée sera "false".
   
   
    Définition à la ligne 
     139
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Renvoie la valeur "true" si l'aperçu est activé.
   
   
    Définition à la ligne 
     154
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Le HAL de l'appareil photo utilise sa propre mémoire pour nous transmettre les paramètres lorsque nous appelons get_parameters. Utilisez cette fonction pour renvoyer la mémoire à l'HAL de la caméra, si put_parameters n'est pas NULL. Si put_parameters est NULL, vous devez utiliser free() pour libérer la mémoire.
   
   
    Définition à la ligne 
     265
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Renvoie la valeur "true" si l'enregistrement est activé.
   
   
    Définition à la ligne 
     208
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Libérez les ressources matérielles détenues par cet objet. Notez que cela n'est 
     pas
     effectué dans le destructeur.
   
   
    Définition à la ligne 
     277
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
   
    
     | 
      void(* release_recording_frame)(struct
      
       Camera_device
      
      *, const void *opaque)
      | 
    
   
   
  
   
    Libérez un frame d'enregistrement précédemment renvoyé par CAMERA_MSG_VIDEO_FRAME.
   
   
    Il est de la responsabilité du client HAL de la caméra de libérer les images d'enregistrement vidéo envoyées par le HAL de la caméra avant que le HAL de la caméra ne reçoive un appel pour désactiver le type de message(CAMERA_MSG_VIDEO_FRAME). Une fois qu'il a reçu l'appel de disableMsgType(CAMERA_MSG_VIDEO_FRAME), c'est le HAL de l'appareil photo qui est chargé de gérer le cycle de vie des images d'enregistrement vidéo.
   
   
    Définition à la ligne 
     219
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
   
    
     | 
      int(* send_command)(struct
      
       Camera_device
      
      *, int32_t cmd, int32_t arg1, int32_t arg2)
      | 
    
   
   
  
   
    Envoyer une commande au pilote de l'appareil photo
   
   
    Définition à la ligne 
     270
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Définir les rappels de notification et de données
   
   
    Définition à la ligne 
     105
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Définissez les paramètres de la caméra. Cette valeur renvoie BAD_VALUE si un paramètre est non valide ou non compatible.
   
   
    Définition à la ligne 
     252
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Définir l'ANativeWindow à laquelle les frames d'aperçu sont envoyés
   
   
    Définition à la ligne 
     101
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Lancez le mode Aperçu.
   
   
    Définition à la ligne 
     144
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Activez le mode Enregistrement. Lorsqu'une image d'enregistrement est disponible, un message CAMERA_MSG_VIDEO_FRAME est envoyé avec le frame correspondant. Chaque frame d'enregistrement doit être libéré par un client HAL de caméra via releaseRecordingFrame() avant que le client n'appelle disableMsgType(CAMERA_MSG_VIDEO_FRAME). Une fois que le client a appelé disableMsgType(CAMERA_MSG_VIDEO_FRAME), c'est le HAL de la caméra qui est chargé de gérer le cycle de vie des frames d'enregistrement vidéo. Le client ne doit pas modifier ni accéder à ces frames.
   
   
    Définition à la ligne 
     198
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Arrêter un aperçu précédemment lancé.
   
   
    Définition à la ligne 
     149
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Arrêter un enregistrement précédemment démarré.
   
   
    Définition à la ligne 
     203
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
   
    
     | 
      int(* store_meta_data_in_buffers)(struct
      
       Camera_device
      
      *, int enable)
      | 
    
   
   
  
   
    Demandez au HAL de l'appareil photo de stocker des métadonnées ou des données YUV réelles dans les tampons vidéo envoyés via CAMERA_MSG_VIDEO_FRAME pour une session d'enregistrement. S'il n'est pas appelé, le comportement par défaut du HAL de la caméra consiste à stocker des données YUV réelles dans les tampons vidéo.
   
   
    Pour être efficace, cette méthode doit être appelée avant startRecording().
   
   
    Si des métadonnées sont stockées dans les tampons vidéo, il appartient au destinataire des tampons vidéo d'interpréter le contenu et de trouver les données de frame réelles à l'aide des métadonnées du tampon. La façon de procéder n'entre pas dans le cadre de cette méthode.
   
   
    Il est possible que certains HAL de caméra ne soient pas compatibles avec le stockage de métadonnées dans les tampons vidéo, mais tous les HAL de caméra doivent être compatibles avec le stockage de données YUV réelles dans les tampons vidéo. Si le HAL de l'appareil photo n'est pas compatible avec le stockage des métadonnées dans les tampons vidéo lorsqu'il est demandé, INVALID_OPERATION doit être renvoyé. Il est très utile que le HAL de la caméra transmette directement des métadonnées plutôt que les données de trame réelles à l'encodeur vidéo, car la quantité de données de trame non compressées peut être très importante si la taille de la vidéo est importante.
   
   
    - 
     Paramètres
    
 
    - 
     
      
       | 
        activer
        | 
       
        Si la valeur est "true", le HAL de l'appareil photo est invité à stocker des métadonnées dans les tampons vidéo. Si la valeur est "false", le HAL de l'appareil photo est invité à stocker des données YUV réelles dans les tampons vidéo.
        | 
      
     
     
   
   
    - 
     Renvoie
    
 
    - 
     OK en cas de réussite.
    
 
   
   
    Définition à la ligne 
     186
     du fichier 
     camera.h
    .
   
   
  
 
 
 
  
  
   
    Prenez une photo.
   
   
    Définition à la ligne 
     240
     du fichier 
     camera.h
    .
   
   
  
 
 La documentation de ce struct a été générée à partir du fichier suivant :
 
  - 
   hardware/libhardware/include/hardware/
   
    camera.h
   
  
 
 
 
 
  
  
  
 
  
    
    
      
    
    
  
       
    
    
  
  
  Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
  Dernière mise à jour le 2025/07/27 (UTC).
  
  
  
    
      [[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/27 (UTC)."],[],[]]