- Learn
- Guida Android
- Scattare una foto
Scattare una foto
Potrebbe essere utile integrare nelle proprie app Android la capacità di scattare direttamente una foto ed utilizzarla “al volo”. Per farlo sfrutteremo le potenzialità già incluse nel sistema per la consueta logica di “non inventare di nuovo la ruota”.
Il dispositivo non mette solo a disposizione la macchina fotografica in quanto componente hardware ma anche il software e le API di gestione. Scopo di questo capitolo sarà imparare ad aprire dall’app direttamente il programma per scattare la foto ed ottenere come risultato l’immagine acquisita. Il vantaggio di integrare il programma ufficiale per le foto sta nell’avere a disposizione tutta la sua completezza: gestione di zoom, effetti, configurazioni.
Il primo concetto da affrontare è l’uso degli Intent per attivare il software fotografico. Non stiamo affrontando un argomento nuovo, dal momento che gli Intent li abbiamo già usati per invocare l’apertura di un’Activity secondaria in un’app. Avevamo, in quell’occasione, preannunciato l’importanza di questo meccanismo e la sua capacità di recapitare messaggi al di fuori dell’applicazione, a livello di sistema operativo. Adesso è giunto il momento di vederlo in pratica.
L’Intent che useremo richiede l’esecuzione di un’azione a livello globale, definita mediante una costante presente in un ContentProvider di sistema, il MediaStore:
Intent photoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(photoIntent, PHOTO_REQUEST_CODE);
Il metodo utilizzato per avviare l’Intent è startActivityForResult. Si tratta di un meccanismo che permette di ricevere un risultato nella Activity chiamante. Il valore PHOTO_REQUEST_CODE è una costante intera definita nell’Activity stessa e serve solo a fornire un ID della richiesta.
Il risultato – quindi il completamento della fotografia – sarà fruibile all’interno del metodo onActivityResult e sarà reperibile mediante il campo data degli Extras:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==PHOTO_REQUEST_CODE)
{
Bitmap bp = (Bitmap) data.getExtras().get("data");
photo.setImageBitmap(bp);
}
}
Il codice per la gestione dell’evento non fa altro che prelevare l’oggetto Bitmap corrispondente alla foto scattata e posizionarlo all’interno di una ImageView, qui rappresentata dalla variabile photo. Ciò permetterà di vedere la versione rimpicciolita della foto, innestata all’interno del layout.
Se vuoi aggiornamenti su Android, mobile inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Orchestrating Least Privilege
Diogo Mónica, Security Lead per Docker, ci mette in guardia dalla popolarità che i cosiddetti “Container Orchestrator” hanno raggiunto in […]