Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di...

49
ANDROID E OPEN CV Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine +

Transcript of Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di...

Page 1: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Livello Applicativo

Page 14: Laboratorio di Elaborazione e Trasmissione Video Marco Vernier – Niki Martinel Dipartimento di Matematica e Informatica Università degli studi di Udine.

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.

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.

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.

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.

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.

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.

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.

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.

• 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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Fine

La prossima lezione:Introduzione alle OpenCVOpenCV per AndroidAlcuni esempi (video)