• Home
  • Youzik
  • Papystreaming
  • Darknet
  • Libertyland
  • Cacaoweb
  • GG maps
  • Yggtorrent
  • Zone téléchargement

Grimag

  • Accueil
  • Catégories
    • Smartphone
    • High Tech
    • Business
    • Web
    • Appli Jeux Vidéo
    • Shopping
  • Android c’est quoi ?
  • Nous Contacter
  • Nos comparatifs
    • Drone avec caméra
    • Clavier d’ordinateur
    • Onduleur
    • GPS
    • Répéteur WiFi

Utiliser la camera dans vos applications android



Dans ce tuto je vais développer une application qui bascule automatiquement sur la caméra de notre téléphone android quand on la lance.
D’abord je crée ma classe preview qui est une extension de la classe SurfaceView et implémente l’interface SurfaceHolder.Callback

import android.app.Activity;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;
import java.io.IOException;

public class Preview extends SurfaceView implements SurfaceHolder.Callback{
    //création de  mes objets mHolder et mCamera
     SurfaceHolder mHolder;
    Camera mCamera;
}

L’objet mHolder de l’interface SurfaceHolder permet de contrôler la taille de la surface et le format d’affichage, de modifier les pixels de la surface et surveiller les modifications sur celle -ci.
L’objet mCamera de type camera permet de se connecte à la caméra.

Le constructeur de la classe.

Preview(Context context) {
        super(context);

        // Installe le SurfaceHolder.Callback pour prevenir quand la surface et créer ou détruite
        mHolder = getHolder();
        mHolder.addCallback(this);
       //type de la ssurface 
       mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

dans la suite de ma classe je crée 3 méthodes, surfaceCreated, surfaceDestroyed, surfaceDestroyed

public void surfaceCreated(SurfaceHolder holder) {
        //ouverture de ma camera
        mCamera = Camera.open();
        try {
           mCamera.setPreviewDisplay(holder);
        } catch (IOException exception) {
            mCamera.release();
            mCamera = null;
            
        }
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        //arret de ma camera quand 
        mCamera.stopPreview();
        mCamera = null;
    }

    public void surfaceDestroyed(SurfaceHolder holder, int format, int w, int h) {
         Camera.Parameters parameters = mCamera.getParameters();
        parameters.setPreviewSize(w, h);
        mCamera.setParameters(parameters);
        mCamera.startPreview();
    }

code complet de cette class

package org.com.afCamerasimple;
import android.app.Activity;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;
import java.io.IOException;

public class Preview extends SurfaceView implements SurfaceHolder.Callback{
	SurfaceHolder mHolder;
    Camera mCamera;

    Preview(Context context) {
        super(context);

        // Install a SurfaceHolder.Callback so we get notified when the
        // underlying surface is created and destroyed.
        mHolder = getHolder();
        mHolder.addCallback(this);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder holder) {
        // The Surface has been created, acquire the camera and tell it where
        // to draw.
        mCamera = Camera.open();
        try {
           mCamera.setPreviewDisplay(holder);
        } catch (IOException exception) {
            mCamera.release();
            mCamera = null;
            // TODO: add more exception handling logic here
        }
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        // Surface will be destroyed when we return, so stop the preview.
        // Because the CameraDevice object is not a shared resource, it's very
        // important to release it when the activity is paused.
        mCamera.stopPreview();
        mCamera = null;
    }

    public void surfaceDestroyed(SurfaceHolder holder, int format, int w, int h) {
        // Now that the size is known, set up the camera parameters and begin
        // the preview.
        Camera.Parameters parameters = mCamera.getParameters();
        parameters.setPreviewSize(w, h);
        mCamera.setParameters(parameters);
        mCamera.startPreview();
    }
}

Dans ma classe AFCameraSimple il ne me reste plus qu’à créer une instance de la classe Preview.

public class AFCameraSimple extends Activity {
	 private Preview mPreview;

	    @Override
		protected void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);

	        // Hide the window title.
	        requestWindowFeature(Window.FEATURE_NO_TITLE);

	        // Create our Preview view and set it as the content of our activity.
	        mPreview = new Preview(this);
	        setContentView(mPreview);
	    }
}

Dans mon fichier AndroidManifest.xml je rajoute l’autorisation d’utiliser la camera

  • android:screenOrientation=”landscape” pour avoir l’application automatiquement en paysage
  • pour autorise l’utilisation de la camera


    
        
            
                
                
            
        
    
    
     
 

Il est temps de mettre à profit les tutoriels d’Android France:
Passez à la vitesse supérieure et investissez quelques dizaines d’euros pour acquérir les connaissances qui vous feront gagner de l’argent avec vos applications rendez-vous sur notre boutique Android-france pour ces formations en vidéo

Sep 3, 2009Gnakouri Danon

Ces articles pourraient vous intéresser :

  • Intégrer les pub de Greystripe.com dans vos applications androidIntégrer les pub de Greystripe.com dans vos applications android
  • Développer votre application de réalité augmentée avec l’API de WikitudeDévelopper votre application de réalité augmentée avec l’API de Wikitude
  • Développez avec la plate forme Polymer de Google – TUTO 4 Polymer et fichier json part IDéveloppez avec la plate forme Polymer de Google – TUTO 4 Polymer et fichier json part I
  • Développez avec la plate forme Polymer de Google – TUTO 4 Polymer et fichier json part IIDéveloppez avec la plate forme Polymer de Google – TUTO 4 Polymer et fichier json part II
  • Intégrer des pub Admob dans ses applications AndroidIntégrer des pub Admob dans ses applications Android
  • Développez avec la plate forme Polymer de Google – TUTO 2 ma première WebAppDéveloppez avec la plate forme Polymer de Google – TUTO 2 ma première WebApp
  • Développez avec la plate forme Polymer de Google – TUTO 1 Votre environnement de travailDéveloppez avec la plate forme Polymer de Google – TUTO 1 Votre environnement de travail
  • Développez votre propre boussoleDéveloppez votre propre boussole
  • Développez une application pour android étape 19 (Ajout de sous menu)Développez une application pour android étape 19 (Ajout de sous menu)
  • Tuto – Rendre ses applications Android compatibles avec toutes les tailles de terminauxTuto – Rendre ses applications Android compatibles avec toutes les tailles de terminaux
  • Facebook met à disposition son SDK pour Android (enfin presque)Facebook met à disposition son SDK pour Android (enfin presque)
  • Développement-Utiliser la liste de ses contacts dans ses applications AndroidDéveloppement-Utiliser la liste de ses contacts dans ses applications Android
  • Créer son propre menu de lancement comme la home avec SlidingDrawerCréer son propre menu de lancement comme la home avec SlidingDrawer
  • Android 2.3 Gingerbread en détailsAndroid 2.3 Gingerbread en détails
  • Chromecast – MAJ du SDK avec prise en charge des sous titresChromecast – MAJ du SDK avec prise en charge des sous titres
  • Utiliser du code HTML dans ses applications androidUtiliser du code HTML dans ses applications android
  • Anarchy RPG – Une démo Android du moteur Project AnarchyAnarchy RPG – Une démo Android du moteur Project Anarchy
  • Utiliser des onglets dans ses applications androidUtiliser des onglets dans ses applications android
  • Développez votre propre réveil (Alarme) avec votre android phoneDéveloppez votre propre réveil (Alarme) avec votre android phone
  • Un rendez-vous Android sur ToulouseUn rendez-vous Android sur Toulouse
  • Développez une application pour android étape 21 (Modifier un ingrédient avec une boite de dialogue)Développez une application pour android étape 21 (Modifier un ingrédient avec une boite de dialogue)
  • Deux Bouquins pour bien commencer le développement d’application AndroidDeux Bouquins pour bien commencer le développement d’application Android
  • Formation vidéo – Comment devenir un développeur Android ?Formation vidéo – Comment devenir un développeur Android ?
  • Google publie des exemples de codes pour vos apps multi-deviceGoogle publie des exemples de codes pour vos apps multi-device

Partager :

  • Cliquez pour partager sur Twitter(ouvre dans une nouvelle fenêtre)
  • Cliquez pour partager sur Facebook(ouvre dans une nouvelle fenêtre)
  • Cliquez pour partager sur Google+(ouvre dans une nouvelle fenêtre)
  • Cliquez pour partager sur Reddit(ouvre dans une nouvelle fenêtre)
  • Plus
  • Cliquez pour envoyer par e-mail à un ami(ouvre dans une nouvelle fenêtre)
  • Cliquer pour imprimer(ouvre dans une nouvelle fenêtre)
  • Cliquez pour partager sur Pinterest(ouvre dans une nouvelle fenêtre)
  • Cliquez pour partager sur Pocket(ouvre dans une nouvelle fenêtre)


TOTEMO - Un jeu de réflexion prochainement disponible sur Android MarketLes 6 évolutions majeures de la version 2.0 d'android (éclair)
  • Eric

    Bonjour, j’ai une erreur de compilation du au chemin de classe,

    Class org.com.afCameraSimple.afCameraSimple does not exist …

    pourriez vous mieux me decrire les diffents composant (fichier Java ) et arbo du projet …
    merci.

    De plus , comment rajoute l’autorisation d’utiliser la camera dans AndroidManifest.xml ??

  • Guy

    @Eric si tu clique sur le plus tu as le code complet ddu fichier manifest.xml

    Eric

    Nickel, ça compil,
    je “RUN”

  • Eric

    Autre question,
    comment on “prends” une photo dans l’emulateur ?

  • Christian

    J’obtient un écran noir avant d’aboutir sur une erreur … est-ce normal ?

  • Stan

    Il n’y a pas une erreur ??

    public void surfaceDestroyed(SurfaceHolder holder, int format, int w, int h)

    à changer en

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {

  • IdleMan

    Même chose, écran noir , et si je retente une seconde fois , erreur. Dommage, je cherche a faire ça depuis un moment et il n’y a aucun tutos qui fonctionne la dessus…

  • fredericD

    fermeture soudaine du programme des son lancement que devons nous mettre au niveau du layout???(main.xml)

  • Stef

    Oui, il faut changer :

    public void surfaceDestroyed(SurfaceHolder holder, int format, int w, int h)
    en
    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h)

    Pourquoi ne tenez vous pas compte des remarques en corrigeant le code que vous n’avez même pas testé ?

    Et c’est partout pareil dans ce site. C’est dingue…

  • Thomas

    Bonjour,

    J’obtiens une erreur lorsque mon programme arrive à la ligne :
    mCamera = Camera.open();

    J’ai pourtant ajouter les permissions à la caméra et changer surfaceDestryed(arg[1,2,3,4]) par surfaceChanged..

  • AbOu BaKr

    le code qu’on doit ajouter au fichier “manifest.xml” est absent :3

Gnakouri Danon

Co-fondateur du site Android france, senior lead developper, passionné de bière et de cigare cubain

3 septembre 2009 Developpement, Tuto développementandroid, Application, camera, Developpement, développeur, sdk, tuto1,989

2019 © Android-France
sponsored
loading Annuler
L'article n'a pas été envoyé - Vérifiez vos adresses e-mail !
La vérification e-mail a échoué, veuillez réessayer
Impossible de partager les articles de votre blog par e-mail.