Приведенный выше ответ очень тщательный, но я обнаружил, что для каждого случая мне нужно было сделать немного больше, особенно если вы имеете дело с изображениями из других источников, таких как Галерея или Google Фото. Вот мой метод DetermineOrientation. У меня есть служебный класс, где он находится, поэтому мне нужно передать Activity, чтобы использовать managedQuery (кстати, он устарел, поэтому используйте его осторожно). Причина, по которой я должен использовать два метода, заключается в том, что в зависимости от источника изображения ExifInterface не будет работать. Например, если я делаю фото с камеры, Exif работает нормально. Однако, если я также выбираю изображения из Галереи или Google Диска, Exif не работает и всегда возвращает 0. Надеюсь, это кому-нибудь поможет.

от вопрос уже есть ответ здесь:

Почему изображение, снятое с помощью камеры, поворачивается на некоторых устройствах на Android? 17 ответов

Я работаю над приложением в Android, которое использует камеру для съемки фотографий. Для запуска камеры я используюintent ACTION_IMAGE_CAPTURE нравится:

Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        File image=new File(Environment.getExternalStorageDirectory(),"PhotoContest.jpg");
        camera.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(image));
        imageUri=Uri.fromFile(image);
        startActivityForResult(camera,1);

public void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode, resultCode, data);
    switch(requestCode){
       case 1:
            if (resultCode == Activity.RESULT_OK) {
                  selectedImage = imageUri;
                  getContentResolver().notifyChange(selectedImage, null);
                  image= (ImageView) findViewById(R.id.imageview);
                  ContentResolver cr = getContentResolver();
                  Bitmap bitmap;
                  try {
                       bitmap = android.provider.MediaStore.Images.Media
                       .getBitmap(cr, selectedImage);
                       image.setImageBitmap(bitmap);
                       Toast.makeText(this, selectedImage.toString(),
                              Toast.LENGTH_LONG).show();
                  } catch (Exception e) {
                      Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT)
                              .show();
                      Log.e("Camera", e.toString());
                  }
                 }
             else 

         if(resultCode == Activity.RESULT_CANCELED) {
                    Toast.makeText(EditPhoto.this, "Picture could not be taken.", Toast.LENGTH_SHORT).show();
                }
       }
}

Проблема в том, что все сделанные фотографии повернуты на 90 градусов по горизонтали.

Я также поместил это в мой файл манифеста:

 <activity android:name=".EditPhoto">
    android:screenOrientation="portrait"
    </activity>

Но все равно безрезультатно! Так может кто-нибудь мне помочь ???

Ответы на вопрос(2)

Ваш ответ на вопрос