2011-08-31 20 views
6

Quiero actualizar un ImageView con una imagen que hago con la cámara incorporada de Android. utilizo el siguiente código:Obtener imagen Uri + miniatura de la imagen tomada con la cámara en Android

void getPhoto() { 
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(intent, TAKE_PICTURE); 
    } 

Después de que adquiero la foto con:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == TAKE_PICTURE) { 
      Bitmap photo = (Bitmap) data.getExtras().get("data"); 
      ImageView photoView = (ImageView) findViewById(R.id.photoId); 
      photoView.setImageBitmap(photo); 
      } 
     } 

Pero con este código no importa lo que hago solo me dan una miniatura de la foto que hice - mi La pregunta es ¿cómo puedo obtener el Uri de la foto recién hecha para poder trabajar no con la miniatura sino con la imagen original?

Ps. De hecho, necesito la miniatura de la foto, pero también necesito el Uri de la foto original.

Respuesta

4

Puse mi propio URI con la intención de decirle dónde guardar, luego sabes dónde está, no estoy seguro de que exista alguna otra forma. Crea algunos campos para tu archivo.

private String imagePath = "/sdcard/Camera/test.jpg"; 
private File originalFile; 

A continuación, inicialice el archivo.

originalFile = new File(imagePath); 

Ahora inicie la aplicación de la cámara con la intención, pasando el URI como un extra.

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    Uri outputFileUri = Uri.fromFile(originalFile); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
    startActivityForResult(intent, RESULT_CAPTURE_IMAGE); 

En el onActivityResult() extraer el URI

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      if (requestCode == RESULT_CAPTURE_IMAGE && resultCode == Activity.RESULT_OK) { 
     mBitmap = BitmapFactory.decodeFile(originalImagePath, BitmapFactoryOptions); //set whatever bitmap options you need. 

lo que ahora puede construir un mapa de bits utilizando CreateBitmap o utilizar la ruta del archivo para lo que necesite

+3

también que no es una buena práctica para codificar el uri con/sdcard /, debe usar getter para las variables de entorno. –

+0

Pero la intención de los datos es nula, no se puede recuperar la miniatura. Solo puedes crearlo a partir de una foto de tamaño completo –

Cuestiones relacionadas