Questa guida è orientata a offrire una sintetica panoramica riguardo le principali funzionalità della seconda edizione di MIT App Inventor. Lo scopo di questa trattazione sarà quello di guidare il lettore ad un immediato utilizzo della piattaforma mediante una serie di esempi pratici (tratti per lo più dalla documentazione ufficiale del progetto) che hanno lo scopo di illustrare le...
Setup di MIT App Ivventor
Come il sito ufficiale riporta, la soluzione ideale per il setup (facendo riferimento al sito, Option One - RECOMMENDED) coinvolge l'utilizzo di un dispositivo Android (ad esempio uno smartphone) su cui testare, a mano a mano che le si sviluppano, le app.
Per poter rendere fruibile questa guida anche a chi non fosse dotato di un...
Prima di proseguire, nel corso della prossima lezione, alla realizzazione della nostra prima app con MIT App Inventor, ci proponiamo di comprendere quale sia la struttura logica di una app. Il nostro obiettivo cioè è quello di individuare le sotto-componenti principali che costituiscono una app, evidenziandone le interazioni.
Prendiamo come punto di partenza della nostra analisi la schermata principale di...
Nel corso di questa lezione, ci dedicheremo alla realizzazione della nostra prima app con MIT App Inventor. Si tratta di una app molto semplice che ha lo scopo di introdurre il lettore alle potenzialità di questo ambiente di sviluppo. Rimandiamo, quindi, la teoria alle prossime lezioni e facciamo un tuffo nella pratica. Accediamo dunque per prima cosa alla schermata...
Dopo aver visto, alla lezione precedente, un semplice esempio di una prima App creata con MIT App Inventor, passiamo ad approfondire alcuni aspetti teorici già precedentemente introdotti. Torniamo, cioè, sul "duopolio" di components e behaviors. In questa lezione, più precisamene, ci soffermeremo sulle differenti tipologie di componenti resi disponibili dagli sviluppatori del MIT all'interno della schermata Designer.
Prima di passare...
Dopo aver offerto una rapida panoramica sui componenti di MIT App Inventor, a partire da questa lezione ci occuperemo del funzionamento del pannello Blocks ovvero come gestire i cosidetti behaviors. In pratica ci occuperemo di programmazione visuale, cioè di come creare un programma utilizzando i blocchi colorati di MIT App Inventor.
Eventi
In una precedente lezione, anticipando un po' i tempi,...
In questa nuova lezione della nostra guida a MIT App Inventor vediamo come operare con le stringhe di testo. Anche in questo caso abbiamo a disposizione dei blocchi appositi che prendono il nome di Text Blocks o blocchi di testo.
Per prima cosa vediamo come definire una stringa:
Il blocco contrassegnato dai simboli " e " può contenere qualsiasi carattere: lettere,...
Altri blocchi fondamentali nella programmazione con MIT App Inventor sono i Math Blocks, cioè i blocchi matematici. Attraverso questi blocchi possiamo compitere operazioni matematiche di vario tipo, dalle più semplici (come sottrazioni o addizioni) alle più complesse (logaritmi e radici quadrate).
In questa lezione vedremo i Math Blocks più importanti partendo, ovviamente, dai blocchi numerici (cd. basic number block).
Questo blocco...
Un elemento molto importante nella programmazione, a prescindere dal linguaggio o dall'ambiente utilizzato, sono le variabili. Queste non sono altre che delle porzioni di memoria all'interno delle quali vengono immagazzinate delle informazioni affinchè possano essere utilizzate nella fase di elaborazione del programma. Una caratteristica tipica delle variabili è, appunto, quello di essere "variabili"... cioè di poter cambiare valore nel...
Nel corso di questa lezione prenderemo confidenza con alcuni elementi di grande utilità per la progettazione delle nostre app: in particolare, approfondiremo la nostra conoscenza della categoria Control del pannello Blocks (accessibile dalla scheda Blocks della schermata iniziale). Ci concentreremo cioè sui principali Control blocks.
Per chiarezza espositiva andremo a distinguere i control block che ci accingiamo a esaminare in...
Nella lezione precedente abbiamo visto come gestire il flusso di un'app Android attraverso i control block. Abbiamo visto, più precisamente, come creare dei semplici costrutti condizionali e iterattivi sfruttando la semplicità dell'interfaccia grafica di MIT App Inventor.
In questa lezione vediamo il funzionamento dei logic blocks, o blocchi logici, ovvero:
true
false
not
=
≠
and
or
Come è facile intuire, per chi abbia già delle basi di...
Grazie ai blocchi di MIT App Inventor è possibile gestire delle liste di elementi, si tratta, per chi sa di programazione, di uno strumento analogo alle array.
In parole semplici, una lista è un insieme di elementi contraddistinti da un indice numerico che li identifica all'interno della lista stessa. Il primo elemento ha indice 1 (diversamente da molti linguaggi di...
Gestire il colore di un elemento con MIT App Inventor è davvero molto semplice. Per farlo, ancora una volta, non è necessario scrivere codici o altro ma è sufficiente fare ricorso ai cosidetti color blocks. I blocchi di questa famiglia sono soltanto tre. Vediamoli uno ad uno.
Basic color block
Si tratta del blocco più semplice; è rappresentato da un quadrattino...
Una delle caratteristiche più interessanti di MIT App Inventor è la possibilità, offerta agli utilizzatori, di espandere il linguaggio mediante la definizione di nuovi blocchi (funzionalità) che prendono il nome di procedure.
Una procedura non è altro che un insieme di blocchi nativi che raggruppati godono di una certa autonomia ed assolvono ad una funzione specifica ed, in un certo...
A partire da questa lezione cercheremo di offrire al lettore degli esempi pratici su specifiche tematiche. Lo scopo di questa lezione, nello specifico, è costruire una nuova app che faccia uso di componenti e behavior finalizzati alla realizzazione di una semplice animazione.
In particolare, la nostra app ci consentirà di muovere col dito una sorta di palla (rappresentata da un'immagine...
Fino a questo momento, abbiamo considerato app i cui dati non sono persistenti: ovvero rimangono in memoria soltanto durante l'esecuzione, per poi essere dimenticati. Sulla base delle informazioni prese in esame fino ad ora non sarebbe possibile, ad esempio, tenere traccia degli high scrores di un videogame oppure tenere in memoria le preferenze dell'utente circa determinati servizi.
In questa lezione...
Nel corso di questa lezione, vedremo come utilizzare nella nostra app una API (Application Programming Interface) esterna. Si tratta di una risorsa remota, raggiungibile tramite una connessione di Rete, che assolve ad uno specifico compito e ne restituisce il risultato all'applicazione stessa che lo potrà utilizzare come se l'intero processo fosse stato gestito in loco.
Per assolvere a questo compito...
Nel corso di questa lezione creeremo una app con MIT App Inventor che sarà in grado di regolare il proprio comportamento in funzione delle misure ricevute da sensori.
In particolare, ipotizziamo che il dispositivo su cui sarà eseguita sia dotato di un sensore GPS per il rilevamento della posizione (tale sensore è presente, ad esempio, su quasi tutti gli smartphone...
A conclusione di questa nostra guida allo sviluppo di app con la seconda versione di MIT App Inventor, esaminiamo le modalità tramite cui è possibile condividere le nostre creazioni. Cominciamo da opzioni utili per una condivisione "diretta", ad esempio con amici, per poi valutare come sia possibile invece pubblicare le nostre app su Google Play ovvero portarle a far...
Abbiamo a cuore la tua privacy
Noi e i nostri partner archiviamo e/o accediamo a informazioni su un dispositivo. Cookie, identificatori del dispositivo o analoghi identificatori online (ad es. identificatori basati sull’accesso, identificatori assegnati casualmente, identificatori basati sulla rete) insieme ad altre informazioni (ad es. tipo di browser e informazioni sul browser, lingua, dimensioni dello schermo, tecnologie supportate, ecc.) possono essere archiviati sul o letti dal dispositivo dell’utente per riconoscerlo ogni volta che l’utente si connette a un’app o a un sito web, per una o più finalità qui presentate.
Con il tuo consenso, i tuoi dati possono essere utilizzati per quanto segue: Pubblicità e contenuti personalizzati, misurazione delle prestazioni dei contenuti e degli annunci, ricerche sul pubblico, sviluppo di servizi; Dati di geolocalizzazione precisi e identificazione attraverso la scansione del dispositivo.
I tuoi dati personali verranno trattati e le informazioni dal tuo dispositivo (cookie, identificatori univoci e altri dati del dispositivo) possono essere memorizzate, consultate e condivise con 181 partner, o utilizzate specificamente da questo sito o questa app. Alcuni fornitori potrebbero trattare i tuoi dati personali sulla base dell'interesse legittimo, al quale puoi opporti gestendo le tue opzioni qui sotto. Puoi revocare il tuo consenso in qualsiasi momento facendo clic sul link delle impostazioni sulla privacy situato in fondo alla pagina.
Alcuni partner non chiedono il tuo consenso al trattamento dei tuoi dati, ma fanno affidamento sul loro legittimo interesse commerciale. Guarda il nostro elenco di partner per conoscere gli scopi per cui credono di avere un interesse legittimo e come puoi opporti.
Questi sono i nostri partner pubblicitari che partecipano al Framework di trasparenza e consenso dello IAB, creato per garantire un uso trasparente e corretto dei dati.
Questi fornitori sono registrati su Google, ma non nel Transparency & Consent Framework di IAB Europe.
{"b_dec":{"def":"Rifiuta e chiudi","res":"Rifiuta e chiudi"},"priclt":"\u003Cdiv class=\u0022cl-consent-settings cl-consent-settings--is-hidden\u0022\u003E\u003Cstyle\u003E.cl-consent-settings{position:fixed;left:16px;bottom:calc(28px + var(--__lxG___css_var_privacy_icon_auto, 0px));z-index:100;transition:all 0.15s ease-in-out;transform:translateY(0)}.cl-consent-settings--is-hidden{transform:translateY(70px);opacity:0}.cl-consent-settings__hint{border-radius:4px;background:#282A3C;box-shadow:0 4px 24px 0 rgba(0,0,0,.15);color:#FFFCF2;position:absolute;right:-195px;top:0;bottom:0;margin:auto;height:40px;width:175px;display:flex;align-items:center;justify-content:center;padding:4px 12px;font-size:12px;font-weight:400;line-height:16px;cursor:default;user-select:none;transition:transform 0.3s ease,opacity 0.3s ease;transform:translateX(-22px);opacity:0;pointer-events:none;z-index:-1}.cl-consent-settings__hint::after{content:\u0022\u0022;position:absolute;left:-16px;top:0;bottom:0;margin:auto;width:0;height:0;border:0 solid transparent;border-top-width:12px;border-bottom-width:12px;border-right:16px solid #282A3C}.cl-consent-settings__btn{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:0;border:none;background-color:#4b81e8!important;background-position:center center;background-size:30px 30px;background-repeat:no-repeat;box-shadow:0 0 20px 0 rgba(0,0,0,.35);z-index:70;position:relative;text-decoration:none;cursor:pointer}.cl-consent-settings__btn::before{content:\u0022\u0022;-webkit-mask-image:url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 width=\u002730\u0027 height=\u002730\u0027 viewBox=\u00270 0 30 30\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 d=\u0027M15 2.813C8.28 2.813 2.812 8.28 2.812 15S8.28 27.188 15 27.188c6.72 0 12.188-5.468 12.188-12.188C27.188 8.28 21.72 2.812 15 2.812Zm0 1.874c5.686 0 10.313 4.627 10.313 10.313 0 5.686-4.627 10.313-10.313 10.313-5.686 0-10.313-4.627-10.313-10.313C4.688 9.314 9.314 4.687 15 4.687Zm-1.875 3.75a.937.937 0 1 0 0 1.875.937.937 0 0 0 0-1.874Zm5.156.938a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.812Zm-7.968 2.813a1.875 1.875 0 1 0 0 3.749 1.875 1.875 0 0 0 0-3.75Zm5.624 1.874a.938.938 0 1 0 0 1.876.938.938 0 0 0 0-1.876Zm4.688.938a.938.938 0 1 0 0 1.875.938.938 0 0 0 0-1.875Zm-8.906 2.813a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.813Zm6.562.937a1.406 1.406 0 1 0 0 2.813 1.406 1.406 0 0 0 0-2.813Z\u0027\/%3E%3C\/svg%3E\u0022);mask-image:url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 width=\u002730\u0027 height=\u002730\u0027 viewBox=\u00270 0 30 30\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 d=\u0027M15 2.813C8.28 2.813 2.812 8.28 2.812 15S8.28 27.188 15 27.188c6.72 0 12.188-5.468 12.188-12.188C27.188 8.28 21.72 2.812 15 2.812Zm0 1.874c5.686 0 10.313 4.627 10.313 10.313 0 5.686-4.627 10.313-10.313 10.313-5.686 0-10.313-4.627-10.313-10.313C4.688 9.314 9.314 4.687 15 4.687Zm-1.875 3.75a.937.937 0 1 0 0 1.875.937.937 0 0 0 0-1.874Zm5.156.938a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.812Zm-7.968 2.813a1.875 1.875 0 1 0 0 3.749 1.875 1.875 0 0 0 0-3.75Zm5.624 1.874a.938.938 0 1 0 0 1.876.938.938 0 0 0 0-1.876Zm4.688.938a.938.938 0 1 0 0 1.875.938.938 0 0 0 0-1.875Zm-8.906 2.813a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.813Zm6.562.937a1.406 1.406 0 1 0 0 2.813 1.406 1.406 0 0 0 0-2.813Z\u0027\/%3E%3C\/svg%3E\u0022);background-color:#ffffff!important;mask-repeat:no-repeat;width:30px;height:30px}.cl-consent-settings__btn:hover+.cl-consent-settings__hint{transform:translateX(0);pointer-events:all;opacity:1}.cl-consent-settings__user{width:18px;height:18px;border-radius:50%;padding:0;border:1px solid #fff;background-color:#00AD98;background-image:url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 viewBox=\u00270 0 10 11\u0027 width=\u002710\u0027 height=\u002711\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 stroke=\u0027%23fff\u0027 stroke-width=\u0027.1\u0027 d=\u0027M6.858 6.262A3.3 3.3 0 0 0 8.2 3.597C8.2 1.796 6.764.325 5 .325s-3.2 1.47-3.2 3.272c0 1.094.53 2.07 1.342 2.665A4.67 4.67 0 0 0 .45 10.5v.05h1v-.05c0-2.012 1.585-3.632 3.55-3.632s3.55 1.62 3.55 3.632v.05h1v-.05a4.67 4.67 0 0 0-2.692-4.238ZM5 1.345c1.22 0 2.2 1.002 2.2 2.252s-.98 2.25-2.2 2.25-2.2-1-2.2-2.25.98-2.252 2.2-2.252Z\u0027\/%3E%3C\/svg%3E\u0022);background-position:center center;background-size:9px 10px;background-repeat:no-repeat;z-index:75;position:absolute;top:-2px;right:-8px;text-decoration:none;visibility:hidden}\u003C\/style\u003E\u003Cbutton type=\u0022button\u0022 class=\u0022cl-consent-settings__btn\u0022 onclick=\u0022if(window.__lxG__consent__ !== undefined) {window.__lxG__consent__.showConsent()} else {alert(\u0027This function only for users from European Economic Area (EEA)\u0027)} return false\u0022\u003E\u003Cspan class=\u0022cl-consent-settings__user\u0022\u003E\u003C\/span\u003E\u003C\/button\u003E\u003Cdiv class=\u0022cl-consent-settings__hint\u0022\u003EPrivacy and cookie settings\u003C\/div\u003E\u003C\/div\u003E","pricds":"show_in_the_footer","pricaa":1,"vcnt":181,"_t":{"titles":"Purposes|Purposes (Legitimate Interest)|Features|Special Features|Special Purposes|Scopi|Scopi (Interesse Legittimo)|Caratteristiche|Caratteristiche Speciali|Scopi Speciali","sp3_ret":"Le scelte che fai riguardo agli scopi e alle entità elencati in questo avviso sono salvate per un massimo di %sp3_retention% nei seguenti cookie e variabili di archiviazione locale","ill_pp_ttl":"Esempi di Utilizzo","vndr_dtls_con":"Trattamento dei dati basato sul tuo consenso","vndr_dtls_li":"Trattamento dei dati basato sul legittimo interesse","vndr_dtls_fi":"Trattamento dei dati basato sul tuo consenso o interesse legittimo","cks_strg_dur":"dura %DURATION%","cks_strg_ses":"per la sessione attuale","cks_strg_not_used":"non utilizzato","cks_strg_dur_s":"sec","cks_strg_dur_i":"min","cks_strg_dur_h":"ora(e)","cks_strg_dur_d":"giorno(i)","cks_strg_dur_m":"mese(i)","cks_strg_dur_y":"anno(i)","vr_dts_purl":"URL della politica sulla privacy","vr_dts_dsurl":"URL di divulgazione dell\u0027archiviazione del dispositivo","vr_dts_dsurl_h":"Informazioni aggiuntive su archiviazione e operazioni","vr_dts_clmurl":"URL della richiesta di interessi legittimi","vr_dts_datac":"Categorie di dati","vr_dts_datac_h":"Categorie di dati raccolti in relazione agli scopi","vr_dts_stdret":"Conservazione dei dati standard (giorni)","vr_dts_stdret_h":"Il periodo standard è utilizzato a meno che non sia dichiarato un altro periodo per scopi specifici.","vr_dts_ret":"Conservazione dei dati (giorni)","vr_dts_usecks":"Usa i cookie","vr_dts_usecks_h":"Indica se il fornitore utilizza l\u0027archiviazione dei cookie (sessione o altro). SÌ indica che l\u0027archiviazione dei cookie è utilizzata. NO - l\u0027archiviazione dei cookie non è utilizzata.","vr_dts_usecksy":"Sì","vr_dts_usecksn":"No","vr_dts_cksage":"Età massima del cookie","vr_dts_cksage_h":"Il numero di secondi che rappresenta la durata potenziale più lunga per l\u0027archiviazione dei cookie su un dispositivo. Se un fornitore utilizza più cookie con durate diverse, rappresenta il cookie con la durata più lunga. Un numero negativo o 0 indica l\u0027archiviazione della sessione simile alla specifica Set-Cookie.","vr_dts_cksref":"Aggiornamento cookie","vr_dts_cksref_h":"Indica se i cookie vengono aggiornati dopo essere stati inizialmente impostati. SÌ - indica che il fornitore può aggiornare i cookie. NO - indica che il fornitore non aggiorna i cookie ogni volta che il browser viene ricaricato.","vr_dts_noncks":"Utilizza l\u0027accesso senza cookie","vr_dts_noncks_h":"Indica l\u0027uso da parte del fornitore di archiviazione non-cookie e accesso alle informazioni già memorizzate sul dispositivo di un utente. SÌ - indica che l\u0027accesso senza cookie è utilizzato. NO - indica che l\u0027archiviazione e l\u0027accesso senza cookie alle informazioni già memorizzate sul dispositivo di un utente non vengono utilizzati.","vr_dts_hgetl":"Limite della lunghezza della richiesta HTTP GET (Kbyte)","vr_dts_hgetl_h":"Dimensione massima della richiesta GET in kilobyte per aiutare a diagnosticare i problemi con il passaggio della stringa TC e limitare le stringhe di dimensioni eccessive.","vr_dts_addtnl":"Dati aggiuntivi","vr_dts_legaddr":"Indirizzo completo dell\u0027entità legale","vr_dts_b2bcont":"Dettagli di contatto B2B","vr_dts_terscp":"Ambito territoriale","vr_dts_terscp_h":"Indica le giurisdizioni UE\/SEE\/UK in cui il fornitore opera con TCF. Nota che questo è diverso dalla sede del fornitore.","vr_dts_env":"Ambiente","vr_dts_env_h":"Indica gli ambienti in cui il venditore opera","vr_dts_tserv":"Tipo di servizi","vr_dts_tserv_h":"Indica il tipo di servizi offerti dal venditore","vr_dts_trnsfout":"Trasferimenti internazionali fuori dall\u0027UE\/SEE","vr_dts_trnsfout_h":"Indica le giurisdizioni UE\/SEE\/UK in cui il fornitore opera con TCF. Nota che questo è diverso dalla sede del fornitore.","vr_dts_trnsfmch":"Meccanismi di trasferimento internazionale"}}