Upload
joinpad-company
View
225
Download
8
Embed Size (px)
DESCRIPTION
Introduzione step by step all'ambiente di sviluppo per gli smart glasses Epson Moverio BT-200. Presentazione realizzata da Niccolò Mangiarotti in occasione dell'hackathon del 17 ottobre in H-Farm.
Citation preview
MOVERIO BT-200
A NEW WAY OF SEEING THE WORLD
GLI UNICI SMART GLASS PER A/R
www.joinpad.net
Moverio BT-200 SDKIntroduzione all’ambiente di sviluppo
TUTOR: Niccolò MangiarottiAR Developer [email protected]
00
www.joinpad.net
INTRODUZIONE
01
Creiamo un nuovo Android Application Project.
Sui Moverio BT-200 è montato Android 4.0.3 IceCreamSandwich; impostare quindi correttamente il Minimum Required SDK ed il Target SDK.
www.joinpad.net
02
Una volta creato il progetto per includere l’SDK Moverio è sufficiente copiare la libreria BT200Ctrl.jar nella cartella libs…
www.joinpad.net
03
…ed aggiungere al manifest la permission per modificare le impostazioni audio del device (nel caso si intenda utilizzare l’API per la gestione dell’audio).
www.joinpad.net
04
Eseguire un deploy del nostro progetto Hello World sui Moverio BT-200 non è un’operazione differente da un normale deploy di un progetto android su di un normale device
www.joinpad.net
05
www.joinpad.net
2D/3D Switching
06
Passiamo ora all’utilizzo dell’SDK Moverio partendo dall’API più interessante, il Display 2D/3D Switching, mediante la quale è possibile implementare la visione stereoscopica.
Display 2D/3D SwitchingClass :DisplayControlFunction :setModeSummary :Switch BT-200 display modePrototype :int setMode(int displayMode,boolean toast)Argument :Display Mode Number DISPLAY_MODE_2D,
DISPLAY_MODE_3Dtoast true(Display), false(not display)
Return Value:result 0(success), other(error value)
www.joinpad.net
07
Possiamo provare velocemente il funzionamento di questa API impostando la visione 3D immediatamente.
www.joinpad.net
Come è possibile notare come risultato di questa operazione la nostra area di lavoro è ora estesa su entrambe le lenti invece di essere riprodotta in mirroring.
08
In questo esempio la visualizzazione è ovviamente disturbata, infatti sull’occhio sinistro vedremo il nostro testo Hello World e l’actionbar con il titolo del’app mentre sull’occhio destro vediamo una actionbar vuota ed uno sfondo bianco. Questo ci da però l’idea di come gestiremo il 3D: semplicemente la nostra view dovrà essere divisa verticalmente in 2 metà, ciascuna delle quali corrisponderà ad un occhio.
www.joinpad.net
09
Proviamo ora a modificare il nostro esempio per utilizzare correttamente questa feature, come prima cosa dividiamo la nostra view in 2 metà di uguale dimensione.
www.joinpad.net
10
Proviamo ora a modificare il nostro esempio per utilizzare correttamente questa feature, come prima cosa dividiamo la nostra view in 2 metà di uguale dimensione.
www.joinpad.net
11
Modifichiamo ora il nostro layout.
www.joinpad.net
• Rimuoviamo l’actionbar dell’app modificando il manifest
• Rimuoviamo il menu di sistema
• Impostiamo uno sfondo trasparente (corrispondente al colore NERO per i Moverio BT-200)
12
www.joinpad.net
• Aggiungiamo un semplice asset centrandolo in entrambe le metà della nostra root view
13
Effettuando il deploy dell’app il risultato sarà questo:
www.joinpad.net
14
Si nota subito come il nostro asset sia stato “stretcchato”, ne riduciamo quindi la larghezza della metà per riprodurre l’aspectratio originale:
www.joinpad.net
15
Creiamo ora due semplici animazioni leggermente differenti l’una dall’altra…
www.joinpad.net
16
…ed applicandole ai nostri due widget possiamo simulare un effetto di avvicinamento/allontanamento in stereoscopia del nostro asset:
www.joinpad.net
17
È possibile ottenere la stereoscopia anche utilizzando immagini fotografate in stereoscopia cosi come video o ambienti tridimensionali.
www.joinpad.net
18
È possibile ottenere la stereoscopia anche utilizzando immagini fotografate in stereoscopia cosi come video o ambienti tridimensionali.
www.joinpad.net
19
È possibile ottenere la stereoscopia anche utilizzando immagini fotografate in stereoscopia cosi come video o ambienti tridimensionali.
www.joinpad.net
20
www.joinpad.net
SENSOR SWITCHING
21
Passiamo ora all’API di switch dei sensori che permette di abiitarealternativamente i sensori di movimento dell’HeadSet e del Controller
Switch sensor (Controller/Headset)Class :SensorControlFunction :setModeSummary :Switch BT-200 sensor modePrototype :int setMode(int sensorMode)Argument :Sensor Mode Number
SENSOR_MODE_CONTROLLER(Controller), SENSOR_MODE_HEADSET(Headset)
Return Value:result 0(success), other(error value)
www.joinpad.net
22
L’utilizzo dell’API è come per la precedente molto semplice
www.joinpad.net
23
Mediante una semplice Activity configurata per la gestione dei sensori è possibile verificare con un semplice output a video come abilitando i sensori dell’HeadSet o del Controller il vettore di rotazione si modifica muovendo uno oppure l’altro device
www.joinpad.net
24
www.joinpad.net
ALTRE API DI CONTROLLO
25
Le successive API permettono di controllare componenti dei Moverio BT-200 quali la luminosità, l’accensione/spegnimento del display e l’accensione/spegnimento dell’audio del device
Il funzionameto di queste API è molto semplice ed essenziale
www.joinpad.net
26
L’API di accensione/spegnimento del’audio del device
Set ON/OFF for Audio MuteClass :AudioControlFunction :setMuteSummary :Set BT-200 Audio mute ON/OFFPrototype :int setMute(boolean mute)Argument :mute ON(TRUE), OFF(FALSE)Return Value:result 0(success), other(error value)
www.joinpad.net
27
L’implementazione è molto semplice
www.joinpad.net
28
L’API di accensione/spegnimento del display
Class :DisplayControlFunction :setMuteSummary :Set BT-200 display mute ON/OFFPrototype :int setMute(boolean mute)Argument :mute ON(TRUE), OFF(FALSE)Return Value:result 0(success), other(error value)
www.joinpad.net
29
Anche in questo caso l’implementazione è molto semplice, il componente che espone questa api è il DisplayControl, lo stesso che abbiamo già utilizzato per eseguire lo switch 2D/3D
www.joinpad.net
30
L’API di settaggio del livello di luminosità del display
Setting Display BrightnessClass :DisplayControlFunction :setBacklightSummary :Set BT-200 display brightnessPrototype :int setBacklight(int backlight)Argument :Display Brightness 0-20Return Value:result 0(success), other(error value)
www.joinpad.net
31
In questo caso dato che è possibile impostare un set di valori (da 0 a 20) invece di un toggle utilizzeremo un seekbar
www.joinpad.net
32
L’API di lettura del livello di luminosità del display
Getting Display BrightnessClass :DisplayControlFunction :getBacklightSummary :Get BT-200 display brightness valuePrototype :int getBacklight()Argument :noneReturn Value:Brightness value 0-20(success), other(error value)
www.joinpad.net
MOVERIO BT-200
A NEW WAY OF SEEING THE WORLD
Carla Conca Business Manager Visual Instruments
Epson Italia
GLI UNICI SMART GLASS PER A/R