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 entradamethod
: O método de pareamento para usar, um dessesconfirmation
,pincode
oupasskey
.
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.