2014-12-09 2 views
0

Я новичок в android devlopment. Я делаю приложение для камеры, которое я застрял в точке. Я получил так много решений уже в сети, но моя проблема не решена, пожалуйста, помогите. Я автоматически снимаю изображение и загружаю его на сервер. Но я получаю все изображение в ландшафтном режиме с правильной ориентацией, иначе нет правильной ориентации. Во время предварительного просмотра мой дисплей вращается правильно, но изображение ориентации захвата изображения не верно Мой кодСоздание приложения для Android с помощью api api

общественности недействительным surfaceChanged (держатель SurfaceHolder, внутр формат, Int W, внутр ч) {

// Now that the size is known, set up the camera parameters and begin 
    // the preview. 
    try { 
     Camera.Parameters parameters= camera.getParameters();   
     parameters = camera.getParameters();    
     //camera.setParameters(parameters);    
     setCameraDisplayOrientation(Preview.this,0, camera, parameters); 
     //camera.setParameters(parameters); 
     parameters.getPictureSize(); 
     parameters.setPictureSize(w, h); 
     parameters.getPreviewSize(); 
     parameters.setPreviewSize(w, h);    
     camera.startPreview(); 
     } catch(Exception e) { 
     Log.d(TAG, "Cannot start preview", e);  
    } 
} 

public static void setCameraDisplayOrientation(Activity activity, 
     int cameraId, android.hardware.Camera camera, Camera.Parameters parameters {android.hardware.Camera.CameraInfo info = 
     new android.hardware.Camera.CameraInfo(); 
     android.hardware.Camera.getCameraInfo(cameraId, info); 
     int rotation = activity.getWindowManager().getDefaultDisplay().getRotation(); 
     int degrees = 0; 
     switch (rotation) { 
     case Surface.ROTATION_0: degrees = 0; break; 
     case Surface.ROTATION_90: degrees = 90; break; 
     case Surface.ROTATION_180: degrees = 180; break; 
     case Surface.ROTATION_270: degrees = 270; break; 
     } 
     int result; 
     if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { 
     result = (info.orientation + degrees) % 360; 
     result = (360 - result) % 360; // compensate the mirror 
     } else { // back-facing 
     result = (info.orientation - degrees + 360) % 360; 
     } 
     //parameters.setRotation(result); 
     camera.setDisplayOrientation(result);   
     camera.setParameters(parameters); 
     } 

ответ

0

Вы необходимо вызвать параметры.setRotation с правильным значением, прежде чем вызывать camera.setParameters. Это регулирует ориентацию захваченных изображений JPEG, которая не зависит от ориентации экрана предварительного просмотра.

Смотрите Android документацию для образца кода, как позвонить setRotation() правильно: setRotation documentation

Смежные вопросы