Hola estoy desarrollando un Android aplicación de Galería donde estoy captura de imágenes desde construido en la galería y visualización de la misma.Estoy utilizando el código de la siguiente

        String[] projection = {MediaStore.Images.Thumbnails._ID};


   Cursor cursor = getContentResolver().query(MediaStore.Images.Thumbnails.INTERNAL_CONTENT_URI,
                projection, //Which columns to return
                null,       //Return all rows
                null,       
                null);


        int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
        int size = cursor.getCount();
        //If size is 0, there are no images on the SD Card.
        if (size == 0) 
        {
            Log.e("size 0","0");
        }

El Problema es que cuando ejecuto este código en los Teléfonos que tienen sólo el almacenamiento interno (Galaxy Nexus) que estoy recibiendo de Registro que dice que el tamaño como Cero, aunque hay imágenes en construyó en la galería. ¿Cómo puedo resolver esto.
Por Favor, Ayudar.Gracias!

  • Pruebe a cambiar MediaStore.Images.Thumbnails.INTERNAL_CONTENT_URI a MediaStore.Images.Media.EXTERNAL_CONTENT_URI
  • Usuario de los medios de comunicación se accede por EXTERNAL_CONTENT_URI. INTERNAL_CONTENT_URI sólo es utilizado por aplicaciones del sistema.
  • Traté de EXTERNAL_CONTENT_URI y también INTERNAL_CONTENT_URI, el EXTERNO funciona bien en los teléfonos que tienen la tarjeta SD, pero no funciona en teléfonos como el Galaxy Nexus (no hay almacenamiento externo)
  • MediaStore.Images.Media.EXTERNAL_CONTENT_URI es su URI. Si la miniatura de la foto no está disponible, a continuación, la consulta devolverá 0 datos. Así que usted consulta para los medios de comunicación en lugar de la miniatura.
  • Traté de MediaStore.Imágenes.Los medios de comunicación.EXTERNAL_CONTENT_URI, esto funciona muy bien pero es muy lento en la recuperación de hasta 5 imágenes de la Galería! Cómo hacer captura de imágenes rápida como: MediaStore.Imágenes.Las miniaturas.EXTERNAL_CONTENT_URI
  • Primera consulta para las miniaturas, si no devuelve nada, entonces usted puede de consulta para los medios de comunicación.
  • Además puede utilizar el cargador de cursor o async tarea para la consulta de los medios de comunicación.
  • Esa es la única opción?
  • Yo así lo creo.. 🙂
  • Marque esta app en Google play. play.google.com/store/apps/…, donde las imágenes se cargan tan rápido. Cómo lo están haciendo? Si yo uso MediaStore.Imágenes.Los medios de comunicación.EXTERNAL_CONTENT_URI . Las imágenes se cargan demasiado lento. ¿Hay alguna otra opción.Por favor, sugiera.
  • Intenta queryMiniThumbnails??

InformationsquelleAutor sanjana | 2013-08-14

3 Comentarios

  1. 3

    Intente esto en su botón como «Examinar»

       browse.setOnClickListener(new View.OnClickListener() {
    
        public void onClick(View v) {
    
             Intent i = new Intent(
                     Intent.ACTION_PICK,
                     android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    
                     startActivityForResult(i, RESULT_LOAD_IMAGE);
    
        }
    });

    y cal también conjunto de imágenes seleccionadas en su ImageView como

     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
    
            if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
                Uri selectedImage = data.getData();
                String[] filePathColumn = { MediaStore.Images.Media.DATA };
    
                Cursor cursor = getContentResolver().query(selectedImage,
                        filePathColumn, null, null, null);
                cursor.moveToFirst();
    
                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                picturePath = cursor.getString(columnIndex);
                cursor.close();
    
                 imageView = (ImageView) findViewById(R.id.property_image);
                imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
    
            }
    
    }

    En el primer bloque de código que utilizo startActivityForResult(i, RESULT_LOAD_IMAGE); este resultado devuelto a la llamada de la actividad y podemos obtener este resultado por el segundo bloque de código, y el conjunto de la imagen seleccionada en el ImageView

  2. 2
    String[] projection = {MediaStore.Images.Media._ID};

    Reemplazar MediaStore.Images.Thumbnails.INTERNAL_CONTENT_URI con MediaStore.Images.MEDIA.EXTERNAL_CONTENT_URI

       Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                    projection, //Which columns to return
                    null,       //Return all rows
                    null,       
                    null);
    
    
        int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);
        int size = cursor.getCount();
        //If size is 0, there are no images on the SD Card.
        if (size == 0) 
        {
            Log.e("size 0","0");
        }

    EDICIÓN: Obtener la lista de miniaturas y obtener la URI de la imagen desde el cursor


    Uri uri=MediaStore.Images.Thumbnails.getContentUri("external");
    
     Cursor cursor=MediaStore.Images.Thumbnails.queryMiniThumbnails
          (getContentResolver(), uri, MediaStore.Images.Thumbnails.MINI_KIND,null);
    
    if( cursor != null && cursor.getCount() > 0 ) {
        String uri = cursor.getString( cursor.getColumnIndex( MediaStore.Images.Thumbnails.DATA ) );
     }
  3. 2

    Para obtener la lista de la Galería de imágenes puedes probar este

    String[] projection = new String[]{
            MediaStore.Images.Media._ID,
            MediaStore.Images.Media.BUCKET_DISPLAY_NAME,
            MediaStore.Images.Media.DATE_TAKEN
    };
    
    
    Uri imageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
    
    
    Cursor cur = getContentResolver().query(imageUri,
            projection, //Which columns to return
            null,       //Which rows to return (all rows)
            null,       //Selection arguments (none)
            null        //Ordering
            );
    
    Log.i("Images Count"," count="+cur.getCount());
    • managedQuery está en desuso. usted debe utilizar getContentResolver().consulta(…) en su lugar.

Dejar respuesta

Please enter your comment!
Please enter your name here