Erreur Application Camera
Bonjour à tous,
Je suis en train d'apprendre le langage android et je tente de suivre des tutos.
Cependant, j'ai suivi un tuto visant à créer une application utilisant la camera mais j'ai quelque soucis que je n'arrive pas à résoudre.
Je vous mets mon code dans la balise qui suit, je ne pense pas que le manifest ou le main.xml soit nécessaire j'ai juste autorisé la camera et créer une surface view.
Le tuto que j'ai suivi peut etre trouvé à cette adresse.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
| package com.aceart.FormationCamera;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Date;
import java.text.SimpleDateFormat;
import android.app.Activity;
import android.content.ContentValues;
import android.hardware.Camera;
import android.graphics.PixelFormat;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore.Video.Media;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
public abstract class FormationCameraActivity extends Activity implements SurfaceHolder.Callback{
private Camera camera;
private SurfaceView surfaceCamera;
private Boolean isPreview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
isPreview = false;
setContentView(R.layout.main);
surfaceCamera = (SurfaceView) findViewById(R.id.surfaceViewCamera);
InitializeCamera();
Camera.PictureCallback pictureCallback = new Camera.PictureCallback(){
public void onPictureTaken(byte[] data, Camera camera){
if(data != null){
try{ //ERREUR ICI SUR STREAM
if(stream != null){
stream.write(data);
stream.flush();
stream.close();
}
}catch (Exception e){}
camera.startPreview();
}
}
};
//ERREUR SUR ONCLICKLISTENER ET SURFACE
surface.Camera.setOnClickListener(new OnClickListener() {
public void onClick(View v){if(camera != null){SavePicture();}}});
}
private void InitializeCamera() {
surfaceCamera.getHolder().addCallback(this);
surfaceCamera.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceDestroyed(SurfaceHolder holder){
if(camera != null){
camera.stopPreview();
isPreview = false;
camera.release();
}
}
public void surfaceCreated(SurfaceHolder holder){
if(camera == null)
camera = Camera.open();
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height){
if(isPreview){camera.stopPreview();}
Camera.Parameters parameters = camera.getParameters();
try{camera.setPreviewDisplay(surfaceCamera.getHolder());}catch (IOException e){}
camera.startPreview();
isPreview = true;
}
@Override
public void onResume(){
super.onResume();
camera = Camera.open();
}
@Override
public void onPause(){
super.onPause();
if(camera != null){
camera.release();
camera = null;
}
}
private void SavePicture(){
try{
SimpleDateFormat timeStampFormat = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss");
String fileName = "photo_" + timeStampFormat.format(new Date(0)) + ".jpg";
ContentValues values = new ContentValues();
values.put(Media.TITLE, fileName);
values.put(Media.DISPLAY_NAME, fileName);
values.put(Media.DESCRIPTION, "Image prise par FormationCamera");
values.put(Media.DATE_TAKEN, new Date(0).getTime());
values.put(Media.MIME_TYPE, "image/jpeg");
Uri taken = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
//ERREUR STREAM
stream = (FileOutputStream) getContentResolver().openOutputStream(taken);
//ERREUR PICTURECALLBACK
camera.takePicture(null, pictureCallback, pictureCallback);
} catch(Exception e){
}
}
} |
Mes erreurs se situe au niveau du stream, il ne le reconnait pas, au niveau du pictureCallback et aussi du onClickListener.