Autore Topic: Caricamento immagini da SD con metodo query di ContentResolver  (Letto 1151 volte)

Offline 01michele87

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire HD
  • Sistema operativo:
    Windows 7 64bit
0
Ciao a tutti,
Sto cercando di caricare le immagini da una cartella specifica della scheda SD per visualizzarle in una Gridview. Nella SD c'è la solita cartella DCIM per le foto e poi la mia applicazione crea un'ulteriore cartella NomeApp/Photos/NomeElemento. nella sotto-cartella nomeelemento sono contenute le foto relative a quell'oggetto. Io vorrei caricare solo le foto contenute in quella sotto-cartella. Quello che ho realizzato fin'ora è questo:
Codice (Java): [Seleziona]
@Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.gallery);
                GridView gridview = (GridView) findViewById(R.id.gallery);
                registerForContextMenu(gridview);
               
                id = getIntent().getExtras().getString("ID");
               
                // Set up an array of the Thumbnail Image ID column we want
        String[] projection = {MediaStore.Images.Thumbnails._ID};
        // Path
        String path = "FindMyHome/Photos/" + id;
        // Create the cursor pointing to the SDCard
        cursor = getContentResolver().query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
                        projection,
                        null,
                null,
                        MediaStore.Images.Thumbnails.IMAGE_ID);
        // Get the column index of the Thumbnails Image ID
        columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
       
                gridview.setAdapter(new BaseAdapter() {
                public View getView(int position, View convertView, ViewGroup parent) {
                    ImageView picturesView;
                    if (convertView == null) {
                        picturesView = new ImageView(mContext);
                        // Move cursor to current position
                        cursor.moveToPosition(position);
                        // Get the current value for the requested column
                        int imageID = cursor.getInt(columnIndex);
                       
                        System.out.println(getRealPathFromURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, "" + imageID)));
                       
                        // Set the content of the image based on the provided URI
                        picturesView.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, "" + imageID));
                        picturesView.setScaleType(ImageView.ScaleType.FIT_CENTER);
                        picturesView.setPadding(8, 8, 8, 8);
                        picturesView.setLayoutParams(new GridView.LayoutParams(100, 100));
                    }
                    else {
                        picturesView = (ImageView)convertView;
                    }
                    return picturesView;
                }
               
                public int getCount() {
                    return cursor.getCount();
                }
               
                public Object getItem(int position) {
                    return position;
                }
               
                public long getItemId(int position) {
                    return position;
                }
                       
                });

Così però riesco a caricare tutte le immagini che sono all'interno della scheda SD e non quelle contenute nella sottocartella nomeelemento. Come posso specificare alla query() che mi restituisce il cursore di restituirmi solo le immagini contenute nella sottocartella?

Grazie a tutti in anticipo,
Michele
« Ultima modifica: 03 Marzo 2012, 18:39:15 CET da 01michele87 »

Offline rivolaldo

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • rivolaldo
    • @maurentus
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy SII
  • Sistema operativo:
    Windows 7
Re:Caricamento immagini da SD con metodo query di ContentResolver
« Risposta #1 il: 13 Marzo 2012, 10:54:59 CET »
0
Anche io ho lo stesso problema....ho provato a scrivere l'uri manualmente ma il metodo managedQuery poi mi ritorna sempre null.
Nessuno sa come fare??

Offline rivolaldo

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • rivolaldo
    • @maurentus
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy SII
  • Sistema operativo:
    Windows 7
Re:Caricamento immagini da SD con metodo query di ContentResolver
« Risposta #2 il: 13 Marzo 2012, 11:08:07 CET »
0
In questo caso imagecursor non è null però verranno caricate le immagini di tutta la gallery:
Codice (Java): [Seleziona]
final String[] columns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID };
final String orderBy = MediaStore.Images.Media._ID;
Cursor imagecursor = managedQuery(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,null, orderBy);  // content://media/external/images/media

Ho provato a fare qualcosa del genere:
Codice (Java): [Seleziona]
final String[] columns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID };
final String orderBy = MediaStore.Images.Media._ID;
String root = Environment.getExternalStorageDirectory().getPath(); // /mnt/sdcard
File dirImage = new File(root,"MyCameraPhoto"); // /mnt/sdcard/MyCameraPhoto
String uriString = "file://" + dirImage.getPath();
Uri sdcardUri = Uri.parse(uriString);
Cursor imagecursor = managedQuery(sdcardUri, columns, null,null, orderBy);
ma imagecursor è sempre null.