Запрос MediaStore работает на большинстве телефонов, но не EVO - PullRequest
0 голосов
/ 20 января 2011

У меня есть приложение, которое запрашивает MediaStore и показывает все изображения в галерее.Просто.Он хорошо работает на моем Nexus S, Droid X и всех версиях эмулятора.Однако, он дает неверные результаты на моем Friends Evo (2.2).Он видит только два изображения (из 100 в его галерее).Вот код:

    // Where images are stored
    Uri uri = MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI;

    // The columns we want
    String[] projection = { MediaStore.Images.ImageColumns._ID, MediaStore.Images.Thumbnails.IMAGE_ID, MediaStore.Images.Thumbnails.KIND };

    // Select only mini's
    String selection = MediaStore.Images.Thumbnails.KIND + "=" + MediaStore.Images.Thumbnails.MINI_KIND;

    mCursor = this.managedQuery(uri, projection, selection, null, null);
    mCursor.moveToFirst();
    return mCursor;

Довольно простой и распространенный.Вот ImageAdapter:

 View vi=convertView;
 ViewHolder holder;
 if(convertView==null){
        vi = inflater.inflate(R.layout.image_item, null);
        holder=new ViewHolder();
        holder.text=(TextView)vi.findViewById(R.id.text);;
        holder.image=(ImageView)vi.findViewById(R.id.image);
        vi.setTag(holder);
    }
    else {
        holder=(ViewHolder)vi.getTag();
    }
mCursor.requery();
mCursor.moveToPosition(position);

// Build the URI
int id = mCursor.getInt(mCursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns._ID));
Uri uri = Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, "" + id);
    holder.image.setTag(uri);
    holder.image.setImageURI(uri);

.. опять же, прямо.Это код, который я собрал из десятков примеров, все в основном одинаковые.Что в EVO может привести к тому, что это не сработает.

Если я уберу ограничение запроса:

// Select only mini's
String selection = MediaStore.Images.Thumbnails.KIND + "=" + MediaStore.Images.Thumbnails.MINI_KIND;

... тогда он возвращает почти вдвое больше «изображений», чемнаходятся в галерее, но большинство из них не имеют миниатюр изображений.

Есть идеи?

1 Ответ

1 голос
/ 20 января 2011

Телефоны SenseUI не все делают миниатюры в соответствии с документацией.Некоторые из них делают только миниатюры MICRO_KIND - я помню, что Incredible делал то же самое.Чтобы приложение для работы с изображениями, над которым я работал, работало правильно, мне нужно было запрашивать оба вида миниатюр и даже иногда свернуть свое собственное.

...