Как получить все изображения на устройстве (особенно SDCard) на Android (2.1 или выше) - PullRequest
3 голосов
/ 14 мая 2011

Я следовал этому уроку: http://androidsamples.blogspot.com/2009/06/how-to-display-thumbnails-of-images.html, а также другому, который имеет почти идентичный код, и у меня возникли некоторые проблемы / несоответствия в том, как изображения обрабатываются на разных устройствах.

Мой код для сбора изображений такой:

private void init_phone_image_grid() {
    String[] img = { MediaStore.Images.Thumbnails._ID };
    Uri uri = MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI;
    imagecursor = managedQuery(uri, img, null,
            null, MediaStore.Images.Thumbnails.IMAGE_ID);
    image_column_index = imagecursor
            .getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
    count = imagecursor.getCount();
    imagegrid = (GridView) findViewById(R.id.PhoneImageGrid);
    imagegrid.setAdapter(new ImageAdapter(getApplicationContext()));
    imagegrid.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView parent, View v, int position,
                long id) {
            System.gc();
            String[] proj = { MediaStore.Images.Media.DATA };
            actualimagecursor = managedQuery(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj,
                    null, null, null);
            actual_image_column_index = actualimagecursor
                    .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            actualimagecursor.moveToPosition(position);
            String i = actualimagecursor
                    .getString(actual_image_column_index);
            System.gc();
            Intent intent = new Intent(getApplicationContext(),
                    EvidenceImageView.class);
            intent.putExtra("filename", i);
            startActivity(intent);
        }
    });
}

У меня есть эмулятор под управлением Android 2.2 и я смог создать файл SDCard для монтирования с ним .. Я скопировал некоторые изображения в папку с помощью ADB иперезапустил эмулятор (сначала мое приложение не показывало никаких изображений) .. После перезагрузки некоторые изображения появились в моем приложении, но не во всех .. Затем после открытия приложения "Галерея", которое поставляется с эмулятором, я смог получитьмоя галерея, чтобы загрузить все изображения просто отлично .. Однако у меня также есть thunberbolt HTC, и у меня есть фотографии на нем (в / sdcard / DCIM / 100MEDIA), и он не будет отображать изображения вообще в том же приложении (ссылаясь на тот, над которым я работаю) .. У меня нет телефона, подключенного к компьютеру, поэтому я знаю, что у моего телефона нет проблем с доступом кон sdcard .. Также я попробовал приложение галереи, которое идет с моим телефоном, и мои фотографии / видео загружаются очень хорошо в этом .. Приложение, которое идет с телефонами HTC, немного отличается от того, которое идет с ванильными телефонами android Iповерьте .. Это заставляет меня задуматься, не обрабатывает ли система изображения таким же образом ..

Я новичок в разработке для Android и надеялся, что это будет довольно просто ... Я посмотрел некоторые другие приложения,например, facebook, и кажется, что он берет меня прямо в галерею, предоставленную htc, когда я хочу загрузить фотографию .. Возможно, я мог бы использовать тот же подход (не совсем уверен, как) .. В конце концов я хочу, чтобы пользователь могвыбрать несколько изображений и загрузить их все ... Я также нашел исходный код для приложения Camera, которое поставляется с Android:

https://android.googlesource.com/platform/packages/apps/Camera/+/master/src/com/android/camera

Это несколько полезно, но довольно немногоИнформация, которую нужно переварить на этом этапе.

Любые объяснения того, «как все это работает», были бы великолепны.Но главное, как мне заставить мою галерею показывать все миниатюры (создавая миниатюры, если это необходимо) .. Или как я могу взаимодействовать с системной галереей ..

1 Ответ

1 голос
/ 14 мая 2011

кажется, что он ведет меня прямо в галерею, предоставленную htc, когда я хочу загрузить фотографию .. Возможно, я мог бы использовать такой же подход

Что не так с этим:

Как выбрать изображение из галереи (SD-карты) для моего приложения?

...