laboratorio di elaborazione e trasmissione video marco vernier – niki martinel dipartimento di...
TRANSCRIPT
![Page 1: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/1.jpg)
ANDROID E OPEN CV
Laboratorio di Elaborazione e Trasmissione Video
Marco Vernier – Niki MartinelDipartimento di Matematica e Informatica
Università degli studi di Udine
+
![Page 2: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/2.jpg)
Outline
Lezione 1 - Il sistema operativo AndroidCos’è AndroidVantaggi e SvantaggiSviluppare per Android
Lezione 2 - OpenCV librariesCosa sonoCosa si può fare con le OpenCVOpenCV e Android O.S.
![Page 3: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/3.jpg)
Perchè Android
«The best applications for Android are not here yet.
That’s because they’re going to be written by you and many other developers just like you»
Sergey Brin – Google Inc.
![Page 4: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/4.jpg)
Il sistema operativo Android Sistema operativo per dispositivi mobili basato su Linux E’ stato sviluppato inizialmente da Google e poi da Open
Handset Alliance (OHA) – gruppo di aziende es. Google, Intel, Samsung, Motorola
sbroh.wordpress.com
![Page 5: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/5.jpg)
Le versioni di Android I° versione: 22 Ottobre 2008 sotto il nome
di T-Mobile Ora siamo alla versione 4.4 Kit Kat
Wikipedia
![Page 6: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/6.jpg)
Vantaggi di Android O.S E’ un sistema operativo open-source
Chiunque può sviluppare per Android Nessuna politica restrittiva Ogni costruttore (Samsung, Motorola ecc.) può adattarle alle loro
esigenze
E’ facile sviluppare per Android Il linguaggio di programmazione utilizzato è Java Ambiente di sviluppo (SDK e Eclipse) Numerose API (Application Programming Interface) Possibilità di utilizzare uno o più emulatori contemporaneamente (AVD -
Android Virtual Devices)
Architettura basata sul riuso dei componenti Le varie applicazioni possono sfruttare componenti che sono resi
disponibili da altre applicazioni
![Page 7: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/7.jpg)
Altri vantaggi Massima personalizzazione delle applicazioni
Per diversi dispositivi (smartphones – tablet)
Tutte le applicazioni hanno gli stessi diritti Non c’è nessuna differenza tra le applicazioni cosiddette «core» (es.
voice recorder vs my application)
Il ciclo di vita delle applicazioni è gestito automaticamente dal sistema operativo Apertura, chiusura, pausa di una applicazione (vedremo più avanti)
Gestione automatizzata della memoria Ottimizzato per risparmiare risorse
![Page 8: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/8.jpg)
Android Developers
developer.android.com/index.html
![Page 9: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/9.jpg)
L’architettura di Android
![Page 10: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/10.jpg)
Il Kernel Il livello più basso di questo S.O. è’ rappresentato dal kernel
di Linux nella versione 2.6 La necessità era quella di disporre di un vero e proprio sistema operativo
che fornisse gli strumenti di basso livello per la virtualizzazione dell’hardware sottostante attraverso la definizione di diversi driver per la gestione delle diverse periferiche.
![Page 11: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/11.jpg)
Il livello Libraries Questo livello contiene un insieme di librerie native
realizzate in C e C++ che rappresentano il core vero e proprio di Android.
Tra queste Surface Manager ha il compito di gestire le view ovvero ciò di cui
un’interfaccia grafica è composta. Open GL ES librerie adatte per lo sviluppo di applicativi 3D. Media Framework è un componente che permette di gestire i diversi
CODEC per i vari formati di acquisizione e riproduzione audio video. SQLite è una particolare libreria che implementa un DBMS relazionale
caratterizzato dal fatto di essere molto compatto, diretto ecc. SSL libreria per la gestione dei Secure Socket Layer ………
![Page 12: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/12.jpg)
Application Framework Si tratta di un insieme di componenti più di alto livello per
l’esecuzione di funzionalità ben precise. Activity Manager per la gestione delle varie schermate (Activity) Package Manager gestisce il ciclo di vita delle applicazioni Telephony Manager libreria che permette maggiore interazione con le
funzionalità offerte dal dispositivo cellulare (iniziare una chiamata ecc.) Notification Manager mette a disposizione degli strumenti che
l’applicazione può utilizzare per inviare una particolare notifica al dispositivo.
View System come si vedrà più avanti, l’interfaccia grafica di un’applicazione per Android è composta da specializzazioni della classe «View». Perciò questa componente contiene tutti gli strumenti per gestire gli eventi dell’interfaccia grafica.
…………….
![Page 13: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/13.jpg)
Livello Applicativo
![Page 14: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/14.jpg)
I componenti di Android Ogni applicazione è formata da diversi componenti
ACTIVITIES: possono essere definite come la schermata che l’utente visualizza (un contenitore di componenti grafici es. bottoni, etichette ecc.)
SERVICES: sono delle componenti che non vengono visualizzate dall’utente in quanto lavorano e rimangono in background
BROADCAST RECEIVERS: sono componenti che permettono di gestire eventi generati a livello globale (es. evento batteria scarica intercettato da una applicazione)
CONTENT PROVIDER: sono dei repository di informazioni a cui è possibile accedere da diversi componenti attraverso una modalità standard. Più applicazioni condividono e si scambiano gli stessi dati.
![Page 15: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/15.jpg)
Le Intent INTENT: è un meccanismo che descrive un’azione precisa e
che permette alle varie Activity di comunicare tra di loro (sono dei veri e propri messaggi es. «fai una chiamata, apri il navigatore ecc.»)
Activities, services e broadcast receivers vengono attivati tramite i messaggi di Intent
Si può distinguere tra Intent espliciti e impliciti: Intent espliciti: il nome del componente che risponderà è già noto in fase di creazione
dell’Intent stesso○ Intent intent = new Intent(Context, activityToCall.class); // instanzio l’Intent○ startActivity(intent); //avvio la seconda Activity
Intent impliciti: non definiscono il nome del target e vengono utilizzati tipicamente per attivare componenti in altre applicazioni (per es. aprire un browser)○ Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.it"));
![Page 16: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/16.jpg)
Intent Filter Sono un meccanismo che permette ad un’Activity di
dichiarare l’insieme degli intent che è in grado di gestire ovvero esporre al resto del sistema cosa è in grado di fare l’applicazione (es. gestire una chiamata, gli sms ecc.)
Meglio ancora: quando lo sviluppatore crea una nuova applicazione, egli definisce cosa essa sia in grado di fare quest’ultima
Vanno dichiarati nel file Androidmanifest.xml L’AndroidManifest.xml è file xml che si trova nella root del progetto.
Esso permette di dare al dispositivo che esegue l’applicazione informazioni utili sull’applicativo stesso
![Page 17: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/17.jpg)
ActionGli intent filter vengono descritti da della costanti «action» definite dalla classe Intent
![Page 18: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/18.jpg)
Esecuzione di un programma Lo sviluppo di applicazioni Android avviene utilizzando il
linguaggio di programmazione Java Supporto di molti packages (es. java.io, java.lang, java.math etc.)
Normalmente in Java i programmi compilati (file .class) vengono processati dalla Java Virtual Machine (JVM) Compile Once, Run Everywhere
Android utilizza invece la Dalvik Virtual Machine La compilazione del programma genera un archivio .apk (può essere
considerato come un file con estensione .exe) L’archivio .apk contiene diversi file (Androidmanifest.xml, build.xml ecc.)
tra cui un file .dex che non è altro che il risultato della compilazione da parte della DVM
Vantaggi nell’utilizzo della DVM○ Riduzione del 50% della dimensione del programma○ Ottimizzazione delle risorse a favore dei dispositivi mobili con memoria limitata○ Efficace esecuzione di più processi contemporaneamente
![Page 19: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/19.jpg)
Processing delle applicazioni
Obiettivo di Android: realizzare applicazioni in grado di rispondere immediatamente alle azioni dell’utente.
Ogni applicazione va in esecuzione su processi separati, ognuna all’interno di un proprio processo Linux e all’interno di una differente macchina virtuale.
Si parla di «task affinity»: tutte le attività di una applicazione hanno la stessa affinità quindi vengono eseguite nello stesso task Con dei specifici FLAG è possibile avviare una attività dell’applicazione
su uno stack diverso da quello di appartenenza A volte si dice che l’esecuzione di una attività di un diverso applicativo
appartiene allo stesso task○ Es. scelta di un contatto da inviare tramite Bluetooth
![Page 20: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/20.jpg)
Ciclo di vita delle applicazioni ACTIVITY: rappresenta una possibile interazione dell’utente
con l’applicazione e può essere associata al concetto di schermata. Schermata che contiene componenti grafici (bottoni, testi ecc.)
Ogni activity può assumere diversi stati: ACTIVE: l’Activity è in cima allo stack, è visibile e ha il focus. E’ quella
che riceve gli eventi da parte dell’utente PAUSED: fa riferimento ad Activity non attive (non sensibile alle
interazioni degli utenti) ma ancora visibili per la trasparenza di quelle superiori o perché queste non occupano tutto lo spazio a disposizione.
STOPPED: si riferisce ad Activity non attive ne visibili. E’ tra le prime candidate ad essere eliminata.
INACTIVE: si trova in questo stato quando viene eliminata oppure prima di essere creata.
![Page 21: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/21.jpg)
I metodi di «Callback» I passaggi di stato (Active-Stopped) tra un’activity ed un’altra
sono descritti da dei metodi cosiddetti di callback
![Page 22: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/22.jpg)
• onCreate(): primo metodo ad essere chiamato. Significa che l’applicazione esiste.
• onStart(): l’applicazione viene visualizzata.
• onResume(): l’applicazione è in cima alla stack e prende il focus.
• RUNNING: se onResume() termina con successo l’applicazione entra nello stato di RUNNING.
• onPause(): viene invocato per esempio quando viene premuto il tasto back. L’activity non è più visibile (insensibile agli input da parte dell’utente).
• onStop(): viene invocato prima del metodo onDestroy() che elimina completamente l’applicazione.
• onRestart(): viene invocato per ripristinare l’applicazione quando si trova nello stato di STOP.
• onDestroy(): viene invocato per eliminare l’applicazione.
![Page 23: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/23.jpg)
Developing for Android L’SDK (Software Development Kit) di Android offre una
moltitudine di API e di strumenti utili per lo sviluppo di qualsiasi tipo di applicativo sia per smartphone che per tablet.
Dalla sezione «DevelopTraining» del sito developer.android è possibile scaricare l’Android SDK (390MB)
![Page 24: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/24.jpg)
Android SDK + Eclipse
L’archivio che si andrà a scaricare contiene: Eclipse + ADT plugin Android SDK Tools Android Platform Tools The latest Android Platform The latest Android system image for the emulator
E’ necessario installare anche la Java Platform JDK che si trova sul sito di Oracle: http://www.oracle.com/technetwork/java/javase/downloads/index.html
Fate attenzione alla versione del S.O. che usate
![Page 25: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/25.jpg)
Vantaggi dell’ADT E’ un utile plugin per la creazione e il debug di Applicazioni
Android
Permette di creare velocemente applicazioni attraverso un wizard Automatizza il processo di creazione delle applicazioni
○ Anziché utilizzare strumenti da linea di comando come per esempio «ant»
Fornisce sia un editor testuale che grafico Per esempio modifico il layout, inserisco il bottone mediante interfaccia
grafica, senza scrivere codice
I file .apk vengono generati automaticamente
![Page 26: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/26.jpg)
Eclipse Environment
Selezionare una directory di lavoro «workspace» dove inserire tutti i progetti
![Page 27: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/27.jpg)
Utilizzo di Eclipse + ADT In questa sessione di laboratorio proveremo a:
1. Importare un progetto esistente
2. Creare un nuovo progetto
3. Studiare la struttura di un progetto Android
4. Vedere le opportunità offerte da Android SDK Manager (installare diversi SDK)
5. Realizzare un Android Virtual Device Manager AVD (new Emulator) personalizzato
6. Eseguire una applicazione, con eventuali modifiche
![Page 28: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/28.jpg)
Import di un progetto esistente File Import Android Existing Android Code Into
Workspace
Scaricare: http://www.marcovernier.it/etvid/HelloAndroid.zip
![Page 29: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/29.jpg)
Creare un nuovo progetto File New Project Android Android Application Project
![Page 30: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/30.jpg)
Informazioni da inserire Application Name (es. MyAndroid) – convenzione: la prima
lettera deve essere in maiuscolo (stessa convenzione di Java) Project Name – viene utilizzato da Eclipse ed è lo stesso
dell’application name Package Name – è buona norma che ciascun file (classe)
appartenga a un package che lo contestualizza all’interno di un progetto o di una funzionalità
Minimum Required SDK – versione minima dell’SDK Target SDK – specifica la versione di Android con cui
l’applicazione dovrà essere compatibile Compile With Theme – (Holo etc.)
Suggerimento – vedi le info sul simbolo «i»
![Page 31: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/31.jpg)
Struttura di un progetto Android su Eclipse src/: contiene i sorgenti della nostra
applicazione
Android x.x/: (librerie e dipendenze)
bin/: contiene l’applicazione una volta compilata (le classi compilate, il file .apk)
libs/: contiene i file di terze parti di cui l’applicazione necessita (es. file .jar)
res/: contiene tutte le risorse dell’applicazione (es. il layout dell’interfaccia grafica)
![Page 32: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/32.jpg)
Ancora sulla struttura AndroidManifest.xml: è un file xml che
descrive come l’applicazione deve essere costruita e quali componenti, servizi permessi possono essere attivati. Contiene informazioni utili ai dispositivi (smartphone, tablet) per gestire l’applicazione e l’interazione con gli altri componenti eventualmente installati.
build.xml & default.properties: sono degli script utilizzati dal tool «ant» per compilare l’applicativo da linea di comando.
![Page 33: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/33.jpg)
Da precisare Qualsiasi operazione che si può fare in Eclipse, può essere
eseguita anche da linea di comando (prompt di MSDOS, Shell di Linux ecc.)
Con Apache Ant per esempio è semplice compilare l’applicazione
Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets
and extension points dependent upon each other.http://ant.apache.org/
![Page 34: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/34.jpg)
In particolare nel manifest file Vengono descritti i componenti dell’applicazione
Viene indicato il package Java utilizzato come identificatore unico
Vengono dichiarati i permessi, accettati dall’utente, affinché l’applicazione possa funzionare (es. Network permissions, Camera permissions etc.)
Viene dichiarato il livello minimo delle API che l’applicazione richiede
Gli intent filters visti in precedenza
…..
![Page 35: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/35.jpg)
Dopo la compilazione Dopo la prima compilazione del programma, nella root del
progetto, viene creata una cartella gen/ Essa conterrà i file generati automaticamente da Eclipse tra cui:
○ Il file R.java che contiene una serie di costanti collegate alle risorse dell’applicazione
![Page 36: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/36.jpg)
La cartella res (resources) La cartella «res» contiene differenti risorse in riferimento ai
diversi tipi di layouts
• /res/drawable immagini• /res/layout layout• /res/menu menu• /res/raw vari tipi di file• /res/value stringhe• /res/xml vari file xml
![Page 37: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/37.jpg)
Designing for multiple screens Quando si progetta per Android bisogna tenere a mente che
esistono diversi dispositivi con differenti risoluzioni. E’ importante perciò realizzare applicazioni che si adattino il più
possibile ai dispositivi esistenti in commercio Una volta: si creavano diversi .apk per i diversi dispositivi Adesso: Android differenzia tra 4 principali categorie di layouts a
seconda della loro diversa densità:
Small Screens 426dp x 320dp Normal Screens 470dp x 320dp Large Screens 640dp x 480dp Xlarge Screens 960dp x 720dp
○ Un dp è equivalente a un pixel fisico su uno schermo da 160 dpi (punti per pollice)○ dp = Density Indipendent Pixel px = dp * (dpi / 160)
![Page 38: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/38.jpg)
Come supportare schermi diversi1. Dichiarare nell’AndroidManifest file attraverso l’elemento
<support-screens> quali schermi sono supportati dalla nostra applicazione
2. Fornire diversi layouts per schermi differenti Creare diverse cartelle nella forma layout-small, layout-large ecc. dove
all’interno ci sarà un file xml che descriverà il tipo di layout Come fa Android a capire quale layout è il migliore? Lo fa
automaticamente a runtime in fase di esecuzione ○ Maggiori info
http://developer.android.com/guide/topics/resources/providing-resources.html#BestMatch
3. Fornire diversi «bitmap drawables» per schermi con diverse densità di pixel (android supporta .png, .jpg, .gif) nel caso di immagini
4. Usare tutte le convenzioni che si utilizzano anche nel web per creare un layout «liquido» (es. usare dp anziché px)
Resources http://developer.android.com/guide/practices/screens_support.html
![Page 39: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/39.jpg)
Esistono diversi tipi di layouts
Resources: http://developer.android.com/guide/topics/ui/declaring-layout.html#CommonLayouts
![Page 40: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/40.jpg)
Android SDK Manager Premendo il pulsante in figura è
possibile avviare l’SDK Manager
Mediante questo tool è possibile installare, aggiornare, rimuovere qualsiasi piattaforma android
E’ possibile installare anche librerie di terze parti o librerie di Google per scopi precisi (es. Google Maps, Google + etc.)
![Page 41: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/41.jpg)
Android Virtual Device Manager
L’ADT di Android mette a disposizione un Android Virtual Device (emulatore) per eseguire in locale (sul PC) le applicazioni senza doverle trasferire nel dispositivo mobile
Premendo il pulsante è possibile avviare il tool che permette la creazione di un emulatore
![Page 42: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/42.jpg)
Vediamo come creare un AVD Le informazioni che andremo ad
inserire saranno:
Nome dell’AVD Tipo di Device con la risoluzione preferita L’SDK Il tipo di CPU Altri parametri per la gestione della
memoria
Sources: http://developer.android.com/tools/devices/index.html
![Page 43: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/43.jpg)
Eseguiamo l’applicazione
![Page 44: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/44.jpg)
Esercizi Modifichiamo il testo della stringa (inserire un altro testo) Modifichiamo il colore della stringa Cambiamo la dimensione della stringa Inseriamo una immagine Inseriamo un bottone
Creiamo prima il bottone all’interno del layout Si noti che il bottone verrà identificato univocamente da un id descritto a
sua volta da una costante all’interno del file R.java L’operazione di cast è necessaria in quanto tale metodo ritorna il
componente ottenuto attraverso un riferimento di tipo «View» che ne rappresenta una generalizzazione
Un bottone deve essere collegato alla vista a cui appartiene Ora aggiungiamo un ascoltatore al bottone per gestire il tipo di evento
desiderato○ Registreremo una implementazione anonima dell’interfaccia
View.OnClickListener() come ascoltatore dell’evento definendo poi l’evento onClick(),
![Page 45: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/45.jpg)
Esercizi 1/2 A questo punto associamo al bottone la funzione di modificare il
testo nella MainActivity con una stringa a nostro piacere Ora vediamo come inserire una nuova Activity
Creiamo un file SecondActivity.java e lo inseriamo all’interno del nostro package di riferimento (New class nome classe)
Estendiamo la classe alla sovraclasse Activity in modo tale da ereditare i metodi di callback
Importiamo i vari package necessari Creiamo un nuovo file di layout (es. secondlayout.xml) e al suo interno
inseriamo una label con una scritta a piacere (il nome del file xml tutto in piccolo !!!)
Ora tornando sulla classe secondScreen settiamo il riferimento al file di layout appena creato
A questo punto dalla classe MainActivity creiamo l’Intent che ci permette di avviare la seconda schermata○ Intent intent = new Intent(this, secondScreen.class);○ startActivity(intent); da associare all’evento onClick() del pulsante
Proviamo ad eseguire il programma
![Page 46: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/46.jpg)
Cosa ci siamo dimenticati? Di modificare il file AndroidManifest.xml Infatti dobbiamo dichiarare la nuova Activity appena creata
![Page 47: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/47.jpg)
Esercizi 2/2 Ora proviamo ad abilitare la videocamera del nostro
dispositivo attraverso un bottone che inseriremo nella seconda schermata
Suggerimento: utilizziamo le «action» Si parla di nuovo di Intent esplicite quando si intende far comunicare
attività della stessa applicazione, già note in fase di sviluppo L’avvio della camera avviene tramite la chiamata alla action
«android.media.action.IMAGE_CAPTURE»
![Page 48: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/48.jpg)
Fine
La prossima lezione:Introduzione alle OpenCVOpenCV per AndroidAlcuni esempi (video)
![Page 49: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb72497959361e8d9053/html5/thumbnails/49.jpg)
Resources http://developer.android.com/index.html
http://www.eclipse.org/
http://www.androidiani.com/
http://teyvoniathomas.com/index.php/projects/56-opencv-on-android.html