2011-08-31 21 views
6

Desidero aggiornare un ImageView con un'immagine che creo con la videocamera Android integrata. Io uso il seguente codice:Ottieni immagine Uri + miniatura della foto scattata con fotocamera in Android

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

Dopo che acquisisco 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); 
      } 
     } 

Ma con questo codice, non importa quello che faccio io ho soltanto una miniatura della foto che ho fatto - la mia la domanda è: come posso ottenere l'Uri della foto appena creata per funzionare non con la miniatura ma con l'immagine originale?

Ps. In realtà ho bisogno della miniatura della foto, ma ho bisogno anche dell'URI della foto originale.

risposta

4

Metto il mio URI nell'intento di dirgli dove salvare, quindi sai dove si trova, non è sicuro che ci sia un altro modo. Crea alcuni campi per il tuo file.

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

Quindi inizializzare il file.

originalFile = new File(imagePath); 

Ora avviare l'app Fotocamera con l'intento, passando l'URI come 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); 

Nel onActivityResult() estrarre l'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. 

Così ora è possibile costruire un bitmap utilizzando CreateBitmap o utilizzare il percorso del file per tutto ciò che serve

+3

Inoltre non è buona pratica codificare l'uri con/sdcard /, dovresti usare getter per le variabili d'ambiente. –

+0

Ma l'intento dei dati è nullo, non è possibile recuperare la miniatura. Puoi solo crearlo da una foto a grandezza naturale –

Problemi correlati