Scattare foto… programmando

Imparare a programmare

Spesso nelle nostre app dobbiamo chiedere all’utente di selezionare una foto, per inviarla, modificarla, condividerla, impostarla come foto profilo, e chi più ne ha più ne metta. Ma come facciamo??

Principalmente io ho optato per questa idea: chiedere con una dialog se scegliere una foto dalla galleria o se scattarne una sul momento, e fare di conseguenza. Dopo aver visto quindi nella precedente guida come usare le dialog, oggi vediamo la seconda, mentre in un prossimo futuro pubblicherò anche come scegliere un’immagine dal proprio smartphone.

Visto che il codice è molto breve e semplice, cercheremo di capire come funziona per bene ^^ .

XML

Prima di tutto, nell’xml avremo un’ImageView, che nel codice indicherò con “img”. Se non siete in grado di recuperare nel codice l’ImageView dell’xml, andate nelle guide precedenti.

Java: codice

Iniziamo col richiamare l’intent, il “servizio” che ci permette di scattare foto:

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(intent, 0);

Non dobbiamo inserire nessun permesso perchè l’applicazione non scatta foto, semplicemente “passa la parola” all’applicazione della fotocamera, che provvedera’ poi a passare i dati necessari. Notate come io abbia inserito un codice, “0” (zero). Questo ci servirà per recuperare la foto….

Recuperiamo la foto

…Come? Piazziamoci nell’Activity e sovrascriviamo un metodo:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == 0) {
        if(data != null) {
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            photo = Bitmap.createScaledBitmap(photo, 60, 80, false);
            img.setImageBitmap(photo);
        }
    }
}

Questo è il codice, breve come vi dicevo, ed è il vero cuore. Appena dopo aver sovrascritto il metodo chiamiamo il metodo originale con “super…..”, poi verifichiamo che il codice richiesto è quello usato precedentemente, e che i dati non siano nulli (l’utente non ha scattato la foto). Ed ecco che prendiamo i dati dall’intent della fotocamera, e facciamo il cast a bitmap. Dopodiché scaliamo l’immagine a 60×80 e la settiamo all’ImageView “img”.

Seguiteci anche su Facebook, Google Plus e Twitter, per restare sempre in contatto con noi e con le nostre guide.

Scattare foto… programmando ultima modifica: 2013-08-28T10:00:43+00:00 da Benedetto Nespoli