4 - Pareamento Bluetooth
Como buscar e parear dispositivos Bluetooth para conectar um mPOS à aplicação.
Antes de iniciar a busca por dispositivos, solicite permissão ao usuário para ativar o Bluetooth. Sem essa permissão, não é possível conectar um dispositivo mPOS à aplicação.
Para realizar a busca de dispositivos Bluetooth, crie o objeto de descoberta mPOSDiscoveryRequestBuilder por meio da chamada MPOSPlugin.createDiscoveryRequestBuilder().
Fluxo de implementação
1. Solicite permissão ao usuário para ativar o Bluetooth.
2. Crie o objeto de descoberta com MPOSPlugin.createDiscoveryRequestBuilder().
3. Configure o tempo de busca com .time(...).
4. Implemente o callback de descoberta com .callback(...).
5. Implemente o callback de pareamento com .pairingCallback(...).
6. Envie a requisição com Zoop.post(request).
Exemplo de busca e pareamento
val request = MPOSPlugin.createDiscoveryRequestBuilder()
.time(6L, TimeUnit.SECONDS)
.callback(object: Callback<mPOSDiscoveryResponse>() {
override fun onStart() {
state = state.copy(
status = Status.MESSAGE,
message = "Buscando dispositivos"
)
}
override fun onFail(error: Throwable) {
Log.d(TAG, "Falha ao buscar dispositivos ${error.stackTraceToString()}")
state = state.copy(
status = Status.MESSAGE,
message = "Falha ao buscar dispositivos"
)
}
override fun onSuccess(response: mPOSDiscoveryResponse) {
Log.d(TAG, "Dispositivos encontrados: ${response.available.items}")
bluetoothDevice = response.available
state = state.copy(
status = Status.DISPLAY_BLUETOOTH_LIST,
bluetoothDevices = response.available.items.toList()
)
}
})
.pairingCallback(object: Callback<PairingStatus>() {
override fun onFail(error: Throwable) {
Log.d(TAG, "Falha ao parear dispositivo")
state = state.copy(
status = Status.MESSAGE,
message = "Falha ao parear dispositivo"
)
}
override fun onSuccess(response: PairingStatus) {
val message = if (response.status) {
"Dispositivo pareado com sucesso"
} else {
"Falha ao parear dispositivo"
}
state = state.copy(
status = Status.MESSAGE,
message = message
)
}
})
.build()
Zoop.post(request)No exemplo, a aplicação inicia a busca por dispositivos Bluetooth, exibe a lista de dispositivos encontrados e trata o resultado do pareamento. Quando a busca retorna com sucesso, os dispositivos disponíveis são acessados por response.available.items.
Callbacks
Use os callbacks para atualizar o estado da aplicação durante a busca e o pareamento do dispositivo.
.callback
O .callback retorna os estados do descobrimento de dispositivos Bluetooth.
| Callback | Quando é chamado | Uso recomendado |
|---|---|---|
onStart | Quando a busca por dispositivos inicia. | Exibir uma mensagem de carregamento, como Buscando dispositivos. |
onSuccess | Quando a busca por dispositivos termina com sucesso. | Exibir a lista de dispositivos encontrados para o usuário. |
onFail | Quando ocorre uma falha na busca por dispositivos. | Registrar o erro e exibir uma mensagem de falha. |
onComplete | Quando o fluxo de busca termina, tanto em caso de sucesso quanto de falha. | Finalizar estados de carregamento ou limpar controles temporários da interface. |
onSuccess
onSuccessO onSuccess recebe um objeto mPOSDiscoveryResponse que contém available, um UserSelection<BluetoothDevice>. A lista de dispositivos pode ser acessada por response.available.items e exibida pela aplicação para o usuário selecionar o dispositivo que será pareado.
Cada item de response.available.items representa um dispositivo Bluetooth encontrado.
.pairingCallback
O .pairingCallback retorna os estados do pareamento de dispositivos Bluetooth.
| Callback | Quando é chamado | Uso recomendado |
|---|---|---|
onSuccess | Quando o fluxo de pareamento termina. | Verificar response.status para confirmar se o pareamento foi concluído. |
onFail | Quando ocorre uma falha no pareamento. | Registrar o erro e exibir uma mensagem de falha ao usuário. |
onSuccess
onSuccessO onSuccess recebe um objeto PairingStatus. Quando response.status for true, o dispositivo foi pareado com sucesso. Quando response.status for false, o pareamento não foi concluído.
Tratamento de falhas comuns
Trate os cenários de falha para manter o usuário informado durante o fluxo:
- O Bluetooth não está ativado ou a permissão não foi concedida.
- Nenhum dispositivo foi encontrado dentro do tempo configurado em
.time(...). - A busca por dispositivos falhou e acionou
callback.onFail. - O pareamento falhou e acionou
pairingCallback.onFail. - O pareamento terminou com
response.statusigual afalse.
Em todos os casos, registre o erro quando disponível e atualize o estado da interface com uma mensagem clara para o usuário.
Updated 7 days ago
