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.
- Des informations sur les caméras.
- Possibilité de désactiver le son de l'obturateur
- Emplacement de l'objectif de l'APN
- Exemple de code
- Récupérer les paramètres d'une caméra (cf. paragraphe suivant Attacher la ressource à l'application).
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();
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);
Où 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);
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).
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:
- La caméra dans le cycle de vie d'une application Android
- Prévisualiser l'image avant de prendre une photo
- Le Flash
- Détection de faces (visages)
- Prendre une photo
- Activation/Désactivation du son de l'obturateur
- Définir l'orientation de la caméra pour la prise de photos (Parameters.setRotation(int))
- Définir la qualité et la taille de l'image qui sera sauvée.
- Définir la taille de l'image générée par la caméra pour une prévisualisation.
- Définir/connaître la taille et la qualité de la vignette.
- Balance des blancs.
- Effets à appliquer sur les couleurs
- ...
Annexes