aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/archive/b2g_os/bluetooth_api/index.html
blob: d5fae1f26e470f7131cef6075e64579f1d4e45cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
---
title: WebBluetooth
slug: Archive/B2G_OS/Bluetooth_API
translation_of: Archive/B2G_OS/Bluetooth_API
---
<p>{{ non-standard_header }}</p>
<p>{{ B2GOnlyHeader2('certified') }}</p>
<h2 id="Sumário">Sumário</h2>
<p>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 <a href="http://www.w3.org/2012/sysapps/">W3C's System Applications Working Group</a>.</p>
<div class="note">
 <p><strong>Nota:</strong> Desenvolvedores de apps que querem enviar dados para um dispositivo Bluetooth pode utilizar <a href="/en-US/docs/WebAPI/Web_Activities#Firefox_OS_activities">the share activity</a>. Essa atividade permite imagens, audio, vídeo e conteúdos vCard apenas.</p>
</div>
<h2 id="API_Overview">API Overview</h2>
<p>O ponto de entrada principal para API é a propriedade {{domxref("window.navigator.mozBluetooth","navigator.mozBluetooth")}}, que retorna um objeto {{domxref("BluetoothManager")}}.</p>
<h3 id="Interfaces">Interfaces</h3>
<ul>
 <li>{{domxref("BluetoothManager")}}</li>
 <li>{{domxref("BluetoothAdapter")}}</li>
 <li>{{domxref("BluetoothDevice")}}</li>
 <li>{{domxref("BluetoothDeviceEvent")}}</li>
 <li>{{domxref("BluetoothStatusChangedEvent")}}</li>
</ul>
<h3 id="Mensagens_do_Sistema">Mensagens do Sistema</h3>
<p>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:</p>
<ul>
 <li><code>bluetooth-dialer-command</code></li>
 <li><code>bluetooth-cancel</code></li>
 <li><code>bluetooth-hid-status-changed</code></li>
 <li><code>bluetooth-pairing-request</code></li>
 <li><code>bluetooth-opp-transfer-complete</code></li>
 <li><code>bluetooth-opp-update-progress</code></li>
 <li><code>bluetooth-opp-receiving-file-confirmation</code></li>
 <li><code>bluetooth-opp-transfer-start</code></li>
</ul>
<div class="note">
 <p><strong>Nota: </strong> Um aplicativo pode reagir a essas mensagens requerendo eles no arquivo manifesto do aplicativo e utilizando {{domxref("window.navigator.mozSetMessageHandler","navigator.mozSetMessageHandler()")}} para definir o manuseio da mensagem.</p>
</div>
<h3 id="Permissões">Permissões</h3>
<p>Aplicativos certificados que querem utilizar API Web Bluetooth devem requerer uma permissão relevante dentro do manifesto do aplicativo.</p>
<pre class="brush: json">"permission": {
  "bluetooth":{}
}</pre>
<p>Também é recomendado perguntar para permissão <code>settings</code> porque agora habilitando e desabilitando Bluetooth tem que estar pronto mudando o valor do tópico mozSettings "bluetooth.enabled".</p>
<h2 id="Pareando_dispositivos_Bluetooth">Pareando dispositivos Bluetooth</h2>
<p>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.</p>
<p>O procedimento de pareamento depende nas capacidades IO de cada dispositivo.</p>
<p>Cada vez que um dispositivo remoto quer parear com um dispositivo Firefox OS, uma mensagem do sistema nomeada <code>bluetooth-pairing-request</code> é 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:</p>
<pre class="brush: json">"messages": [
  { "bluetooth-pairing-request": "/pairing.html" }
]</pre>
<p>Também é necessário registrar um manipulador de mensagem:</p>
<pre class="brush: js">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);
});</pre>
<p>A mensagem da propriedade <code>detail</code> contém toda as informações necessárias para iniciar o pareamento os dois dispositivos:</p>
<ul>
 <li><code>address</code>: o endereço do dispositivo remoto na micro-rede Bluetooth (veja: {{domxref("BluetoothDevice.address")}})</li>
 <li><code>name   </code>: o nome do dispositivo remoto pareado (veja: {{domxref("BluetoothDevice.name")}})</li>
 <li><code>icon   </code>: Um nome icônico para utilizar (veja: {{domxref("BluetoothDevice.icon")}})</li>
 <li><code>passkey</code>: Uma chave de acesso que o usuário tem que digitar se o dispositivo remoto é um dispositivo de entrada</li>
 <li><code>method </code>: O método de pareamento para usar, um desses <code>confirmation</code>, <code>pincode</code> ou <code>passkey</code>.</li>
</ul>
<p>Finalizando a requisição de pareamento depende no método fornecido.</p>
<dl>
 <dt>
  <code>confirmation</code></dt>
 <dd>
  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.</dd>
 <dt>
  <code>pincode</code></dt>
 <dd>
  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.</dd>
 <dt>
  <code>passkey</code></dt>
 <dd>
  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.</dd>
</dl>
<p>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: {{domxref("BluetoothAdapter.setPairingConfirmation()")}}, {{domxref("BluetoothAdapter.setPinCode()")}}, and {{domxref("BluetoothAdapter.setPasskey()")}}</p>
<pre class="brush: js">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);
</pre>
<p>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 {{event("pairedstatuschanged")}} onde o callback handler recebe um {{domxref("BluetoothStatusChangedEvent")}}.</p>
<pre class="brush: js">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");
  }
}</pre>
<h2 id="Especificações">Especificações</h2>
<p>Sem ser parte de qualquer especificação ainda. Deve ser discutido como parte do <a href="http://www.w3.org/2012/sysapps/">W3C's System Applications Working Group</a>.</p>
<p> </p>