Presentazione standard di PowerPoint

Transcript

Presentazione standard di PowerPoint
+
Laboratorio di Elaborazione e Trasmissione Video
Prof. Christian Micheloni – Dott. Marco Vernier
Dipartimento di Matematica e Informatica
Università degli studi di Udine
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
Outline

Lezione 1 - Il sistema operativo Android
 Cos’è Android
 Vantaggi e Svantaggi
 Sviluppare per Android

Lezione 2 - OpenCV libraries
 Cosa sono
 Cosa si può fare con le OpenCV
 OpenCV e Android O.S.
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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.
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
Le versioni di Android


I° versione: 22 Ottobre 2008 sotto il nome
di T-Mobile
Ora siamo alla versione 4.2 Jelly Bean
Wikipedia
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
Android Developers
 developer.android.com/index.html
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
L’architettura di Android
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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.
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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
………
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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.
 …………….
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
Livello Applicativo
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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.
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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);
startActivity(intent); //avvio la seconda Activity
// instanzio l’Intent
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"));
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
Action
Gli intent filter vengono descritti da della costanti «action» definite
dalla classe Intent
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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.
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
I metodi di «Callback»

I passaggi di stato (Active-Stopped) tra un’activity ed un’altra
sono descritti da dei metodi cosiddetti di callback
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
•
•
•
•
•
•
•
•
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.
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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 «DevelopTraining» del sito
developer.android è possibile scaricare l’Android SDK
(390MB)
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
Eclipse Environment

Selezionare una directory di lavoro «workspace» dove inserire tutti i progetti
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
Utilizzo di Eclipse + ADT

In questa sessione di laboratorio proveremo a:
1.
2.
3.
4.
5.
6.
Importare un progetto esistente
Creare un nuovo progetto
Studiare la struttura di un progetto Android
Vedere le opportunità offerte da Android SDK Manager (installare
diversi SDK)
Realizzare un Android Virtual Device Manager AVD (new Emulator)
personalizzato
Eseguire una applicazione, con eventuali modifiche
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
Import di un progetto esistente

File  Import  Android  Existing Android Code Into
Workspace
Scaricare: http://www.marcovernier.it/etvid/HelloAndroid.zip
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013

www.marcovernier.it/etvid/HelloAndroid.zip
Creare un nuovo progetto

File  New  Project  Android  Android Application
Project
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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»
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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)
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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.
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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/
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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

…..
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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)
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
Come supportare schermi diversi
1.
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
○
3.
4.
Maggiori info http://developer.android.com/guide/topics/resources/providingresources.html#BestMatch
Fornire diversi «bitmap drawables» per schermi con diverse
densità di pixel (android supporta .png, .jpg, .gif)  nel caso
di immagini
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
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
Esistono diversi tipi di layouts
Resources: http://developer.android.com/guide/topics/ui/declaring-layout.html#CommonLayouts
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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.)
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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.ht
ml
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
Eseguiamo l’applicazione
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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(),
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
Cosa ci siamo dimenticati?


Di modificare il file AndroidManifest.xml
Infatti dobbiamo dichiarare la nuova Activity appena creata
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
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»
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
Fine
La
prossima lezione:
 Introduzione alle OpenCV
 OpenCV per Android
 Alcuni esempi (video)
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013
Resources

http://developer.android.com/index.html

http://www.eclipse.org/

http://www.androidiani.com/

http://teyvoniathomas.com/index.php/projects/56-opencv-onandroid.html
Comunicazione multimediale e tecnologie dell’informazione - a.a. 2012/2013