Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
HTML5 Sensitivo
Search
Caio Gondim
November 01, 2012
5
350
HTML5 Sensitivo
Caio Gondim
November 01, 2012
Tweet
Share
More Decks by Caio Gondim
See All by Caio Gondim
256 shades of R, G and B
caiogondim
1
100
AB Test
caiogondim
9
670
Designing JS APis
caiogondim
3
230
CSS Layout: O ontem, o hoje e o depois
caiogondim
1
130
Git lightning talk
caiogondim
5
280
Sublime Text 2 pro tips
caiogondim
21
2.5k
Brazil
caiogondim
2
310
HTML5 - Seu navegador não é mais o mesmo
caiogondim
5
250
História dos Sistemas Operacionais de Videogames
caiogondim
3
870
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
35
2.7k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.1k
How GitHub (no longer) Works
holman
314
140k
Making Projects Easy
brettharned
116
6.1k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Building Applications with DynamoDB
mza
94
6.3k
Designing for humans not robots
tammielis
253
25k
Speed Design
sergeychernyshev
29
910
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!