Vibration API do W3C

A chegada da HTML5 revolucionou não somente o conceito de se escrever marcação HTML, mas também expandiu radicalmente a própria finalidade da linguagem, conferindo-lhe uma nova missão, qual seja a do desenvolvimento de Aplicações Web.

Assim, é lícito afirmar-se que a HTML5 destina-se à criação de Web Sites essencialmente como fazia a HTML4 e anteriores e também de Aplicações Web ricas e interativas como não era possível com as HTML anteriores.

A era dos dispositivos móveis chegou e com ela a necessidade de aplicações específicas para tais dispositivos.

O W3C na consecução do seu objetivo maior de lutar pela criação de uma Web universal, não hesita em constituir Grupos de Trabalho para estudar e desenvolver novas tecnologias que visam a criar códigos universais.

Uma das áreas que vem experimentando uma movimentação intensa nesse contexto é a das API Web baseadas na JavaScript. Cada vez mais são criadas funcionalidades destinadas a manipular interatividade não só em interfaces de aplicações desktop como aquelas para dispositivos móveis.

Recomendação para a Vibration API

No dia 8 de maio de 2012 a especificação do W3C para a Vibration API alcançou o status de Candidata a Recomendação.

Essa API cria funcionalidades que permite o acesso à funcionalidade nativa de vibração de dispositivos móveis. Vibrar o dispositivo é uma forma de fornecer ao usuário um feedback tátil.

A finalidade da vibração é a de fornecer um mecanismo de alto valor no desenvolvimento de jogos e não deve ser usada como mecanismo geral de notificação ao usuário.

A interface Vibration é extremamente simples e admite um único método denominado vibrate(), para o elemento objeto navigator.

Método vibrate()

Esse método admite um parâmetro em dois formatos: o número de milissegundos de duração da vibração ou um formato de lista de milissegundos separados por vírgula na qual os valores de ordem ímpar representam tempo de vibração e os valores de ordem par tempo de pausa em milessegundos. Os exemplos a seguir esclarecem os usos do método.

Vibrar durante 1s

navigator.vibrate(1000);
...

ou alternativamente:

navigator.vibrate([1000]);
...

Vibrar durante 1s pausar 500ms vibrar novamente 1,5s

navigator.vibrate([1000, 500, 1500]);
...

Vibrar 3 vezes durante 1s com pausas de 300ms e 600ms

navigator.vibrate([1000, 300, 1000, 600, 1000]);
...

Cancelar vibração em andamento

navigator.vibrate(0);
...

ou alternativamente:

navigator.vibrate([]);
...

Testes e exemplo prático

Nas pesquisas que fiz encontrei relatos que a Vibration API é suportada pelo navegador Firefox 11+ rodando em Android e em engines webkit, ambos com uso de prefixos proprietários como mostrado a seguir.

navigator.mozVibrate();
navigator.webkitVibrate();

Observei que o console JavaScript do navegador Firefox (Firebug) reconheceu normalmente o método navigator.mozVibrate(), contudo o mesmo não ocorreu com o navegador Chrome que não reconheceu o método navigator.webkitVibrate().

Desenvolvi uma página simples para testar o funcionamento da API.

Testei no iPhone4 rodando Safari e Chrome e em ambos os navegadores a API não funcionou. Não tenho outros dispositivos para testar. Convido você a me ajudar, entrando na página de teste localizada em http://kwz.me/Eo e deixando seus comentários dizendo o navegador (Firefox ou WebKit, somente), a plataforma e modelo no qual testou e qual foi o resultado obtido.

AGRADEÇO antecipadamente pela sua colaboração.

Maujor

View Comments

  • testei varias vezes o operna no meu sansung mas ainda não desisti, vou chegar lá!

  • Usando o Android 4.0 ( modificação Cyanogemmod ), com aparelho: Defy.

    No navegador nativo nada, usando o firefox funcionou perfeitamente. Usando o prefixo MOZ.

  • Galaxy SIII Android 4.0 com Chrome não funcionou
    Galaxy Tab 10.1 com Android 3.2 Browser nativo e Firefox (16) beta não funcionou.

    Firefox (15) funcionou.

  • Testei Motorola Razr Maxx
    Android 4.0.1
    Chrome e Opera e Navegador Nativo Android
    Não suporta API Vibration
    nada aconteceu

  • Testei no Firefox 15 do Android 4.1.1. Alertou que tinha suporte para a api, mas não vibrou. :(

Share
Published by
Maujor

Recent Posts

Teste seu conhecimento #20

Em 2006 comecei a publicar nesse blog uma série de desafios CSS que consistiam em…

7 anos ago

Teste seu conhecimento #19

Há muito tempo que eu não publico um "Teste seu conhecimento". Esta semana, revendo algumas…

9 anos ago

JavaScript bubbling e capturing

Introdução Elementos da marcação HTML podem ser aninhados uns dentro de outros, criando-se uma cadeia…

10 anos ago

HTML5 – W3C versus WHATWG

HTML5? Web universal? É comum eu me deparar com dúvidas sobre a HTML5 não só…

10 anos ago

Seria esse o futuro das imagens responsivas?

Quem é Tab Atkins Jr? Tab Atkins Jr, um desenvolvedor americano, trabalhou durante muitos anos…

10 anos ago

BrazilJS Conf 2013

Pessoal, a BrazilJS Conf 2013 disponibilizou para o Maujor cupons de desconto para serem oferecidos…

11 anos ago