ivano brogonzoli why_mca

Post on 22-May-2015

985 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

My presentation on AR at WhyMCA 2010

TRANSCRIPT

Applicazioni Augmented-Reality ready su piattaforma Android

Ivano Brogonzoli

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!!

ivo@funambol.com

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

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/)

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

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

TelecameraFrame preview 2/4

TelecameraFrame preview 3/4

TelecameraFrame preview 4/4

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

TelecameraView Overlay 2/3

TelecameraView Overlay 3/3

DEMO

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

TelecameraSuperfici 3D

• Supporto OpenGL ES 1.0

• android.opengl.GLSurfaceView

• Demo at:

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

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/

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

Sensore GPS: Location

Package android.location.LocationListener

LocationListener

GPSListener

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" />

Google Maps Add-onMapView 2/3

Google Maps Add-onMapView 3/3

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);

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°

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

Y

X

Z

Sensori

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

SensorEventListener

OrientationListener

Sensori

• Attivazione (package android.hardware):

SensoriPerformance e stabilità

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

Mettiamo tutto insieme

DEMO

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/

… Grazie dell'attenzione!

Q & A

top related