Guia do Desenvolvedor de Aplicativos de Toque para Dispositivos Ultrabook e Tablets Windows*

Download do artigo

Download do Guia do Desenvolvedor de Aplicativos de Toque para Dispositivos Ultrabook e Tablets Windows* [PDF 958.6 KB]

Índice

Resumo

Este guia contém informações sobre as APIs (Application Program Interface - interface de programação) que os desenvolvedores de aplicativos precisam usar para o desenvolvimento de aplicativos para dispositivos Ultrabook™. Ele cobre informações para o desenvolvimento de aplicativos que rodam no Windows* 7, no Windows* 8 Desktop, interface de usuário do Windows* Modern, bem como aplicativos que rodam em navegadores da Web.

Este guia fornece também descrições das expectativas comuns dos usuários sobre gestos e fornece diretrizes para o desenvolvimento de interfaces de toque gratificantes.

Introdução

Agora que existem muitos dispositivos Ultrabook™ com capacidades de toque, os desenvolvedores querem desenvolver softwares especialmente projetados para toque. Para que um aplicativo seja totalmente habilitado para toque é necessário atender a três critérios:

  • Os controles mais frequentemente usados têm pelo menos 40 X 40 pixels e são suficientemente grandes para serem indicados pela ponta do dedo.
  • Os gestos relevantes (movimento panorâmico, zoom, giro, toque com dois dedos, pressionamento e toque) são suportados e o efeito ocorre no ponto de contato.
  • O aplicativo proporciona um feedback visual fluido e rápido nas ações de movimento panorâmico, zoom e giro, dando a sensação de alta interatividade.

Quer os desenvolvedores estejam escrevendo um novo aplicativo ou atualizando um aplicativo existente para adicionar suporte para toque, este guia será útil durante a execução do seu projeto.

Para obter mais informações sobre como escrever aplicativos habilitados para toque, consulte o artigo da MSDN Touch Interaction Design.

Requisitos de hardware

Os consumidores têm muitas opções de dispositivos habilitados para toque. Os desenvolvedores têm o desafio de desenvolver aplicações que pareçam naturais em todos os dispositivos. De modo geral, os aplicativos habilitados para toque devem ser projetados para funcionar em qualquer dispositivo, tirando proveito total de suas capacidades de toque. Os dispositivos Ultrabook representam o topo de linha do suporte ao toque e devem ser a base de design para a interface de toque de um aplicativo.

Os dispositivos Ultrabook com tela sensível ao toque estão no mercado desde 2011:

  • Família de processadores Intel® Core™ de 2ª geração (codinome Sandy Bridge). Estes sistemas foram lançados com o Windows 7 e alguns deles têm tela sensível ao toque.
  • Família de processadores Intel® Core™ de 3ª geração (codinome Ivy Bridge). Estes sistemas foram também lançados com o Windows 7, mas estão agora sendo vendidos com o Windows 8. Nós vamos ver mais destes sistemas com capacidade de toque em 2013 e nos anos seguintes, especialmente porque muitos dos novos designs são conversíveis.

O restante deste guia de desenvolvimento presume que a plataforma alvo é um sistema Ultrabook com capacidade de toque. O software projetado para este dispositivo pode ser adaptado para outros dispositivos habilitados para toque que usarem o mesmo sistema operacional.

Ambientes operacionais para dispositivos Ultrabook

A criação de aplicativos exige considerações cuidadosas sobre o ambiente que o consumidor usa com mais frequência e sobre o ambiente para o qual o aplicativo é mais adequado. Quer o aplicativo se destine ao Windows 8 Desktop ou a Windows Store, o desenvolvedor precisa entender quais interfaces são aplicáveis.

Se um aplicativo se destinar à interface do Windows 8 (aplicativo da Windows Store), então precisa usar as APIs WinRT. Se o aplicativo se destinar ao ambiente Windows 8 Desktop, então há mais opções: as APIs herdadas do Windows 7 e as novas APIs do Windows 8 para toque. Estas interfaces serão discutidas com mais detalhes nas seções abaixo. Existem outras opções para o desenvolvimento de aplicativos da Web. As interfaces de toque disponíveis para navegadores da Web são também discutidas abaixo.

Interações por toque: Ponteiro, gestos e manipulação

Existem níveis variados de interpretação da informação inserida por toque. Os eventos de ponteiro são os mais básicos porque representam pontos individuais de contato por toque. Os eventos de gestos e de manipulação se baseiam neste fundamento. Os eventos de gestos são uma forma fácil de capturar gestos de tocar e segurar. Os eventos de manipulação se destinam a interações de toque que usam gestos físicos para imitar a manipulação física de elementos da interface. Os eventos de manipulação criam uma experiência de uso mais natural durante a interação do usuário com os elementos da interface na tela. As interfaces de toque disponíveis têm diferentes níveis de suporte para estes três níveis de interpretação.

Leia mais sobre gestos, manipulações e interações na MSDN

Interações pelo ponteiro

Um evento de ponteiro é uma ação única ou um "contato" feito por um dispositivo de entrada como o mouse, a caneta, um único dedo ou vários dedos. Quando o contato é feito, o sistema cria um ponteiro quando ele é detectado e, em seguida, ele é destruído quando o ponteiro sai da faixa de detecção ou é cancelado. No caso de multitoque, cada contato é um ponteiro separado. A Tabela 1 mostra as interfaces de detecção de eventos básicos de ponteiro disponíveis para dispositivos Ultrabook que rodam o Windows 7 e o Windows 8.

Tabela 1. APIs de ponteiro disponíveis para dispositivos Ultrabook

Compatibilidade de SO Interface de toque Notas

Windows* 7 (Desktop)

WM_TOUCH

  • Compatível também com o ambiente Windows 8 Desktop.
  • Número máximo de toques simultâneos limitado pelo hardware.
  • Não tem reconhecimento integrado de gestos.
  • O RegisterTouchWindow precisa ser chamado pois as mensagens da WM_TOUCH não são enviadas por padrão.

Apenas Windows 8 (Desktop)

WM_POINTER

  • Aplicável apenas ao ambiente Windows 8 Desktop.
  • Por padrão, o feedback de interação e animações do Windows 8 é gerado e fica disponível para processamento adicional.

Interface de usuário do Windows Modern

PointerPoint

  • Aplicável apenas aos aplicativos da Windows Store.

Interfaces de toque disponíveis para Windows 7 e Windows 8:

Consulte as diretrizes para as interações de usuários na MSDN.

Interface de toque do Windows 7 e do Windows 8 Desktop: WM_TOUCH

A mensagem WM_TOUCH pode ser usada para indicar que um ou mais ponteiros, como dedo ou caneta, fizeram contato com a tela.

Amostra de código:

Orientação:

Interface de toque do Windows 8 Desktop: WM_POINTER

As mensagens WM_POINTER são parte das APIs de manipulação direta e são específicas do Windows 8 Desktop. Esta interface pode ser usada para capturar ponteiros de toque individuais, bem como gestos e manipulações. As mensagens WM_POINTER serão discutidas com mais detalhes na seção Interações por manipulação e gestos.

Referência na MSDN: APIs de Manipulação direta

Interface de toque do Windows Modern UI: PointerPoint

A classe PointerPoint é parte do Windows Runtime Environment e é compatível apenas com os aplicativos da Windows Store. Ela provê propriedades básicas para o ponteiro de entrada associado a um único mouse, caneta ou contato de toque. A MSDN têm uma amostra de código que pode ajudar os desenvolvedores a começar a trabalhar com a interface PointerPoint.

Código de amostra na MSDN: Entrada: Amostra de eventos de entrada de usuário usando XAML

Interações por manipulação e gestos

Os eventos de gestos são usados para processar interações de dedo estático, como toque simples e "pressionar e segurar". O toque duplo e o toque à direita são derivados destes gestos básicos:

  • Gestos: o movimento ou ato físico executado pelo dispositivo de entrada, que pode ser um ou mais dedos, uma caneta ou o mouse.
  • Manipulação: a resposta imediata e contínua de um objeto a um gesto. Por exemplo, o gesto de deslizar o dedo causa o movimento de um objeto.
  • Interações: a forma como uma manipulação é interpretada e o comando ou a ação resultante da manipulação. Por exemplo, os gestos de deslizar o dedo e de passar o dedo são similares mas os resultados variam de acordo com um limite de distância de percurso.

Tabela 2. Gestos básicos usados para interações de manipulação

Gesto Tipo Descrição

Pressionar e segurar

Gesto estático

Um único contato é detectado e não há movimento. O gesto de pressionar e segurar faz com que sejam mostradas informações detalhadas ou imagens de explicação, sem o compromisso com uma ação.

Toque

Gesto estático

Um único dedo toca a tela e é levantado imediatamente.

Virar

Gesto de manipulação

Dois ou mais dedos tocam a tela e se movem no sentido horário ou no sentido anti-horário.

Deslizar o dedo

Gesto de manipulação

Um ou mais dedos tocam a tela e se movem na mesma direção (também chamado de movimento panorâmico)

Passar o dedo

Gesto de manipulação

Um ou mais dedos tocam a tela e se movem por uma curta distância na mesma direção.

Pinçar

Gesto de manipulação

Dois ou mais dedos tocam a tela e se movem no sentido um do outro ou se afastando um do outro.

Ampliar

Gesto de manipulação

Dois ou mais dedos tocam a tela e se movem no sentido contrário um do outro.


Tabela 3. Interfaces de gestos disponíveis para dispositivos Ultrabook™

Compatibilidade de SO Interface de gestos Observações

Windows 7

Windows 8 (Desktop)

WM_TOUCH + IManipulationProcessor

  • Esta combinação dá ao desenvolvedor a funcionalidade da API WM_POINTER que está disponível apenas para o Windows 8 Desktop.
  • Número máximo de pontos de toque determinado pelo hardware.

Windows 7

Windows 8 (Desktop)

WM_GESTURE + estrutura GESTUREINFO

  • Máximo de dois pontos de toque simultâneos.
  • Não suporta gestos simultâneos.
  • Se o aplicativo precisar de manipulações mais complexas do que as disponíveis na mensagem WM_GESTURE, será necessário escrever um reconhecedor personalizado de gestos usando a interface WM_TOUCH.

Windows 8 (Desktop)

WM_POINTER

Interface de usuário Windows Modern

PointerPoint

  • As interações de gestos são resultado do uso do GestureRecognizer, que toma a saída do PointerPoint.

Referências na MSDN:


Tabela 4. Interações padrão esperadas e suas consequências para as interações de toque

Interação Descrição

Pressionar e segurar para obter mais informações

Exibe informações detalhadas.

Tocar para causar uma ação primária

Executa uma ação primária, por exemplo a abertura de um aplicativo ou a execução de um comando.

Deslizar para executar movimento panorâmico

Usada principalmente para interações de movimento panorâmico, mas pode também ser usada para mover, desenhar ou escrever. Pode ainda ser usada para manipular elementos pequenos e densamente agrupados por meio de fricção (passar o dedo sobre objetos relacionados, como botões de opção).

Passar o dedo para selecionar, comandar e mover

O ato de passar o dedo por uma curta distância, perpendicular à direção de movimento panorâmico, seleciona objetos de uma lista ou uma grade.

Pinçar e ampliar para aplicar zoom

Usada não apenas para redimensionamento, esta interação permite também que o usuário pule para o começo, o fim ou para qualquer ponto do conteúdo com o zoom semântico. O controle Zoom Semântico produz uma vista ampliada para mostrar grupos de itens e formas fáceis de voltar a eles.

Virar para girar

O giro com dois ou mais dedos faz com que um objeto gire.

Passar o dedo a partir da borda para ver os comandos do aplicativo

Os comandos do aplicativo são revelados quando se passa o dedo a partir da borda superior ou da borda inferior da tela.

Passar o dedo a partir da borda para ver os comandos do sistema

O ato de passar o dedo a partir da borda direita da tela mostra os botões usados para os comandos do sistema. O ato de passar o dedo a partir da borda esquerda da tela faz com que os aplicativos que estão em execução sejam mostrados em sequência e o ato de passar o dedo a partir do topo da tela faz com que o aplicativo seja fechado. Deslizar o dedo a partir da borda superior para baixo e para a esquerda ou para a direita encaixa o aplicativo naquele lado da tela.

Interpretação das interações por manipulação e gestos no Windows 7 Desktop

A interface IManipulationProcessor pode ser usada em conjunto com a API WM_TOUCH para adicionar translação, rotação, dimensionamento e inércia a objetos da interface de usuário. Esta combinação fornece funcionalidade similar aos recursos de reconhecimento de gestos do WM_POINTER. Quando o processador de manipulação for ativado, a manipulação começará assim que um gesto de toque for iniciado.

Amostra de código:

As mensagens WM_GESTURE têm uma estrutura chamada GESTUREINFO que está disponível para a interpretação de gestos e manipulações. A página sobre WM_GESTURE no site da MSDN mostra um exemplo de como obter informações especificas sobre os gestos usando a estrutura GESTUREINFO.

Note que a WM_GESTURE tem limitações. Por exemplo, o número de informações inseridas de forma simultânea está limitada a dois e não suporta gestos simultâneos. Para aplicativos que precisam de capacidades maiores mas ainda precisam suportar o Windows 7 Desktop, use a interface WM_TOUCH e escreva um reconhecedor personalizado de gestos, conforme descrito na seção Reconhecimento personalizado de gestos abaixo ou use a interface do processador de manipulação com a WM_TOUCH.

Amostra de código no Intel Developer Zone (WM_GESTURE API + GESTUREINFO: Aplicativo de amostra: Toque para Desktop

Para obter mais informações sobre como escrever aplicativos habilitados para toque, consulte o artigo da MSDN: Design de interação por toque.

Tratando as interações por manipulação e gestos no Windows 8 Desktop

Os aplicativos destinados exclusivamente ao Windows 8 Desktop podem usar as APIs de manipulação direta (mensagens WM_POINTER). As mensagens de ponteiro são passadas a um objeto "contexto de interação" interno que faz o reconhecimento na manipulação sem a necessidade de implementar um reconhecedor personalizado de gestos. Há uma infraestrutura de callback, onde todas as interações envolvendo contatos rastreados são gerenciadas.

A manipulação direta foi projetada para tratar as interações por manipulação e por gestos e suportar dois modelos de processamento de inserção de informações:

  1. Automático ou independente: As mensagens da janela são automaticamente interceptadas pela manipulação direta na thread de delegação e são processadas sem a execução de nenhum código, o que as torna independentes do aplicativo.
  2. Manual ou dependente: As mensagens da janela são recebidas pelo procedimento que está rodando na thread da interface de usuário, que por sua vez invoca a manipulação direta para processar a mensagem, tornando-a dependente do aplicativo.

Os gestos podem ser capturados por meio da inicialização da manipulação direta e da preparação do sistema para o processamento das entradas.

Consulte o Guia de início rápido: Manipulação direta na MSDN para um esboço das chamadas da API necessárias para executar tarefas típicas quando se trabalha com a manipulação direta.

Tratamento das interações por manipulação e gestos na interface do Windows 8 Modern

A API GestureRecognizer é usada para tratar as informações da entrada por ponteiro a fim de processar os eventos de manipulação e de gestos. Cada objeto retornado pelo método PointerPoint é usado para alimentar os dados de ponteiro para o GestureRecognizer (reconhecedor de gestos). O reconhecedor de gestos fica preparado para receber e tratar as informações de entrada pelo ponteiro e processa os eventos de gestos estáticos. Para ver um exemplo de como criar um objeto GestureRecognizer e então ativar a manipulação de eventos de gestos naquele objeto, consulte a página do GestureRecognizer no site da MSDN (mencionado abaixo).

Referências na MSDN:

Amostra de código no Intel Developer Zone: Aplicação de exemplo:  Toque para Windows* Store.

Reconhecimento personalizado de gestos

Sempre que possível, use os reconhecedores de gesto embutidos (veja a Tabela 3). Se as interfaces de gestos e manipulação fornecidas não tiverem a funcionalidade necessária ou se o aplicativo precisar distinguir toques e gestos mais rapidamente, poderá ser necessário escrever um software de reconhecimento personalizado de gestos. Se for esse o caso, os clientes irão esperar uma experiência de uso intuitiva, envolvendo a interação direta com os elementos da interface do aplicativo. É melhor basear as interações personalizadas nos controles padrão para manter as ações do usuário consistentes e passíveis de serem descobertas. As interações personalizadas só devem ser usadas se houver um requisito claro e bem definido e se as interações não suportarem a funcionalidade desejada do aplicativo. Consulte a Tabela 4 para ver a lista das interações comuns e esperadas e as consequências para as interações de toque.

Amostra de código no Intel Developer Zone (WM_TOUCH com reconhecimento personalizado de gestos): Toque para Windows Desktop

Suporte para toque nos navegadores da Web

A entrada por toque está disponível também em aplicativos que rodam em navegadores da Web, com graus variados de suporte, dependendo do navegador. Uma vez que as capacidades dos navegadores da Web mudam rapidamente, é geralmente melhor detectar os recursos suportados em vez de navegadores específicos. A detecção de recursos provou ser uma técnica mais eficaz depois que tiver sido determinado se o navegador é o Internet Explorer (IE) 10, um navegador baseado no Webkit* ou um navegador diferente que precisa de suporte. A detecção de recursos exige menos manutenção pelas seguintes razões:

  • Novos navegadores são lançados e os navegadores atuais são atualizados. O código existente pode não ser incluído nas novas versões de navegadores. Os navegadores atualizados podem suportar padrões e recursos que não eram suportados quando o código de detecção de navegador foi criado.
  • Novos dispositivos frequentemente incluem novas versões de navegadores e portanto o código de detecção de navegador precisa ser constantemente revisado para suportar os novos navegadores. A criação de implementações personalizadas para cada navegador pode se tornar extremamente complicada.
  • Muitos navegadores suportam a capacidade de modificar a propriedade user-agent, o que torna a detecção acurada do navegador bem mais difícil.

O Apple Safari* e o Google Chrome* usam a tecnologia WebKit e, em breve, o Opera também passará a usar essa tecnologia. O Internet Explorer 10 não usa o WebKit. Entretanto, tanto o WebKit quanto o IE 10 se baseiam na especificação DOM (Document Object Model) nível 3. Para ver quais são os padrões associados aos eventos de toque, consulte a versão 1 de eventos de toque padrão, datada de janeiro de 2013.

Referências:

O IE 10 tem suas próprias interfaces de toque que precisam ser chamadas para o processamento de eventos de toque. Use o objeto navegador com a propriedade user-agent para determinar se o navegador suporta os recursos desejados. O exemplo a seguir indica se o navegador é o Internet Explorer.

Uso:

<script type="text/JavaScript">
If (navigator.userAgent.indexOf(“MSIE”)>0)
    { 
         // Run custom code for Internet Explorer.
    }
</script>

Figura 1. Fragmento de código para determinar se o navegador é o Internet Explorer*

Use o método hasFeature para determinar se recursos específicos são suportados no navegador. Por exemplo, veja aqui como determinar se um navegador suporta eventos de toque (funciona para IE 10 também):

var touchSupported = document.implementation.hasFeature("touch-events","3.0");

Onde “touch-events” é o recurso cuja presença nós queremos verificar e “3.0” é o nível de especificação DOM no qual estamos interessados. Um aplicativo pode então se preparar para receber os seguintes eventos de toque: touchstart, touchend, touchmove e touchcancel.

Referência: Método hasFeature

Para processar eventos de toque usando um navegador baseado no WebKit (Chrome, Safari, etc.), simplesmente configure os três eventos a seguir para cobrir os principais estados de entrada:

canvas.addEventListener( ‘touchstart’, onTouchStart, false );
canvas.addEventListener( ‘touchmove’, onTouchMove, false);
canvas.addEventListener( ‘touchend’, onTouchEnd, false);

Para o Internet Explorer, use o evento MSPointer:

canvas.addEventListener( ‘MSPointerDown’, onTouchStart, false );
canvas.addEventListener( ‘MSPointerMove’, onTouchMove, false);
canvas.addEventListener( ‘MSPointerUp’, onTouchEnd, false);

De modo similar, existem recursos que captam eventos de gestos. São eles gestureStart, gestureChange e gestureEnd para os navegadores não IE 10.

Faça o download de código sobre o processamento de eventos de ponteiro DOM na MSDN: Exemplo de tratamento de eventos de ponteiro DOM.

Internet Explorer 10 e sua compatibilidade com o Windows 7

Embora o IE 10 não use o WebKit, ele se baseia também em eventos DOM nível 3, em HTML5 e nos padrões "Progress Events". Esta seção fornece informações sobre o IE 10 e como ele interage no Windows 7.

Padrões:

O Internet Explorer 10 no Windows 7 trata as entradas por toque e por caneta como simulação de mouse para os seguintes eventos de DOM (Document Object Model):

  • MSPointerCancel
  • MSPointerDown
  • MSPointerMove
  • MSPointerOver
  • MSPointerUp

O IE 10 no Windows 7 não ativa nenhum dos seguintes eventos DOM de gestos:

  • MSGestureChange
  • MSGestureEnd
  • MSGestureHold
  • MSGestureStart
  • MSGestureTap
  • MSManipulationStateChanged

Tabela 5. Interfaces de toque para o Internet Explorer* 10

Interface Windows* 7
MSVS 2010
Windows 8
MSVS 2012 (Desktop)
Interface de usuário do Windows 8 Modern Notas

MSGESTURE

NÃO

Sim

Sim

  • Obtém com facilidade gestos de alto nível como segurar, movimento panorâmico e toque, sem precisar capturar cada evento de ponteiro individualmente

MSPOINTER

Sim

SIM

Sim

  • Parte do núcleo do DOM (Document Object Model)
  • Os métodos getCurrentPoint e getIntermediatePoints retornam uma coletânea de objetos PointerPoint e estão disponíveis apenas no Windows 8.

Para obter mais informações sobre como desenvolver aplicativos da Web habilitados para toque para o IE 10 (MSDN): Guia do Internet Explorer 10 para desenvolvedores

Exemplo de código na MSDN: Entrada: Manipulações e gestos(JavaScript)

Identificando as capacidades de toque

Quer o aplicativo seja um aplicativo nativo ou um aplicativo Web, o desenvolvedor deve adicionar um recurso de verificação da presença de hardware com suporte ao toque para que o aplicativo possa configurar sua interface adequadamente. Use os métodos a seguir para verificar o suporte ao toque.

Windows 7 e Windows 8 Desktop

Os aplicativos para Windows 7 ou para Windows 8 Desktop podem chamar o GetSystemMetrics com SM_DIGITIZER como argumento. O fragmento de código a seguir é parte de uma amostra de código que pode ser baixada do Intel Developer Zone: Toque para Windows Desktop

Referências:

 // Verificar suporte ao toque
 // Obter se há suporte ao toque através da GetSystemMetrics
    BYTE digitizerStatus = (BYTE)GetSystemMetrics(SM_DIGITIZER);
 // Hardware com suporte ao toque (0x80); prontidão(0x40)
    if ((digitizerStatus & (0x80 + 0x40)) != 0) //Stack Ready + MultiTouch
    {
        RegisterTouchWindow(m_pWindow->GetHWnd(), TWF_WANTPALM);
    }

Figura 2. Exemplo de identificação de suporte ao toque no Windows* 7

Note que o GetSystemMetrics pode ser usado para descobrir o número máximo de pontos de toque disponíveis:

	BYTE nInputs = (BYTE)GetSystemMetrics(SM_MAXIMUMTOUCHES);

Windows 8 (aplicativos Windows Store)

Determine o suporte ao toque para aplicativos Windows Store usando a classe TouchCapabilities. O fragmento de código a seguir pode ser encontrado no exemplo de código da MSDN que demonstra o seu uso: Entrada: Exemplo de recursos do dispositivo.

Referências:

void SDKSample::DeviceCaps::Touch::TouchGetSettings_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
    Button^ b = safe_cast<Button^>(sender);
    if (b != nullptr)
    {
        TouchCapabilities^ pTouchCapabilities = ref new TouchCapabilities();
        Platform::String^ Buffer;

        Buffer = "There is " + (pTouchCapabilities->TouchPresent != 0 ? "a" : "no") + " 
              digitizer presentn";
        Buffer += "The digitizer supports " + pTouchCapabilities->Contacts.ToString() + " 
              contactsn";

        TouchOutputTextBlock->Text = Buffer;
    }
}

Figura 3. Exemplo de identificação de suporte ao toque na interface do Windows

Aplicativos para Web

Para o Internet Explorer, use a propriedade msMaxTouchPoints descrita a seguir.

Detectar a presença de hardware compatível com recursos de toque:
If (navigator.msMaxTouchPoints) {…}

Detectar a presença de hardware compatível com recursos de multitoque:
If (navigator.msMaxTouchPoints >1) {…}

Obter o número máximo de pontos de toque que o hardware suporta:
Var touchPoints = navigator.msMaxTouchPoints;

Para Chrome e Safari, use o seguinte (o mesmo que acima, mas troque msMaxTouchPoints por maxTouchPoints):

var result = navigator.maxTouchPoints;

Pode ser um pouco complicado testar dispositivos de toque genericamente a partir de aplicativos da Web. Embora algumas funções funcionem bem em alguns navegadores, outros podem indicar que as capacidades de toque estão presentes, quando na verdade não estão, isto é, se o navegador em si suportar capacidades de toque, ele pode indicar que o toque está disponível mesmo que o dispositivo não tenha capacidade de toque.

Note que o MaxTouchPoints retornará a 0 no IE 10 (Desktop) rodando no Windows 7.

Referências:

Design da interface para os dispositivos Ultrabook habilitados para toque

Os aplicativos para dispositivos Ultrabook podem precisar processar gestos como toques, movimentos panorâmicos, zooms, etc. Os aplicativos habilitados para toque podem não fazer muita coisa com os dados brutos do ponteiro, exceto passá-los para a detecção de gestos.

Os novos aplicativos devem ser criados com a expectativa de que o toque será o métodos principal de inserção de dados. O suporte para mouse e caneta não exige trabalho adicional; entretanto, os desenvolvedores de software devem levar em conta vários outros fatores no projeto de aplicativos otimizados para toque.

Tabela 6. Considerações para aplicativos habilitados para toque

Fator Toque Mouse / Caneta

Precisão

  • A área de contato para a ponta dos dedos é muito maior que uma simples coordenada x-y.
  • O formato da área de contato muda com o movimento.
  • Não há cursor do mouse para ajudar a definir o alvo.
  • O mouse e a caneta fornecem uma coordenada x-y precisa.
  • O foco do teclado é explícito.

Anatomia humana

  • Os movimentos das pontas dos dedos são imprecisos.
  • Algumas áreas da superfície de toque podem ser difíceis de alcançar.
  • Os objetos podem ficar ocultos pelas pontas de um ou mais dedos.
  • Os movimentos em linha reta são mais fáceis de fazer com o mouse ou a caneta.
  • O mouse e a caneta podem alcançar qualquer parte da tela.
  • Dispositivos de entrada indiretos não causam obstrução.

Estado do objeto

  • O toque usa um modelo de dois estados. A superfície de toque é tocada ou não é tocada. Não existe o estado de "pairar sobre" (passar o mouse) que pode ativar feedback visual adicional.
  • Há três estados disponíveis: ativado, desativado e pairar sobre (foco).

Interação rica

  • Multitoque - estão disponíveis múltiplos pontos de entrada (dedos).
  • Suporta apenas um único ponto de entrada.

Os desenvolvedores de software devem fornecer feedback visual adequado durante as interações para que o usuário possa reconhecer, aprender e se adaptar ao modo como suas interações são interpretadas tanto pelo aplicativo quanto pelo SO. O feedback visual é importante para que os usuários saibam se as interações estão sendo bem sucedidas, de modo que eles possam melhorar seu senso de controle. Ele pode ajudar a reduzir erros e ajudar o usuário a entender o sistema e o dispositivo de entrada.

Recursos para o desenvolvimento de aplicativos de toque

Artigos relacionados no Intel Developer Zone

  1. Comparação entre técnicas de codificação de toque – Exemplo de suporte ao toque para Windows 8 Desktop
  2. Explorando exemplos de código para aplicativos com suporte ao toque para o Windows* 8
  3. Exemplo de código com suporte ao toque para Windows* 8 Store
  4. Exemplo de código com suporte ao toque para Windows* 8 Desktop
  5. Portando aplicativos Win32 para Windows 8 Desktop
  6. Jogo de estratégia em tempo real com tela de toque

Artigos relacionados na MSDN

  1. Guia de programação de entrada por toque para Windows 7
  2. Visão geral da arquitetura (Windows 7)
  3. Solução de problemas de aplicativos
  4. Adicionando suporte de manipulação em códigos não gerenciados
  5. Amostras de toque do Windows
  6. Desenvolva aplicativos avançados com suporte ao toque no Windows 8* (vídeo)
  7. Windows 8 SDK
  8. Entrada: Exemplo "Touch hit testing"
  9. Documentação para desenvolvimento de aplicativos de desktop (Windows)
  10. Visão geral de gestos de toque do Windows (Windows)
  11. Introdução - Mensagens de toque do Windows
  12. Função Get PointerTouchInfo (Windows)
  13. Guia do Internet Explorer 10 para desenvolvedores (MSDN)

Conclusão

Os desenvolvedores que querem desenvolver aplicativos habilitados para toque, seja para rodar nativamente ou para rodar pela Web, precisam saber claramente quais APIs estão disponíveis para eles. Este guia descreveu as interfaces disponíveis para os seguintes ambientes: Windows 7, Windows 8 Desktop, interface de usuário do Windows Modern e para aplicativos que rodam em navegadores da Web. Embora gestos e manipulações sejam possíveis no Windows 7, os desenvolvedores de aplicativos perceberão que as APIs do Windows 8 (para Desktop ou para Modern) oferecem as melhores opções para o reconhecimento automático de gestos.

Os desenvolvedores que estão criando aplicativos Web habilitados para toque precisam verificar seu código para o IE 10, uma vez que o IE 10 tem a sua própria interface que precisa ser usada para processar toque, gestos e manipulação. Outros navegadores baseados em Webkit são também baseados nos padrões DOM nível 3 e têm suporte para toque e gestos.

Este guia cobriu também as descrições das interações comuns de gestos e manipulações e forneceu algumas diretrizes para o desenvolvimento de aplicativos habilitados para toque.

Sobre a autora

Gael Hofemeier é engenheira de aplicações da Intel Corporation. Seu trabalho é fornecer o conteúdo técnico destinado aos desenvolvedores que escrevem software para a arquitetura Intel®. Além de desenvolver conteúdo, ela é moderadora do fórum de clientes corporativos do Intel Developer Zone.

Veja o blog de Gael

Intel, o logotipo Intel, Ultrabook e Core são marcas comerciais da Intel Corporation nos EUA e/ou em outros países.

Copyright © 2013 Intel Corporation. Todos os direitos reservados.

*Outros nomes e marcas podem ser propriedade de terceiros.

Per informazioni più dettagliate sulle ottimizzazioni basate su compilatore, vedere il nostro Avviso sull'ottimizzazione.