Pareamento Bluetooth

Pareamento

  • 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().

Exemplo de busca e pareamento

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)
    }

Callbacks

.callback

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.

.pairingCallback

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.