Riprendiamo quanto visto nella parte 1 del tutorial ed aggiungiamo altri elementi alla nostra app Android.
Vogliamo aggiungere nella nostra app Android un secondo grande discorso del cinema, l'utente deciderà quale ascoltare cliccando una delle due immagini corrispondeti.
Inseriremo una logica di controllo del tipo
if-then-else (fondamentale in qualsiasi linguaggio di programmazione) per mettere in pausa i discorsi ed evitare che si accavallino tra di loro...
Per prima cosa andiamo a creare una copia del nostro progetto, per farlo basta aprire l'app che avevamo creato e scegliere dal menu "Project" - "Save project as..."
Dandogli il nome "GrandiDiscorsi_2" (ricordate che non si possono inserire spazi nei nomi dei progetti creati con App Inventor)
Aggiungiamo un "HorizontalArrangement" per allineare i componenti in orizzontale, inseriamo un secondo componente "Button" su cui caricheremo una nuova immagine di sfondo e poi un componente "Image" su cui caricheremo un immagine di una pellicola "generica", e per finire un altro componente "Player"
L'interfaccia utente finita apparirà così:
La prima miglioria che inseriremo alla nostra app sarà la possibilità di mettere in pausa il discorso (quello di Tony Amato è di oltre 4 minuti!)
Per farlo ci portiamo nel blocks editor e modifichiamo le azioni da fare all'evento "when Button1.Click",
in pratica dobbiamo usare la proprietà del componente "Player" chiamata "IsPlaying", questa proprietà ritorna vero (true) se il componente Player è in esecuzione, e falso se non lo è.
Aggiungiamo da palette control il costrutto logico IF-THEN:
Cosa fa questo blocco?
In pratica fa un controllo logico nel blocco che inseriamo dopo l'IF
Quindi esegue le azioni programmate nel blocco THEN se il controllo logico è vero
altrimenti fa le azioni programmate nel blocco ELSE se il controllo logico è falso
Quindi durante l'esecuzione della nostra app solo uno dei due blocchi sotto il THEN o l'ELSE verrà eseguito a seconda del risultato del controllo nel blocco IF.
Nella nostra app vogliamo usare questo costrutto per mettere in pausa il discorso quando l'utente clicca sul bottone corrispondente, e farlo ripartire se era stato fermato.
Il blocco da programmare sarà quindi il seguente:
In pratica controllo (IF) se il discorso è in esecuzione (il valore che mi torna la proprietà Player_Tony.IsPlaying sarà "true" se il file mp3 è in esecuzione "false" in caso contrario)
Quindi se il valore è TRUE eseguo il blocco nel THEN
; in questo caso metto in pausa il discorso (eseguendo il metodo call Player_Tony.Pause)
Se il valore è FALSE eseguo il blocco nell'ELSE
quindi in questo caso faccio ripartire il discorso (eseguendo il metodo call Player_Tony.Start)
In pratica ho realizzato un pulsante che mi alternerà il play e lo stop del discorso nella mia app...
Ora per terminare l'applicazione devo semplicemente programmare allo stesso modo l'esecuzione del file audio mp3 relativo al secondo discorso (quello di Rocky Balboa) i blocchi da usare saranno gli stessi con i soli nomi dei componenti e dei suoni diversi come vedete qui sotto:
Notate come abbia inserito una chiamata al metodo "call Player_Rocky.pause" quando viene cliccato il button di Tony Amato e "call Player_Tony.pause" quando viene cliccato il button di Rocky Balboa.
Faccio questo per fare in modo che al massimo un solo discorso alla volta venga eseguito nel nostro smartphone, se non inseriamo la chiamata al metodo pause dell'altro player avremmo due player in esecuzione contemporaneamente ed i due discorsi si accavallerebbero tra di loro rendendo il nostro audio incomprensibile!!!
Per finire vi consiglio di ripassare tutto quanto detto finora visualizzando il mio video tutorial su YouTube:
Potete scaricare il sorgente dell'app così modificata cliccando qui sotto
Grandi Discorsi 2.aia
Per ogni commento dubbio o domanda usate i commenti qui sotto o i commenti di YouTube.
Ok,grazie per il tutorial,ma quand'è che ci insegni a fare cose più complesse tipo un gioco alla angry birds?
RispondiEliminaCiao, quando facevo video troppo "avanzati" la gente mi chiedeva video più semplici...
Eliminaovviamente è difficile accontentare tutti, io ci provo, portate pazienza con AI2 volevo ripartire un pò dalle basi per poi realizzare tutorial sempre più complessi, ti consiglio di guardare il mio canale YouTube dove ci sono più tutorial di quelli che vedi nel blog (non sempre faccio a tempo a fare il video e subito dopo il post sul blog di approfondimento)
xD
EliminaHai perfettamente ragione, difatti partendo dalle basi; io mi sto iniziando ad appassionare dato che la complessità dei tutorial cresce passo dopo passo.
EliminaGrazie, la seguo con molto interesse.
RispondiEliminaNel mio caso ho 3 voci..c'è un comando ho visto: 'other player do' ma non ho pratica, mi può aiutare?
Grazie