Configurar Bluetooth
O Bluetooth é um dos recursos do terminal Point que poderá ser utilizado pelo seu SmartApp para proporcionar experiências mais interativas e versáteis.
O SDK do Mercado Pago oferece um conjunto de ferramentas para simplificar esta configuração e aprimorar a conectividade sem fio, permitindo também ao usuário configurar o Bluetooth direto do aplicativo.
Para incluir diretamente em seu aplicativo a interface das configurações de Bluetooth da terminal Point, utilize o método launch da classe BluetoothUiSettings, como mostra o exemplo abaixo. Envie o contexto do aplicativo (context) para iniciar a atividade.
val bluetoothUiSettings = MPManager.bluetoothUiSettings
bluetoothUiSettings.launch(context)
final BluetoothUiSettings bluetoothUiSettings = MPManager.INSTANCE.getBluetoothUiSettings();
bluetoothUiSettings.launch(context);
Esse componente proporciona diversas funcionalidades, como ativar e desativar o Bluetooth, buscar dispositivos, emparelhar e desemparelhar, entre outras.
O SDK do Mercado Pago permite ativar, desativar e verificar o status atual do Bluetooth do terminal, utilizando a classe BluetoothIgnitor do objeto MPManager. Veja abaixo como realizar cada uma dessas atividades.
Para ativar e desativar o Bluetooth no terminal Point, utilize as funções turnOn ou turnOff, respectivamente, como mostra o exemplo abaixo.
val bluetoothIgnitor = MPManager.bluetooth.ignitor
bluetoothIgnitor.turnOn { response ->
response
.doIfSuccess { result ->
if (result) {
// Bluetooth foi ativado com sucesso
// Realizar ações adicionais, se necessário
} else {
// Não foi possível ativar o Bluetooth
}
}.doIfError {
// Tratar o caso de erro, se necessário
}
}
final BluetoothIgnitor bluetoothIgnitor = MPManager.INSTANCE.getBluetooth().getIgnitor();
final Function1<MPResponse<Boolean>, Unit> callback = (final MPResponse<Boolean> response) -> {
if (response.getStatus() == ResponseStatus.SUCCESS) {
if (response.getData()) {
// Bluetooth foi ativado com sucesso
// Realizar ações adicionais, se necessário
} else {
// Não foi possível ativar o Bluetooth
}
} else {
// Tratar o caso de erro, se necessário
}
return Unit.INSTANCE;
};
bluetoothIgnitor.turnOn(callback);
Com o Bluetooth do terminal Point ativado, veja abaixo como o SDK do Mercado Pago pode ser utilizado para buscar, emparelhar e desemparelhar dispositivos por meio das classes BluetoothDiscoverDevices e BluetoothDevicesPairing do objeto MPManager.
Para localizar um dispositivo a ser conectado via Bluetooth no terminal Point, utilize a função startDiscovery, da classe BluetoothDiscoverDevices, como mostra o exemplo abaixo.
val bluetoothDiscover = MPManager.bluetooth.discover
bluetoothDiscover.startDiscovery { response ->
response
.doIfSuccess { discoveryState ->
when (discoveryState.type) {
BluetoothDiscoveryState.Type.STARTED -> {
// Tratar o início da descoberta
}
BluetoothDiscoveryState.Type.DEVICE_FOUND -> discoveryState.device?.let { device ->
// Tratar a descoberta de um novo dispositivo
}
BluetoothDiscoveryState.Type.DEVICE_CHANGE -> discoveryState.device?.let { device ->
// Tratar alterações em um dispositivo descoberto
}
BluetoothDiscoveryState.Type.ENDED -> {
// Tratar o fim da descoberta
}
}
}
.doIfError { error ->
// Tratar o caso de erro, se necessário
}
}
final BluetoothDiscoverDevices bluetoothDiscoverDevices = MPManager.INSTANCE.getBluetooth().getDiscover();
final Function1<MPResponse<BluetoothDiscoveryState>, Unit> callback = (final MPResponse<BluetoothDiscoveryState> response) -> {
if (response.getStatus() == ResponseStatus.SUCCESS) {
switch (response.getData().getType()) {
case STARTED:
// Tratar o início da descoberta
break;
case DEVICE_FOUND:
// Tratar a descoberta de um novo dispositivo
final BluetoothDeviceModel foundDevice = response.getData().getDevice();
break;
case DEVICE_CHANGE:
// Tratar alterações em um dispositivo descoberto
final BluetoothDeviceModel changedDevice = response.getData().getDevice();
break;
case ENDED:
// Tratar o fim da descoberta
}
} else {
// Tratar o caso de erro, se necessário
}
return Unit.INSTANCE;
};
bluetoothDiscoverDevices.startDiscovery(callback);
A resposta trará os seguintes valores:
| Nome | Tipo | Descrição |
id | String | Identificador único do dispositivo Bluetooth. |
name | String | Nome do dispositivo criado pelo sistema operacional. |
address | String | Endereço MAC do dispositivo Bluetooth. |
isConnected | Boolean | Indica se o Bluetooth está conectado. Se sim, true e, se não, false. |
Veja abaixo como usar o SDK do Mercado Pago para obter quais dispositivos e impressoras estão emparelhados com o terminal Point, utilizando a classe BluetoothDiscoverDevices do objeto MPManager.
Para obter a lista de dispositivos que estão emparelhados ao terminal Point, utilize a função getPairedDevices, como mostra o exemplo abaixo.
val bluetoothDiscoverDevices = MPManager.bluetooth.discover
bluetoothDiscoverDevices.getPairedDevices { result ->
result
.doIfSuccess { devices ->
// Trabalhar com a lista de dispositivos pareados
}
.doIfError { error ->
// Tratar o caso de erro, se necessário
}
}
final BluetoothDiscoverDevices bluetoothDiscoverDevices = MPManager.INSTANCE.getBluetooth().getDiscover();
final Function1<MPResponse<List<BluetoothDeviceModel>>, Unit> callback = (final MPResponse<List<BluetoothDeviceModel>> response) -> {
if (response.getStatus() == ResponseStatus.SUCCESS) {
final List<BluetoothDeviceModel> devices = response.getData();
// Trabalhar com a lista de dispositivos pareados
} else {
// Tratar o caso de erro, se necessário
}
return Unit.INSTANCE;
};
bluetoothDiscoverDevices.getPairedDevices(callback);
A resposta trará os seguintes valores:
| Nome | Tipo | Descrição |
id | String | Identificador único do dispositivo Bluetooth. |
boundState | Int | Status de emparelhamento do dispositivo. Pode ter diferentes valores representando status distintos, como: - none: dispositivo não emparelhado. - bonding: dispositivo em processo de emparelhamento. - bonded: dispositivo emparelhado. |
name | String | Nome do dispositivo proporcionado pelo sistema operacional. |
address | String | Endereço MAC do dispositivo Bluetooth. |
isConnected | Boolean | Indica se o Bluetooth está conectado. Se sim, true e, se não, false. |