2012-06-25 7 views
4

Je suis confronté à un problème pour l'affichage de la caméra dans Android 2.3.6 périphérique.J'ai utilisé ce code pour changer l'orientation de la caméra, mais pour 2.3.6 il ne fonctionne pas et pour d'autres versions, il fonctionne correctement.orientation de la caméra en android 2.3.6

In device 2.2.1

In device 2.3.6

Première image dans le dispositif 2.2.1, seconde image dans l'appareil 2.3.6.I voulez caméra aperçu que même que dans 2.2.1 pour le dispositif 2.3.6.Below est mon code

if (Integer.parseInt(Build.VERSION.SDK) >= 8) 
      { 
     mCamera.setDisplayOrientation(90); 


     } 
     else 
     { 
      if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) 
      { 

       p.set("orientation", "portrait"); 
       p.set("rotation", 90); 

      } 
      if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) 
      { 

       p.set("orientation", "landscape"); 
       p.set("rotation", 90); 

      } 
    } 

Et j'ai spécifié l'orientation de l'écran portrait dans manifest.Kindly me suggérer une solution.Merci à l'avance.

+1

Quel appareil utilisez-vous? – jpa

Répondre

0

S'il vous plaît faites référence ci-dessous le code:

private void setCameraDisplayOrientation(int cameraId, android.hardware.Camera camera) { 
    int rotation = getWindowManager().getDefaultDisplay() 
      .getRotation(); 
    int degrees = 0; 
    int result; 

    if(Build.VERSION.SDK_INT>10){ 
     android.hardware.Camera.CameraInfo info = 
       new android.hardware.Camera.CameraInfo(); 
     android.hardware.Camera.getCameraInfo(cameraId, info); 
     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; 
     } 

     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; 
     } 
     camera.setDisplayOrientation(result); 

    }else{ 
     if(cameraId==CAMERA_FACING_BACK){ 
      camera.setDisplayOrientation(90); 
     }else{ 
      camera.setDisplayOrientation(270); 
     } 
    } 
} 

Vous pouvez obtenir Id Appareil photo à l'aide

@TargetApi(Build.VERSION_CODES.GINGERBREAD) 
private Camera openFrontFaceCamera() { 
    int cameraCount = 0; 
    Camera cam = null; 
    Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); 
    cameraCount = Camera.getNumberOfCameras(); 
    for (int camIdx = 0; camIdx < cameraCount; camIdx++) { 
     Camera.getCameraInfo(camIdx, cameraInfo); 
     if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT ) { 
      try { 
       mCameraId=camIdx; 
       cam = Camera.open(camIdx); 
      } catch (RuntimeException e) { 
       Log.e("Custom Camera", "Camera failed to open: " + e.getLocalizedMessage()); 
      } 
     } 
    } 

    return cam; 
} 

@TargetApi(Build.VERSION_CODES.GINGERBREAD) 
private Camera openRearFaceCamera() { 
    int cameraCount = 0; 
    Camera cam = null; 
    Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); 
    cameraCount = Camera.getNumberOfCameras(); 
    for (int camIdx = 0; camIdx < cameraCount; camIdx++) { 
     Camera.getCameraInfo(camIdx, cameraInfo); 
     if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK ) { 
      try { 
       mCameraId=camIdx; 
       cam = Camera.open(camIdx); 
      } catch (RuntimeException e) { 
       Log.e("Custom Camera", "Camera failed to open: " + e.getLocalizedMessage()); 
      } 
     } 
    } 

    return cam; 
}