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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 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(); } }
Partager