android

Seleccionar una imagen de la galería en Android

En Android, Programación por trellat0 Comentarios

En Android, se puede implementar en una aplicación la posibilidad de que el usuario pueda seleccionar una imagen de la galería del móvil para ser usada en la aplicación. Esto se puede realizar mediante un Intent ya definido en el sistema operativo Android, por lo que su implementación es sencilla.

Básicamente habrá que hacer la llamada al Intent para luego recuperar la respuesta del mismo, guardando la imagen seleccionada en un ImageView del layout. Para ello, lo primero será definir en una constante el código del Intent para luego ser capaces de obtener la imagen que devolverá.

private static final int SELECT_FILE = 1;

El siguiente método llamado abrirGaleria, se encarga de abrir la actividad en la cual se mostrará la galería para seleccionar la imagen. Simplemente, abre el intent predefinido ACTION_GET_CONTENT, filtrando por el tipo imagen con cualquier extensión y abre la actividad con el identificador de la constante SELECT_FILE que se ha definido antes.

public void abrirGaleria(View v){
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(
            Intent.createChooser(intent, "Seleccione una imagen"),
            SELECT_FILE);
}

El otro método implicado, es onActivityResult. Como este método puede utilizarse también para recuperar los parámetros de salida de cualquier actividad llamada desde aquí, habrá que procesar sólo las que provengan del identificador SELECT_FILE. En este caso, cargará el fichero en un Bitmap para, a continuación, mostrarlo en un ImageView, en este caso llamado ivImagen, el cual deberá existir en el layout asociado a la actividad.

protected void onActivityResult(int requestCode, int resultCode,
                                Intent imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
    Uri selectedImageUri = null;
    Uri selectedImage;

    String filePath = null;
    switch (requestCode) {
        case SELECT_FILE1:
            if (resultCode == Activity.RESULT_OK) {
                selectedImage = imageReturnedIntent.getData();

                if (requestCode == SELECT_FILE) {

                    if (selectedPath1 != null) {
                        InputStream imageStream = null;
                        try {
                            imageStream = getContentResolver().openInputStream(
                                    selectedImage);
                        } catch (FileNotFoundException e) {
                            e.printStackTrace();
                        }

			// Transformamos la URI de la imagen a inputStream y este a un Bitmap
                        Bitmap bmp = BitmapFactory.decodeStream(imageStream);

			// Ponemos nuestro bitmap en un ImageView que tengamos en la vista 
                        ImageView mImg = (ImageView) findViewById(R.id.ivImagen);
                        mImg.setImageBitmap(bmp);

                    }
                }
            }
            break;
    }
}

fsd

Deja un comentario