La caméra comme appareil photo

 

Le système Android propose une à deux caméras qui pourront être utilisées comme appareils photos.

Comme pour tous les appareils photos intégrés à un téléphone, il ne faut pas s'attendre à des miracles: vous n'obtiendrez pas les mêmes résultats que ceux que vous auriez avec des appareils de type reflex, hybride, voire compact.

  • Pas de zoom mécanique. Le zoom est dit numérique, c'est à dire un simple agrandissement de l'image capturée précédemment.
  • Appareil plutôt lent pour la mise au point (L'appareil est bon pour prendre des payasages ou des portraits si l'éclairage est correct).
  • Flash de faible qualité.
  • ...

Il faut donc considérer cette solution comme une solution de secour, de dépannage. A moins que vous ne soyez pas très regardant ! Pour les selfies, cela sera amplement suffisant !

Evidemment, un bon photographe pourra toujours faire de superbes photos avec ce type d'appareil...

 

Utiliser le programme déjà existant

Il est possible d'utiliser un intent pour lancer l'application qui gère en standard la prise de photos.

Les explications seront données dans le chapitre suivant...

 

Changement de classe pour gérer les caméras

Depuis l'API level 21, les explications qui suivent sont "deprecated"...

Il faut utiliser la nouvelle classe android.hardware.camera2.

 

Sécurité et caractéristiques

Sinon, vous pouvez aussi programmer votre propre application photo. Mais avant de pouvoir utiliser vos cameras, il faudra déclarer une permsission dans le fichier AndroidManifest.xml, ainsi que les options des caméras que vous voulez utiliser:

<uses-permission android:name="android.permission.CAMERA" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

 

Nombre de caméras disponibles

Pour connaître le nombre de caméras présentes sur l'appareil, il faudra utiliser la méthode:

Camera.getNumberOfCameras();

 

Choisir une caméra

Connaissant le nombre de caméras, il faudra proposer et choisir celle que l'utilisateur veut utiliser.

 

Attacher/détacher un APN à l'application

Maintenant que le choix de la caméra est fait, il faut voir si le périphérique correspondant est disponible et si oui, se l'affecter.

Pour utiliser la caméra courante (il s'agit de la première caméra sur la face arrière de votre appareil, donc derrière l'écran):

Camera camera = Camera.open();

Image non trouvée !La fonction retourne null s'il n'existe pas de caméra sur la face arrière.

Pour spécifier une caméra:

Camera camera = Camera.open(n);

n est un identifiant de caméra compris entre 0 et Camera.getNumberOfCameras()-1

Une exception peut être remontée par open:

  • La caméra demandée est déjà utilisée par une autre application.
  • Les caméras ont été désactivées (cf. Boolean getCameraDisabled(android.content.ComponentName);

Image non trouvée !L'ouverture du périphérique implique que l'appareil est prêt à être utilisé par votre application (entre autre, la caméra sera lockée, ce qui signifie qu'aucune autre application ne peut y accéder).

Image non trouvée !Après en avoir terminé avec la ressource, il faudra bien penser à la libérer pour que les autres applications puissent y accéder à leur tour ! Vous utiliserez pour cela la méthode release:

camera.release();

 

Coder une application pour photographier

Voici les chapitres abordées:

Annexes