Bonjour à tous,

j'ai une difficulté avec une class de prise de photo dotée d'une surface view : la surface view et l'image résultante sont constamment en mode paysage.
J'ai essayé de faire une rotation (setRotation(90))... mais rien n'y fait.. c'est toujours en mode paysage. Comment procéder?
Merci!

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
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
128
129
130
131
132
133
134
135
136
137
		public class CameraActivity extends Activity implements Callback {
 
			final static String DEBUG_TAG = "CameraActivity";
			final static String TAG = "CameraActivity";
			Camera camera;Context contxtt;
			private int cameraId = 0;
			Button photo;
			Camera.Parameters parameters;
			private SurfaceHolder sHolder;
 
			    	contxtt=cc;
			            camera = Camera.open();
			            SurfaceView sv = sg;
			            sHolder = sv.getHolder();
			            sHolder.addCallback(this);
			            sHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
			            try {
			                ((Camera) camera).setPreviewDisplay(sHolder);
			            } catch (IOException e) {
			                // TODO Auto-generated catch block
			                e.printStackTrace();
			            }
			            parameters = camera.getParameters();
 
			           // parameters.setRotation(90);  
			           // if (getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE)
			           // {parameters.set("orientation","landscape");parameters.setRotation(90);}
 
			            //if (getResources().getConfiguration().orientation==Configuration.ORIENTATION_PORTRAIT)
			            //{parameters.set("orientation","portrait");parameters.setRotation(90);}
 
			            camera.startPreview();
			//            parameters.set("orientation","portrait");
			            camera.setParameters(parameters);	//(90);
 
			}
			public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
			    try {
			        camera.setPreviewDisplay(holder);
			    } catch (IOException e) {
			        // TODO Auto-generated catch block
			        e.printStackTrace();
			    }
			    // set any cam params you need...
			    camera.startPreview();  
			}
 
 
			@Override
			protected void onPause() {
			    if (camera != null) {
			        camera.release();
			        camera = null;
			    }
			    super.onPause();
			}
 
			Camera.ShutterCallback shuttercallback = new Camera.ShutterCallback() {
 
			    @Override
			    public void onShutter() {
			        // TODO Auto-generated method stub
			        Log.d(TAG, "onShutter'd");
			    }
			};
 
			Camera.PictureCallback rawpicture = new Camera.PictureCallback() {
 
			    @Override
			    public void onPictureTaken(byte[] arg0, Camera arg1) {
			        // TODO Auto-generated method stub
			        Log.d(TAG, "onPictureTaken - raw");
			    }
 
			};
 
			Camera.PictureCallback jpegcallback = new Camera.PictureCallback() {
 
			    @Override
			    public void onPictureTaken(byte[] data, Camera arg1) {
			        // TODO Auto-generated method stub
			        File pictureFileDir = getDir();
 
 
			        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmddhhmmss");
			        String date = dateFormat.format(new Date());
			       final String photoFile = "Picture_" + date + ".jpg";
 
			        String filename = pictureFileDir.getPath() + File.separator
			                + photoFile;
 
			        File pictureFile = new File(Environment.getExternalStorageDirectory(), photoFile);
			        try {
			            FileOutputStream fos = new FileOutputStream(pictureFile);
			            fos.write(data);
			            fos.close();  
			            Toast.makeText(laclasse.this,
			                    "New Image saved:" + photoFile, Toast.LENGTH_LONG)
			                    .show();
			        } catch (Exception error) {
			            Log.d(CameraActivity.DEBUG_TAG, "File" + filename
			                    + "not saved: " + error.getMessage());
			            Toast.makeText(laclasse.this,
			                    "Image could not be saved.", Toast.LENGTH_LONG).show();
			        }
			         }  } // End else block 
 
 
 
 
		;
 
			@Override
			public void surfaceCreated(SurfaceHolder holder) {
			    // set any cam params you need...
			    camera.startPreview();
			}
 
			@Override
			public void surfaceDestroyed(SurfaceHolder holder) {
			    // TODO Auto-generated method stub
			    camera.stopPreview();
			    camera.release();
 
			}
 
			private  File getDir() {
			    File sdDir = Environment.getExternalStorageDirectory();
			    return new File(sdDir, "CameraAPIDemo");
			}
 
			public void takePhoto() {  
 
			    camera.takePicture(shuttercallback, rawpicture, jpegcallback);
			}
 
			 }