Фотографии устройств Samsung Galaxy S7 повернуты

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

Это код, который я использую для чтения фотографий:

    Cursor photos;
    String pictureCols[] = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, MediaStore.Images.Media.BUCKET_DISPLAY_NAME };
    String order = Media.DATE_ADDED + " DESC";
    photos = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, pictureCols, null, null, order);
    photos.moveToFirst();
photosAdapter.addItems(photos);

И внутри адаптера это код, который я использую для их отображения:

    public View getView(final int position, View convertView, ViewGroup parent)
{

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View gridView;
    if (convertView == null) {
        gridView = new View(context);
        gridView = inflater.inflate(R.layout.photo_item, null);
    }
    else
    {
        gridView = (View) convertView;
    }

    photoIV = (SquareImageView)gridView.findViewById(R.id.photo);

    long photoId = photos.getLong(0);
    String thumbURL = "file://"+photos.getString(1);
    String thumbCols[] = { MediaStore.Images.Thumbnails._ID, MediaStore.Images.Thumbnails.DATA };
    Cursor thumbCursor = MediaStore.Images.Thumbnails.queryMiniThumbnail(context.getContentResolver(), photoId, Thumbnails.MINI_KIND, thumbCols);
    if(thumbCursor.getCount() > 0) {
        thumbCursor.moveToFirst();
        thumbURL = "file://"+thumbCursor.getString(1);
    }
    thumbCursor.close();

    if(!thumbURL.equals(""))
    {
       mImageOptions = new DisplayImageOptions.Builder()
            .cacheInMemory(true)
            .cacheOnDisk(true)
            .resetViewBeforeLoading(true)
            .imageScaleType(ImageScaleType.IN_SAMPLE_INT)
            .build();

        ImageLoader.getInstance().displayImage(thumbURL, photoIV, mImageOptions);
   }

    return gridView;
}

Этот код работает нормально на всех устройствах, которые я тестировал до сих пор, но некоторые пользователи с Samsung Galaxy S7 сообщили, что большая часть их фотографий показана повернутой. Я не могу найти документацию, связанную с этой проблемой в S7. Сменила ли S7 что-то, связанное с этим? Должен ли я читать фотографии по-другому, чтобы получить правильную ориентацию? Этот код долгое время работал на многих устройствах.

android,galaxy,mediastore,

0

Ответов: 1


2 принят

Если вы используете библиотеку для загрузки изображений, и вы заботитесь о заголовках ориентации EXIF, выберите библиотеку загрузки изображений, которая применяет эти заголовки для вас (например, Picasso, по крайней мере, для локальных изображений). Для этого может потребоваться какой-то вызов для выбора (например considerExifParams(true), за ваш комментарий).

Не все изображения будут иметь заголовок ориентации EXIF. Это зависит от того, является ли это фотографией, какое оборудование для камеры взяло фотографию, вне зависимости от того, какое приложение камеры, которое сделало фотографию, повернуло изображение для вас и т. Д.

андроид, галактика, Mediastore,
Похожие вопросы