Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
HTML5 Sensitivo
Search
Caio Gondim
November 01, 2012
390
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
HTML5 Sensitivo
Caio Gondim
November 01, 2012
More Decks by Caio Gondim
See All by Caio Gondim
256 shades of R, G and B
caiogondim
1
140
AB Test
caiogondim
9
710
Designing JS APis
caiogondim
3
280
CSS Layout: O ontem, o hoje e o depois
caiogondim
1
160
Git lightning talk
caiogondim
5
310
Sublime Text 2 pro tips
caiogondim
21
2.5k
Brazil
caiogondim
2
340
HTML5 - Seu navegador não é mais o mesmo
caiogondim
5
280
História dos Sistemas Operacionais de Videogames
caiogondim
3
920
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
Navigating Team Friction
lara
192
16k
Optimising Largest Contentful Paint
csswizardry
37
4k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
A Soul's Torment
seathinner
7
3.6k
How GitHub (no longer) Works
holman
316
150k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
690
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
520
How to make the Groovebox
asonas
2
2.4k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
350
Transcript
@almirfilho @caio_gondim @loopinfinito
HTML5 Sensitivo Seu browser + LSD
Acesso a dispositivos
APIs do Além
APIs do Além Acelerômetro
APIs do Além Acelerômetro Geolocalização
APIs do Além Acelerômetro Geolocalização Câmera
APIs do Além Acelerômetro Geolocalização Câmera Microfone
@caio_gondim @almirfilho
@loopinfinito
loopinfinito.com.br
APIs do Além Acelerômetro Geolocalização Câmera Microfone
Acelerômetro
Orientação & Aceleração
Sistema de Coordenadas
y Sistema de Coordenadas
y x Sistema de Coordenadas
z y x Sistema de Coordenadas
Rotação z y x
Rotação alpha z y x
Rotação z y x beta
Rotação z y x gamma
API
API DeviceOrientationEvent DeviceMotionEvent
Orientação DeviceOrientationEvent
Obtém a Rotação dos eixos
z y x Obtém a Rotação dos eixos
z y x gamma beta alpha Obtém a Rotação dos
eixos
em graus gamma beta alpha
z alpha = 0º
z alpha = 25º
x beta = 0º
x beta = 30º
y gamma = 0º
y gamma = 45º
JavaScript por favor!
if( window.DeviceOrientationEvent != undefined ){ // suporte garantido =) }
Teste o suporte
window.addEventListener( ‘deviceorientation’, function( eventData ){ // faça acontecer } )
Trate o evento
eventData = { alpha: 0.01042012, // graus beta: 11.34221344, //
graus gamma: 27.102012102, // graus absolute: true, ... // propriedades de Event } Dados de deviceorientation
Aceleração DeviceMotionEvent
Obtém dados sobre movimentos físicos em cada eixo
Obtém dados sobre movimentos físicos em cada eixo z y
x
z y x em m/s²
if( window.DeviceMotionEvent != undefined ){ // suporte garantido =) }
Teste o suporte
window.addEventListener( ‘devicemotion’, function( eventData ){ // faça acontecer } )
Trate o evento
eventData = { interval: 200, // milisegundos acceleration: { x:
0.1534532, // metro/s² y: 3.9876581, // metro/s² z: 1.0092722 // metro/s² }, accelerationIncludingGravity: { x, y, z }, // idem rotationRate: { alpha, beta, gamma } // orientation ... // propriedades de Event } Dados de devicemotion
DEMO
Suporte Desktop
Suporte Desktop 7 6 (parcial) (parcial)
Suporte Mobile
Suporte Mobile 18 4.2 3.0 12 10 15
Geolocalização Acelerômetro APIs do Além Câmera Microfone
Geolocalização
Posição em relação a superfície do planeta
serviços de mapas redes sociais aplicações e-gov Quem usa?
Localização = Contexto
Localização = Contexto Maior relevância
Busca & Recomendação mais eficazes
Obtendo a Geolocalização Desktop x Móvel
Desktop Posição Localização fixa aproximada
Móvel Posição Localização variável mais exata
API
API navigator.geolocation
if( navigator.geolocation != undefined ){ // suporte garantido =) }
Teste o suporte
// requisitando geolocalização navigator.geolocation.getCurrentPosition( showMap ) // setando o callback
function showMap( position ){ // só alegria } Defina o callback
Dados de .getCurrentPosition position = { timestamp: 307770135, // DOMTimeStamp
coords: { accuracy: 12, // metros latitude: -35.29873363499, // graus longitude: 123.44334887755,// graus altitude: 400.3, // metros (opcional) heading: 45.5, // graus (opcional) speed: 5.4 // m/s (opcional) } }
DEMO
Suporte Desktop
Suporte Desktop 5 3.5 9 5 10.6
Suporte Mobile
Suporte Mobile 18 3.2 2.1 11 7 15
Geolocalização Acelerômetro API’s do Além Câmera Microfone
Câmera
WebRTC
WebRTC Real-Time Communications
API
API Stream Media Capture
API Stream
Stream input <video> MediaStream MediaStream Track video MediaStream Track audio
PeerConection
API Media Capture
// sem prefixos dos vendors if ( navigator.getUserMedia ){ //
câmera, ação! } Teste o suporte
navigator.getUserMedia( { video: true }, sucessoCallback, falhaCallback ) Permissão
None
function sucessoCallback(stream) { var video = document.getElementsByTagName(‘video’)[0] video.autoplay = true
video.src = window.webkitURL.createObjectURL(stream) } Linkando no <video>
Mix com <canvas>
Mix com WebGL
DEMO
Câmera Geolocalização Acelerômetro APIs do Além Microfone
Suporte Desktop
Suporte Desktop 21 6
Suporte Mobile
Suporte Mobile 6
Microfone
API
API Web Speech Media Capture
Web Speech Reconhecimento & Síntese de voz
None
Reconhecimento de voz
None
Síntese de voz
if ( document.createElement( ‘input’ ).webkitSpeech != undefined ) { //
suporte garantido =) } Teste o suporte
<input type=”text” x-webkit-speech /> Marcação HTML
None
None
None
{ }
document .getElementsByTagName( ‘input’ )[0] .addEventListener( ‘webkitspeechchange’, function( eventData ){ //
sua mágica } ) Evento
eventData = { results: [ { confidence: 0.61285305, utterance: ‘praia’
}, ... ], ... // propriedades de Event } Dados de webkitspeechange
DEMO
Suporte Desktop
Suporte Desktop 22*
Captura de Áudio Media Capture
Baixo Nível
Baixa Latência
Guitarra Mic externo ...
// sem prefixos dos vendors if ( navigator.getUserMedia ){ //
we got it! } Teste o suporte
navigator.getUserMedia( { audio: true }, sucessoCallback, falhaCallback ) Permissão
None
Mix com Web Audio
function sucessoCallback( stream ) { var context = new webkitAudioContext()
var mediaStreamSource = context .createMediaStreamSource( stream ) mediaStreamSource.connect( filter1 ) ... filter1.connect( context.destination ) } Callback
DEMO
Suporte Desktop
Suporte Desktop 21 6
Suporte Mobile
Suporte Mobile 6
Câmera Geolocalização Acelerômetro APIs do Além Microfone
None
?
@loopinfinito @almirfilho @caio_gondim
Obrigado!