13
Développer sur Android Android Lab Test www.AndroidLabTest.com Facebook Par Bruno Delb www.youtube.com/androidlabtest www.twitter.com/brunodelb | www.facebook.com/brunodelb | blog.brunodelb.com www.facebook.com/Androidlabtest Youtube Site officiel Leçon : La caméra, la prévisualisation

Android Lab Test : La prévisualisation de la caméra (français)

Embed Size (px)

Citation preview

Page 1: Android Lab Test : La prévisualisation de la caméra (français)

Développer sur AndroidAndroid Lab Test

www.AndroidLabTest.com

Face

bo

ok

Par Bruno Delb

www.youtube.com/androidlabtest

www.twitter.com/brunodelb | www.facebook.com/brunodelb | blog.brunodelb.com

www.facebook.com/Androidlabtest

You

tub

e

Site

off

icie

l

Leçon : La caméra, la prévisualisation

Page 2: Android Lab Test : La prévisualisation de la caméra (français)

La caméra, la prévisualisation

• Dans cette leçon, vous allez apprendre à contrôler la

prévisualisation de la caméra.

• Pour cela, vous allez utiliser les classes Camera et

SurfaceView.

Page 3: Android Lab Test : La prévisualisation de la caméra (français)

La caméra, la prévisualisation

• Ouvrez la caméra puis attachez la caméra au SurfaceHolder avec la méthode setPreviewDisplay().

Camera camera = Camera.open();camera.setPreviewDisplay(surfaceHolder);

• En cas de changement (orientation, …), changez la taille de prévisualisation avec la méthode setPreviewSize() et réactivez l’affichage avec la méthode startPreview().

Camera.Parameters parameters = camera.getParameters();parameters.setPreviewSize(w, h);camera.setParameters(parameters);camera.startPreview();

• A la fin, arrêtez l’affichage avec la méthode stopPreview().

camera.stopPreview();

Page 4: Android Lab Test : La prévisualisation de la caméra (français)

La caméra, la prévisualisation

• Créez un SurfaceHolder étendant SurfaceView et implémentant Callback.

class Preview extends SurfaceView implements SurfaceHolder.Callback

• Récupérez une référence au holder avec la méthode getHolder().

SurfaceHolder surfaceHolder = getHolder();

• Sélectionnez le type de buffer par push SURFACE_TYPE_PUSH_BUFFERS avec la méthode setType().

surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

Page 5: Android Lab Test : La prévisualisation de la caméra (français)

La caméra, la prévisualisation

• Créez les callback surfaceCreated(), surfaceDestroyed() et

surfaceChanged().

surfaceHolder.addCallback(this);

public void surfaceCreated(SurfaceHolder holder) { /* setPreviewDisplay */ }

public void surfaceDestroyed(SurfaceHolder holder) { /* stopPreview */ }

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

// setPreviewSize et startPreview

}

Page 6: Android Lab Test : La prévisualisation de la caméra (français)

Layout main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

</LinearLayout>

Page 7: Android Lab Test : La prévisualisation de la caméra (français)

Fichier Main.java

public class Main extends Activity {

private Preview preview;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

preview = new Preview(this);

setContentView(preview);

}

}

Page 8: Android Lab Test : La prévisualisation de la caméra (français)

Fichier Preview.java

class Preview extends SurfaceView implements SurfaceHolder.Callback {

SurfaceHolder surfaceHolder;

Camera camera;

Preview(Context context) {

super(context);

surfaceHolder = getHolder();

surfaceHolder.addCallback(this);

surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

}

Page 9: Android Lab Test : La prévisualisation de la caméra (français)

Fichier Preview.java

public void surfaceCreated(SurfaceHolder surfaceHolder) {

camera = Camera.open();

try {

camera.setPreviewDisplay(surfaceHolder);

} catch (IOException e) {

}

}

public void surfaceDestroyed(SurfaceHolder surfaceHolder) {

camera.stopPreview();

camera = null;

}

Page 10: Android Lab Test : La prévisualisation de la caméra (français)

Fichier Preview.java

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

Camera.Parameters parameters = camera.getParameters();

parameters.setPreviewSize(w, h);

camera.setParameters(parameters);

camera.startPreview();

}

}

Page 11: Android Lab Test : La prévisualisation de la caméra (français)

Projet AndroidManifest.xml

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

Page 12: Android Lab Test : La prévisualisation de la caméra (français)

Testez sur votre mobile

View_Camera_Preview

Page 13: Android Lab Test : La prévisualisation de la caméra (français)

Retrouvez-moi sur ma chaîne AndroidLabTest …

Sur ma chaîne Youtubehttps://www.youtube.com/user/mobiledevlabtest

Qui suis-je ?

Bruno Delb,

auteur du 1er livre francophone de développement d’application Java sur mobile (2002),

développeur d’applications mobiles & sociales,

parlez-moi de vos projets.

Et bien sûr sur mon site Web :http://blog.brunodelb.com