Antes qualquer coisa você vai querer pedir permissão ao usuário para ativar o Bluetooth. Sem ele, não é possível conectar um dispositivo mPOS à aplicação.
Para realizar a busca de dispositivo Bluetooth, é necessário criar o objeto de descoberta mPOSDiscoveryRequestBuilder
por meio da chamada MPOSPlugin.createDiscoveryRequestBuilder()
.
private fun bluetooth() {
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().run(Zoop::post)
}
Responsável por retornar as callbacks que dizem o estado do descobrimento de dispositivos Bluetooth.
onStart
-> Sinaliza quando a busca por dispositivos inicia.
onFail
-> Falha na busca por dispositivos.
onSuccess
-> Sinaliza o momento que a busca por dispositivos termina com sucesso. É recebido um objeto UserSelection<BluetoothDevice>
contendo um objeto iterable
(acessado por response.items
) a ser exibido pela aplicação para o usuário. A seleção do dispositivo para pareamento é feita com esse objeto. Cada item desse objeto é um dispositivo.
Responsável por retornar as callbacks que dizem o estado do pareamento de dispositivos Bluetooth.
onFail
-> Falha ao parear o dispositivo.
onSuccess
-> Sinaliza o momento que o pareamento termina com sucesso.