Prova this link. Potrebbe aiutarti.
Il link contiene:
esempio per mostrare come creare un selettore di immagine.
public class MainActivity extends Activity {
private Uri mImageCaptureUri;
private ImageView mImageView;
private static final int PICK_FROM_CAMERA = 1;
private static final int PICK_FROM_FILE = 2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final String [] items = new String [] {"From Camera", "From SD Card"};
ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.select_dialog_item, items);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select Image");
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (item == 0) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(Environment.getExternalStorageDirectory(),
"tmp_avatar_" + String.valueOf(System.currentTimeMillis()) + ".jpg");
mImageCaptureUri = Uri.fromFile(file);
try {
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
intent.putExtra("return-data", true);
startActivityForResult(intent, PICK_FROM_CAMERA);
}
catch (Exception e) {
e.printStackTrace();
}
dialog.cancel();
}
else {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Complete action using"), PICK_FROM_FILE);
}
}
});
final AlertDialog dialog = builder.create();
mImageView = (ImageView) findViewById(R.id.iv_pic);
((Button) findViewById(R.id.btn_choose)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK)
return;
Bitmap bitmap = null;
String path = "";
if (requestCode == PICK_FROM_FILE) {
mImageCaptureUri = data.getData();
path = getRealPathFromURI(mImageCaptureUri); // From Gallery
if (path == null)
path = mImageCaptureUri.getPath(); // From File Manager
if (path != null)
bitmap = BitmapFactory.decodeFile(path);
}
else {
path = mImageCaptureUri.getPath();
bitmap = BitmapFactory.decodeFile(path);
}
mImageView.setImageBitmap(bitmap);
}
public String getRealPathFromURI(Uri contentUri) {
String [] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery(contentUri, proj, null, null,null);
if (cursor == null)
return null;
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
}
Il codice dal mio progetto di esempio sopra mostra come creare una finestra di dialogo che mostra due opzioni per selezionare la sorgente di immagini. Il primo è da Camera, dove l'immagine è presa direttamente dalla fotocamera, e il secondo è da immagini salvate su sdcard.
riga 14: Definire due opzioni di origine immagine, dalla fotocamera e dalla scheda SD.
riga 16-48: Impostare la finestra di dialogo di selezione immagine.
riga 22: Se l'utente sceglie di scattare una foto dalla fotocamera, creare l'intenzione di aprire l'app della videocamera con l'azione MediaStore.ACTION_IMAGE_CAPTURE.
riga 23: Creare un file temporaneo per mantenere l'immagine dalla telecamera.
linea 24: Ottenere l'URI del file temporaneo
linea 39: Se l'utente sceglie di selezionare un'immagine dalla scheda SD, avviare l'intento di aprire la finestra di selezione dell'immagine. La finestra di dialogo del selettore di immagini visualizzerà l'elenco delle app File Manager (se presenti) e l'app gallery predefinita.
linea 55: Mostra la finestra di dialogo di selezione immagine.
linea 61: Sostituire il metodo onActivityResult per gestire l'immagine selezionata.
linea 67: Se l'utente seleziona un'immagine dalla scheda SD, supporta l'URI dell'immagine selezionata (linea 68)
linea 69: considera l'utente seleziona l'immagine dalla scheda SD usando l'app della galleria. L'URI dall'app gallery non fornisce il percorso reale all'immagine selezionata, pertanto deve essere risolto sul fornitore di contenuti. Metodo getRealPathFromURI utilizzato per risolvere il percorso reale dall'URI.
riga 71: Se il percorso è nullo, presupporre che l'utente selezioni l'immagine utilizzando l'app Gestione file. L'app File Manager restituisce informazioni diverse rispetto all'app gallery. Per ottenere il percorso reale sull'immagine selezionata, utilizzare il metodo getImagePath dall'URI (riga 72).
linea 75: Ottieni la bitmap.
linea 77: Se l'utente sceglie di scattare una foto dalla telecamera, ottenere il percorso reale del file temporaneo precedentemente definito nella riga 24-25.
linea 78: Ottieni la bitmap.
riga 81: Visualizza la bitmap nella visualizzazione immagine.
Questo è un metodo semplice ed effettuando: http://indyvision.net/ 2010/03/android-using-intents-open-files/ –