Получение миниатюр для изображений в Android с использованием ContentResolver и Cursor - PullRequest
1 голос
/ 19 декабря 2011

Ниже приведен мой код для получения эскиза данного изображения.На данный момент я получаю исключение «Курсор за пределами»

Я думаю, это может быть потому, что я нигде не добавляю URL изображения.Я немного сбит с толку относительно того, где это сделать.Итак, 2 вопроса: 1. Где я могу использовать URL-адрес изображения, для которого я хочу получить миниатюру 2. Цикл for, который должен печатать имена столбцов, ничего не печатает, кроме первого оператора «Имена столбцов»

</p> <pre><code> //get the corresponding thumbnail String lastImageTakenPath = MyActivity.this.savedInstanceStateVariable.getString("lastImageTaken"); System.out.println("previous image is "+ lastImageTakenPath); ContentResolver cr = getContentResolver(); if(cr != null){ String[] projection = { MediaStore.Images.Media._ID }; Cursor cursor = managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,projection,null,null,null); //Cursor cursor = cr.query(lastImageTakenURI, null, null, null, null); //Activity.startManagingCursor(cursor); if(cursor != null){ String[] columnNames = cursor.getColumnNames(); System.out.println("COLUMN NAMES"); for(int i=0;i<columnNames.length; i++){ System.out.println(columnNames[i]); } /* 1. get the id of the image * 2. use this id in the call, getThumbnails on MediaStore.Images.Thumbnails to obtain the thumbnail 3.set the imageview's src to this thumbnail */ int imageID = cursor.getInt( cursor.getColumnIndex(MediaStore.Images.Media._ID) ); Uri uri = Uri.withAppendedPath( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(imageID) ); // Get original image ID String url = uri.toString(); int originalImageId = Integer.parseInt(url.substring(url.lastIndexOf("/") + 1, url.length())); // Get (or create upon demand) the micro thumbnail for the original image. thumbnailLastImage = MediaStore.Images.Thumbnails.getThumbnail(cr, originalImageId, MediaStore.Images.Thumbnails.MICRO_KIND,null); thumbnailImage.setImageBitmap(thumbnailLastImage); } else{ System.out.println("Cursor is NULL"); } } else{ Log.d(TAG,"ContentResolver is NULL"); }

1 Ответ

0 голосов
/ 11 декабря 2013

Я считаю, что ваш тест if (cursor! = Null) неверен или, по крайней мере, недостаточен.Если результат запроса не возвращает миниатюр, вы все равно получите курсор, где cursor.getCount () == 0, вы можете использовать его в качестве теста.

...