Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

WebBluetooth

Non-standard
This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

This API is available on Firefox OS for certified applications only.

Sumário

A API de Bluetooth Web permite descobrir, parear e conectar com dispositivos Bluetooth. Como é uma API completamente experimental e não padronizada, por enquanto está disponível apenas para aplicativos certificados. Porém, pela importância de ter uma API como essa disponível para conteúdos Web comuns, isso será discutido como parte do W3C's System Applications Working Group.

Nota: Desenvolvedores de apps que querem enviar dados para um dispositivo Bluetooth pode utilizar the share activity. Essa atividade permite imagens, audio, vídeo e conteúdos vCard apenas.

API Overview

O ponto de entrada principal para API é a propriedade navigator.mozBluetooth, que retorna um objeto BluetoothManager.

Interfaces

Mensagens do Sistema

Porque algumas ações de dispositivos remotos pode precisar acordar um aplicativo para lidar com eles, tem várias mensagens do sistema relacionadas ao Bluetooth:

  • bluetooth-dialer-command
  • bluetooth-cancel
  • bluetooth-hid-status-changed
  • bluetooth-pairing-request
  • bluetooth-opp-transfer-complete
  • bluetooth-opp-update-progress
  • bluetooth-opp-receiving-file-confirmation
  • bluetooth-opp-transfer-start

Nota:  Um aplicativo pode reagir a essas mensagens requerendo eles no arquivo manifesto do aplicativo e utilizando navigator.mozSetMessageHandler() para definir o manuseio da mensagem.

Permissões

Aplicativos certificados que querem utilizar API Web Bluetooth devem requerer uma permissão relevante dentro do manifesto do aplicativo.

"permission": {
  "bluetooth":{}
}

Também é recomendado perguntar para permissão settings porque agora habilitando e desabilitando Bluetooth tem que estar pronto mudando o valor do tópico mozSettings "bluetooth.enabled".

Pareando dispositivos Bluetooth

O passo mais importante quando lidar com um ambiente Bluetooth é parear dispositivos em ordem de construir micro-rede Bluetooth para dispositivos funcionando com todos de uma maneira segura. Parear é um procedimento que faz com que dois dispositivos Bluetooth tenham a mesma "chave", que é chamada "Conexão de Chave". Depois que ambos dispositivos estiverem pareados um com o outro, se torna possível a fazer conexões mais avançadas nas ações dos perfis em ordem e acessar recursos específicos dos dispositivos.

O procedimento de pareamento depende nas capacidades IO de cada dispositivo.

Cada vez que um dispositivo remoto quer parear com um dispositivo Firefox OS, uma mensagem do sistema nomeada bluetooth-pairing-request é enviada. Para interceptar essa mensagem do sistema, o aplicativo responsável a lidar com o pareamento deve registrar a mensagem dentro do manifesto do aplicativo:

"messages": [
  { "bluetooth-pairing-request": "/pairing.html" }
]

Também é necessário registrar um manipulador de mensagem:

navigator.mozSetMessageHandler("bluetooth-pairing-request", function (message) {
  // Get the information about the pairing request
  var request = message.detail;

  // Log the name of the remote device that wants to be paired with your device
  console.log(request.name);
});

A mensagem da propriedade detail contém toda as informações necessárias para iniciar o pareamento os dois dispositivos:

  • address: o endereço do dispositivo remoto na micro-rede Bluetooth (veja: BluetoothDevice.address)
  • name   : o nome do dispositivo remoto pareado (veja: BluetoothDevice.name)
  • icon   : Um nome icônico para utilizar (veja: BluetoothDevice.icon)
  • passkey: Uma chave de acesso que o usuário tem que digitar se o dispositivo remoto é um dispositivo de entrada
  • method : O método de pareamento para usar, um desses confirmation, pincode ou passkey.

Finalizando a requisição de pareamento depende no método fornecido.

confirmation
Ambos dispositivos devem mostrar um número de 6 dígitos em suas telas. Os usuários devem confirmar que o número mostrado em ambos os dispositivos é o mesmo.
pincode
Os dispositivos remotos não tem uma tela (ex: fones de ouvido), então o usuário será requisitado a entrar o código PIN no outro dispositivo.
passkey
Se o dispositivo remoto é um dispositivo de entrada (ex: teclado), um número de 6 dígitos será mostrado e os usuários serão requisitados a entrar a chave utilizando o dispositivo remoto.

Então uma aplicação gerenciando pareamento deve manusear três diferentes métodos de pareamento. Para enviar a resposta para o usuário para o dispositivo remoto, a API Bluetooth fornece os seguintes métodos: BluetoothAdapter.setPairingConfirmation(), BluetoothAdapter.setPinCode(), and BluetoothAdapter.setPasskey()

var adapter;

// Retreving the local device adapter is asynchronous, handle this carefully.
navigator.mozBluetooth.getDefaultAdapter().success = function(evt) {
  adapter = evt.target.result;
}

function onPairing(message) {
  var reponse,
      request = message.detail,
      passkey = request.passkey;

  switch (request.method) {
    case 'confirmation':
      // Make sure the passkey is a string
      passkey = String(passkey);
      // Make sure the string is 6 characters long (pad with 0 if necessary)
      passkey = (new Array((6 - passkey.length) + 1)).join('0') + passkey;
      // Let's prompt the user
      response = confirm('Is that same number visible on the remote device screen: ' + passkey)
      // Let's send the confirmation
      adapter.setPairingConfirmation(request.address, response);
      break;

    case 'pincode':
      // Let's prompt the user
      response = prompt('Thanks to provide the remote device PIN code');
      // Let's send the pin code
      adapter.setPinCode(request.address, response);
      break;

    case 'passkey':
      // Let's prompt the user
      response = alert('Thanks to type the following code on the remote device');
      // Let's send back the passkey
      adapter.setPasskey(request.address, response);
      break;
  }
}

navigator.mozSetMessageHandler("bluetooth-pairing-request", onPairing);

Uma vez a operação de pareamento está feita por ambos os lados, a aplicação é notificada do sucesso ou falha da operação através do evento pairedstatuschanged onde o callback handler recebe um BluetoothStatusChangedEvent.

adapter.onpairedstatuschanged = function (evt) {
  if (evt.status) {
    alert("The pairing operation has been successfully completed");
  } else {
    alert("The pairing operation has failed. Please, try again");
  }
}

Especificações

Sem ser parte de qualquer especificação ainda. Deve ser discutido como parte do W3C's System Applications Working Group.

 

Etiquetas do documento e colaboradores

 Colaboradores desta página: Fabio.Magnoni
 Última atualização por: Fabio.Magnoni,