Android - Wenn Sie ein Foto von der nach vorne gerichteten Kamera aufnehmen, wird das Foto gedreht

Ich erstelle eine App in Android, in der der Benutzer nur im Hochformat ein Bild von der Frontkamera aufnehmen kann. Ich habe es geschafft, die Kameraansicht auf Hochformat einzustellen, aber wenn ein Bild aufgenommen wird, erscheint es gedreht. Das Schlimmste ist, dass die Drehrichtung bei verschiedenen Telefonen unterschiedlich ist. Bei einem Telefon wird die Drehrichtung nach rechts gedreht, bei einem anderen nach links.

Hier sind meine Code-Schnipsel

Um sicherzustellen, dass die Aktivität nur im Porträt abgespielt wird

 <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" 
             android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Kamera holen

   @Override
  public void onResume() {
    super.onResume();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
      Camera.CameraInfo info=new Camera.CameraInfo();

      for (int i=0; i < Camera.getNumberOfCameras(); i++) {
        Camera.getCameraInfo(i, info);

        if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
          camera=Camera.open(i);
        }
      }
    }

    if (camera == null) {
      camera=Camera.open();
    }
  }

Kamera drehen

    @Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
        int height) {
    if(previewing){
        camera.stopPreview();
        previewing = false;
    }

    if (camera != null){
        try {
            camera.setPreviewDisplay(surfaceHolder);
            camera.setDisplayOrientation(90);
            initPreview(width, height);
            startPreview();

            previewing = true;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

Bild gemacht

     PictureCallback myPictureCallback_JPG = new PictureCallback(){

    @Override

     public void onPictureTaken(byte[] data, Camera arg1) {
         // new SavePhotoTask().execute(data);
        Intent myIntent = new Intent(MainActivity.this, CropActivity.class);
        Bitmap bitmap = BitmapFactory.decodeByteArray(data , 0, data .length);
        myIntent.putExtra("image", bitmap);
        MainActivity.this.startActivity(myIntent);

     }};

Der BMP-Send wird immer in gedrehter Form angezeigt, jedoch nicht immer mit 90 Grad. Es sieht so aus, als würde Android 4.0 nicht nur drehen, sondern auch das Bild spiegeln. Gibt es eine gute Möglichkeit, um zu erkennen und sicherzustellen, dass ich immer das richtige Bild bekomme?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage