Android - получить изображения с камеры выстрел - PullRequest
2 голосов
/ 15 марта 2011

Мне интересно, как получить изображения из папки Галерея / Камера в Android.Я смотрю в файловый менеджер и не могу понять, где находятся эти изображения в файловой системе.Если я иду в диспетчер файлов, я не могу найти точное местоположение моих фотографий.Если я захожу в приложение Галерея, я вижу, что они висят в папке «Камера».

Немного о том, что я пытаюсь выполнить:

Получите все существующие фотографии, сохраненные в определенный момент, и отобразите их в своей деятельности.Я пытаюсь разрешить пользователю телефона назначать аватар своему профилю из существующих фотографий.

Ответы [ 2 ]

5 голосов
/ 18 марта 2011

вот код, на случай, если он кому-нибудь понадобится.Это проверено на прянике.

List<Image> existingPhotos = getCameraImages(this);

            photosGrid = (GridView)findViewById(R.id.gvExistingPhotos);
            LazyPhotosGridAdapter adapter = new LazyPhotosGridAdapter(this, existingPhotos);
            photosGrid.setAdapter(adapter);





public String getRealPathFromURI(Uri contentUri) {
            String[] proj = { MediaStore.Images.Media.DATA };
            Cursor cursor = managedQuery(contentUri, proj, null, null, null);
            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        }

        public static List<Image> getCameraImages(Context context) {
            final String[] projection = { MediaStore.Images.Media.DATA };
            final String selection = MediaStore.Images.Media.BUCKET_ID + " = ?";
            final String[] selectionArgs = { CAMERA_IMAGE_BUCKET_ID };
            final Cursor cursor = context.getContentResolver().query(Images.Media.EXTERNAL_CONTENT_URI, 
                    projection, 
                    selection, 
                    selectionArgs, 
                    null);
            List<Image> result = new ArrayList<Image>(cursor.getCount());
            if (cursor.moveToFirst()) {
                final int dataColumn = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                do {
                    final String data = cursor.getString(dataColumn);
                    result.add(new Image(data));
                } while (cursor.moveToNext());
            }
            cursor.close();
            return result;
        }

        public static final String CAMERA_IMAGE_BUCKET_NAME =
            Environment.getExternalStorageDirectory().toString()
            + "/DCIM/Camera";
        public static final String CAMERA_IMAGE_BUCKET_ID =
                getBucketId(CAMERA_IMAGE_BUCKET_NAME);

        /**
         * Matches code in MediaProvider.computeBucketValues. Should be a common
         * function.
         */
        public static String getBucketId(String path) {
            return String.valueOf(path.toLowerCase().hashCode());
        }
1 голос
/ 15 марта 2011

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

...