ivano brogonzoli why_mca

29
Applicazioni Augmented- Reality ready su piattaforma Android Ivano Brogonzoli

Upload: ivano-brogonzoli

Post on 22-May-2015

985 views

Category:

Technology


3 download

DESCRIPTION

My presentation on AR at WhyMCA 2010

TRANSCRIPT

Page 1: Ivano brogonzoli why_mca

Applicazioni Augmented-Reality ready su piattaforma Android

Ivano Brogonzoli

Page 2: Ivano brogonzoli why_mca

Mi presento...

Ivano Brogonzoli

Mobile Sw Engineer

Funambol http://www.funambol.com

Open source mobile cloud sync for billions of connected devices!! Sync' Em All!!

[email protected]

Page 3: Ivano brogonzoli why_mca

IntroduzioneDefinizione di AR• Da http://it.wikipedia.org/wiki/Augmented_reality

La realtà aumentata (in inglese augmented reality, abbreviato AR) è la sovrapposizione di livelli informativi (elementi virtuali e multimediali, dati geolocalizzati etc) all'esperienza reale di tutti i giorni. Gli elementi che "aumentano" la realtà possono essere aggiunti attraverso un device mobile, come un telefonino di ultima generazione, (es. l'iPhone 3GS o un telefono Android), con l'uso di un pc dotato di webcam, con dispositivi di visione (es. occhiali VR), di ascolto (es. auricolari) e di manipolazione (es. guanti VR) che aggiungono informazioni multimediali alla realtà già percepita "in sè". Il sovrapporsi di elementii reali e virtuali crea una "Mixed Reality".

Page 4: Ivano brogonzoli why_mca

IntroduzioneApplicazioni AR• Device di riferimento:

– iPhone– Symbian– Android– Blackberry

• Applicazioni:– AR Browser (Layar - Wikitude) – Social (TagWhat – Google Latitude)– Giochi - Intrattenimento (SpecTrack – Zombie)– Advertising

• Frameworks:– Wikitude (http://www.wikitude.org/)– FLAR – Junaio (http://www.junaio.com/)

Page 5: Ivano brogonzoli why_mca

IntroduzionePiattaforma Android

• Android SDK:– Piattaforma in espansione con un framework aperto– Facilità di sviluppo e integrazione con le funzionalità del

sistema

• Telecamera

• Google Add-ons – GPS, Google Maps, Location …

• Sensori– Accelerometro, bussola, ...

Page 6: Ivano brogonzoli why_mca

TelecameraFrame preview 1/4

• Gestione del flusso di frame su una SurfaceView

• La superficie stessa implementa

android.view.SurfaceHolder.Callback che permette di controllare il display di riferimento e gli stati della superficie (created-changed-destroyed)

• L'oggetto holder controlla ioltre la corretta apertura e chiusura dell'interfaccia sul sensore della telecamera

CameraSurfacePreview

SurfaceHolder.Callback

SurfaceView

Page 7: Ivano brogonzoli why_mca

TelecameraFrame preview 2/4

Page 8: Ivano brogonzoli why_mca

TelecameraFrame preview 3/4

Page 9: Ivano brogonzoli why_mca

TelecameraFrame preview 4/4

Page 10: Ivano brogonzoli why_mca

TelecameraView Overlay 1/3

• Costruzione di una View e degli oggetti da visualizzare sulla preview della telecamera

• Aggiunta della vista allo z-stack

CameraSurfacePreview

View 1

View n

Page 11: Ivano brogonzoli why_mca

TelecameraView Overlay 2/3

Page 12: Ivano brogonzoli why_mca

TelecameraView Overlay 3/3

DEMO

Page 13: Ivano brogonzoli why_mca

TelecameraManipolare i frames

Occorre utilizzare l'interfaccia

android.hardware.Camera.PreviewCallback

e implementare il metodo onPreviewFrame(byte[] b, Camera c);

CameraSurfacePreview

SurfaceHolder.Callback

SurfaceView

PreviewCallback

Page 14: Ivano brogonzoli why_mca

TelecameraSuperfici 3D

• Supporto OpenGL ES 1.0

• android.opengl.GLSurfaceView

• Demo at:

http://www.cyrket.com/p/android/de.offis.magic.core/

Page 15: Ivano brogonzoli why_mca

Telecamera: Performance e stabilità• Performance e Impatto sulla Batteria

– Risoluzione, frequenza e spazio dei colori

– Uso di metodi hidden (Android 2.1) per il miglioramento delle performance (fps) tramite reflection e la diminuzione delle chiamate gc(). Si tratta di invocare il metodo hidden della classe android.hardware.Camera chiamato:

setPreviewCallbackWithBuffer(...)

http://www.users.muohio.edu/brinkmwj/android/

Page 16: Ivano brogonzoli why_mca

Google Maps Add-onLocation e Mappe• Google Add On per la localizzazione

(firma e chiave di accesso)– Activity dedicata:

com.google.android.maps.MapActivity

– Coordinate posizionali com.google.android.maps.GeoPoint

– Vista dedicata: com.google.android.maps.MapView controller associato:com.google.android.maps.MapControll

er

• Sono permessi Overlay di oggetti di tipo:– com.google.android.maps.Overlay

• La piattaforma Android è responsabile di GPS e del lancio di eventi posizionali

MapActivity

MapView GeoPoint

OverlayMapController

Google add on

Android LocationLocationListener

LocationManager Location

Page 17: Ivano brogonzoli why_mca

Sensore GPS: Location

Package android.location.LocationListener

LocationListener

GPSListener

Page 18: Ivano brogonzoli why_mca

Google Maps Add-onMapView 1/3• Controllo puntuale tramite

com.google.android.maps.MapController• Possibilità di visualizzare diversi contesti (Satellite...)• Funazionalità di Zoom• Capacità di gestire Overlay• L'activity che la crea deve estendere

com.google.android.maps.MapActivity– Accede ai Google Maps Service – Necessita permessi INTERNET– firma di deployment o debug nel codice o nel layout della vista– L'elemento “application” del manifest file deve dichiarare<uses-library android:name="com.google.android.maps" />

Page 19: Ivano brogonzoli why_mca

Google Maps Add-onMapView 2/3

Page 20: Ivano brogonzoli why_mca

Google Maps Add-onMapView 3/3

Page 21: Ivano brogonzoli why_mca

Location ed Eventi posizionali

• Alert di sistema:– Da android.location.LocationManager:addProximityAlert (double latitude, double longitude, float

radius, long expiration, PendingIntent intent)

• Alternativa: Calcolo puntuale della distanza con formule note:– Haversine;– Vincenty (più precisa);

Page 22: Ivano brogonzoli why_mca

SensoriBussola• Azimuth: Scostamento dal nord (Sway)• Variazione intorno a y (Surge)• Variazione intorno a z (Heave)

Y

X

0° → 360°

-45° → 45°Z

-45° → 45°

Page 23: Ivano brogonzoli why_mca

SensoriAccelerometro• Accelerazione x (Yaw)• Accelerazione y (Pitch)• Accelerazione z (Roll)

Y

X

Z

Page 24: Ivano brogonzoli why_mca

Sensori

• Elaboriazione dei valori rilevati (android.hardware.SensorEventListener)

SensorEventListener

OrientationListener

Page 25: Ivano brogonzoli why_mca

Sensori

• Attivazione (package android.hardware):

Page 26: Ivano brogonzoli why_mca

SensoriPerformance e stabilità

• Consumo cospicuo di batteria• Attivazione solo durante l'effettivo utilizzo• Limitazione della frequenza di campionamento• Rumore

Page 27: Ivano brogonzoli why_mca

Mettiamo tutto insieme

DEMO

Page 28: Ivano brogonzoli why_mca

Links utili

• Guida Android ufficialehttp://developer.android.com/guide/index.html

• - GPS Location and Mapshttp://www.dymsoft.com/2009/11/calculate-distance-between-

two-geolocations-in-android/

• Games alfrescohttp://gamesalfresco.com/

• Il mio bloghttp://superivomania.blogspot.com/

Page 29: Ivano brogonzoli why_mca

… Grazie dell'attenzione!

Q & A