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
99
AB Test
caiogondim
9
670
Designing JS APis
caiogondim
3
230
CSS Layout: O ontem, o hoje e o depois
caiogondim
1
120
Git lightning talk
caiogondim
5
270
Sublime Text 2 pro tips
caiogondim
21
2.4k
Brazil
caiogondim
2
310
HTML5 - Seu navegador não é mais o mesmo
caiogondim
5
240
História dos Sistemas Operacionais de Videogames
caiogondim
3
860
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
960
Navigating Team Friction
lara
183
15k
Designing for Performance
lara
604
68k
Practical Orchestrator
shlominoach
186
10k
Making the Leap to Tech Lead
cromwellryan
133
9k
Designing for humans not robots
tammielis
250
25k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
What's in a price? How to price your products and services
michaelherold
244
12k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
BBQ
matthewcrist
85
9.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.2k
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!