Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Google Drive: le basi

Google Drive è il servizio di cloud storage di Google: ecco le basi per integrarne le funzionalità all'interno di un'app Android.
Google Drive è il servizio di cloud storage di Google: ecco le basi per integrarne le funzionalità all'interno di un'app Android.
Link copiato negli appunti

Google Drive è un servizio relativamente giovane, nato nel 2012, che rappresenta uno dei meccanismi di storage su cloud più utilizzati su Internet. Assolve
contemporaneamente i ruoli di file hosting e file sharing nonché di editor collaborativo di documenti. Quest'ultima qualità proviene dall'assorbimento di
Google Docs, una versione SaaS di un pacchetto simil-Office per la gestione di documenti, fogli di calcolo e presentazioni in rete.

Gli utenti che possiedono un account GMail possono fare uso anche di Drive, accedendo alla pagina ufficiale del servizio direttamente dal proprio browser.

Appena effettuato l’accesso, in alto a sinistra si può notare una coppia di pulsanti, qui visibili in figura.

Quello a sinistra, con etichetta Create, permette di avviare direttamente l'editor di creazione dei documenti, mentre l'altro, denotato da una
freccia rivolta verso l’alto, è il comando di upload per salvare on line file e cartelle presenti sul proprio computer.

Le potenzialità del servizio si sono inoltre estese molto con l'affermazione vastissima dei dispositivi mobili, in particolare quelli basati sul sistema
operativo Android, ai quali Drive offre una naturale controparte per il backup dei propri documenti, foto, video e dati.

In questo articolo impareremo ad interagire con Google Drive dalle applicazioni Android. Prenderemo contatto con i concetti fondamentali e, nella prossima
lezione, li sperimenteremo nel corso di un esempio in cui caricheremo dei contenuti nello spazio di proprietà di un nostro account.

Prerequisiti

Come gli altri articoli di questa guida, gli argomenti che tratteremo di seguito si basano su quanto appreso finora.

Pertanto, i concetti da padroneggiare con sicurezza sono:

  • Google Play Services: uno strato software presente in ogni dispositivo Android finalizzato a svolgere il ruolo di mediatore tra
    l'applicazione da noi sviluppata ed i servizi Google. Per poterli sfruttare è necessario che il nostro progetto includa la libreria la cui installazione è
    stata mostrata in un capitolo precedente.

    Altrettanto fondamentale è specificare, nel nodo <application> del file manifest, i metadata che dichiarino la versione dei Google Play Services:

    <meta-data android:name="com.google.android.gms.version"
                android:value="@integer/google_play_services_version" />
  • Google Developers Console: è il pannello web che il programmatore deve usare per creare progetti Google di riferimento per le
    applicazioni Android da realizzare. La Console è ricca di funzionalità; quelle di più immediata utilità permettono la definizione di un progetto Google,
    l'attivazione delle API da utilizzare (in questo caso quelle relative a Google Drive) e la creazione di opportune chiavi di accesso;
  • GoogleApiClient: la classe che rappresenta l'entry point alle API Google. Per suo tramite stabiliremo una connessione con i Google Play
    Services e veicoleremo le richieste verso i servizi remoti di Google.

Classi di Drive

Interagire con Drive mediante API Android non si discosta molto, a livello concettuale, dall'uso comune che ne fa l'utente via browser.

Consiste in generale nel trattare file e cartelle, che si possono creare, cancellare e/o modificare. I comandi utilizzati passeranno per metodi di comuni
classi Java ed il loro effetto si rifletterà direttamente sulle risorse remote.

A livello di SDK, esiste un'interfaccia, DriveResource, che rappresenta la generica risorsa di Drive. La sua implementazione dà vita sia
alla classe DriveFolder, nel caso di una cartella, che a DriveFile, rappresentante il file vero e proprio.

Sia file che cartelle, sono connotati da alcuni aspetti:

  • id: ogni file o cartella ne ha uno. Questo è il vero identificativo della risorsa, più del nome stesso. Il tipo di dato che lo
    contraddistingue è la stringa;
  • metadata: consistono negli attributi che caratterizzano una risorsa. Prima di tutto il title, che corrisponde al nome del file,
    poi il MIME type, il tipo di dato contenuto al suo interno. Infine ci sono dei flag che indicano se il file è trashed, starred o editable.

DriveResource prevede i metodi getId() e getMetadata() per avere accesso alle caratteristiche appena descritte.

Nel caso dei file, buona parte del lavoro consisterà nel gestirne i contenuti. Le operazioni cui possono essere sottoposti sono quindi quelle classiche: lettura, modifica, annullamento delle operazioni effettuate (discard) e salvataggio delle modifiche (commit).

Tipologie di operazioni

Le operazioni richieste al servizio Drive causeranno alcuni ritardi, ovvero tempi di attesa quasi impercettibili per l'utente, ma indubbiamente notevoli
per Android.

Queste situazioni possono essere trattate in due modalità differenti:

  • asincrona: la funzionalità richiesta viene attivata da un metodo non bloccante (il codice non resta in attesa che l'operazione sia
    conclusa) e la disponibilità del risultato viene notificata ad un oggetto listener.

    Ad esempio, quando si vuole chiedere a Drive di creare un file nello storage si può usare la seguente invocazione:

    Drive.DriveApi.getRootFolder(...).createFile(....).setResultCallback(fileCallback);

    A creazione del file completata, viene invocato il metodo onResult dell'oggetto fileCallback il quale conterrà le operazioni da compiere sul file appena
    creato:

    private ResultCallback fileCallback = new ResultCallback() {
        @Override
        public void onResult(DriveFolder.DriveFileResult result)
           {
               /*
                * Operazioni conseguenti alla creazione del file
                */
           }
    };
  • sincrona: in alcuni casi può non essere comodo il meccanismo del listener. Se, immaginiamo, si vogliono utilizzare i risultati
    dell'elaborazione nelle righe di codice immediatamente successive, può risultare più agevole eseguire una chiamata bloccante:

    DriveFile file = ...
        DriveApi.ContentsResult contentsResult = file.openContents(...).await();

    Il metodo await() è quello che blocca il flusso di esecuzione, rimanendo in attesa del completamento dell'operazione richiesta, che in questo caso consiste
    nell'accesso ai contenuti di un file.

    L'unica accortezza necessaria da usare con le operazioni bloccanti è quella di eseguirle in un worker thread per evitare inutili
    rallentamenti del componente Android. A tale scopo va benissimo il contributo offerto dalla classe AsyncTask.

L'esempio della prossima lezione offre l'opportunità di osservare al lavoro sia chiamate asincrone che sincrone. L'esperienza è utile in quanto tali
eventualità si presentano non solo nell'interazione con Drive, ma un po' in tutte le API Google.

Ti consigliamo anche