2017-07-27 4 views
0

J'ouvre l'appareil photo et prendre une image. Voici mon code:Android changer de rotation pendant la capture d'image Camera Intent et non après

private void dispatchTakePictureIntent() { 
     Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     // Ensure that there's a camera activity to handle the intent 
     if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
      // Create the File where the photo should go 
      File photoFile = null; 
      try { 
       photoFile = createImageFile(); 
      } catch (IOException ex) { 
       // Error occurred while creating the File 

      } 
      // Continue only if the File was successfully created 
      if (photoFile != null) { 
       Uri photoURI = FileProvider.getUriForFile(this, 
         "com.example.android.fileprovider", 
         photoFile); 
       takePictureIntent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION, ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
       takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); 
       startActivity(takePictureIntent); 

      } 
     } 
    } 



    private File createImageFile() throws IOException { 
     // Create an image file name 
     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
     String imageFileName = "JPEG_" + timeStamp + "_"; 
     File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); 
     File image = File.createTempFile(
       imageFileName, /* prefix */ 
       ".jpg",   /* suffix */ 
       storageDir  /* directory */ 
     ); 

     // Save a file: path for use with ACTION_VIEW intents 
     mCurrentPhotoPath.add(image.getAbsolutePath()) ; 
     return image; 
    } 

} 

Maintenant, la question est à l'ouverture de l'appareil photo en utilisant l'intention de la caméra ouvre en mode paysage sur l'émulateur. Voici l'image:

The Camera view is open Maintenant, après avoir pris une image, voici à quoi cela ressemble.

After Image capture

A ce stade, il n'y a pas de point faire pivoter l'image que l'image est déjà coupée ... idées pour vous assurer que l'appareil photo Android enregistre l'image correctement ... btw. .. indépendamment de mon application si j'ouvre l'application appareil photo sur l'émulateur il fait la même chose au premier la vue de la caméra couvre l'écran entier mais en cliquant sur le bouton l'image est coupée ...

Répondre

0

À ce stade, il est inutile de faire pivoter l'image car l'image est déjà coupée

C'est peu probable, mais je ne peux pas l'exclure. Téléchargez l'image enregistrée sur votre machine de développement et cochez-la.

idées sur la façon de faire que l'appareil photo Android enregistre l'image correctement

Vous n'avez pas. Vous avez délégué la prise de photo à l'une des centaines d'applications de caméra possibles. Chacune de ces applications caméra fera ce que ses développeurs ont décidé de faire. Aucun n'est sans bug. Et il n'y a pas de valeur EXTRA_PLEASE_DO_NOT_HAVE_BUGS que vous pouvez passer en ACTION_IMAGE_CAPTURE.

Si vous voulez plus de contrôle, ajoutez des photos directement à votre application, en utilisant les API de caméra ou un wrapper de bibliothèque tiers autour de ces API.