Aller au contenu

Problème Camera.open


Cuillère

Recommended Posts

Bonjour à tous, j'ai un petit problème lorsque j'essaye d'utiliser la caméra : ça marche avec un émulateur API8, mais pas sur un avec la version 2.3.1 d'android.

J'ai aussi testé sur un téléphone (HTC Desire) et ça plante : dans le log cat j'ai "Fail to connect to camera service" sur la ligne "Camera.open();"

J'ai mis la permission dans le manifest, et déjà regardé sur le net, je n'ai rien trouvé, si quelqu'un à une solution, voilà le code :

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

public Preview(Context context, AttributeSet att) {
	super(context, att);

	// 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 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 Camera getCamera(){
	return mCamera;
}

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.release();
	mCamera = null;
}

public void surfaceChanged(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(h, w);
	mCamera.setParameters(parameters);
	mCamera.startPreview();
}

}

Lien vers le commentaire
Partager sur d’autres sites

Résolu : j'utilise l'application appareil photo grâce à un intent :

public void onCameraClick(){

	Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
	startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);  



}

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...