Configurar Bluetooth
El Bluetooth es uno de los recursos de la terminal Point que puedes utilizar con tu SmartApp para ofrecer experiencias más interactivas y versátiles.
El SDK de Mercado Pago ofrece un conjunto de herramientas para simplificar esta configuración y mejorar la conectividad Bluetooth, permitiéndote también configurar el Bluetooth directamente desde la aplicación.
Para incluir directamente en tu aplicación la interfaz de configuración de Bluetooth de la terminal Point, usa el método launch de la clase BluetoothUiSettings, como se muestra en el siguiente ejemplo. Envía el contexto de la aplicación (context) para iniciar la actividad.
val bluetoothUiSettings = MPManager.bluetoothUiSettings
bluetoothUiSettings.launch(context)
final BluetoothUiSettings bluetoothUiSettings = MPManager.INSTANCE.getBluetoothUiSettings();
bluetoothUiSettings.launch(context);
Este componente proporciona diversas funcionalidades, como activar y desactivar el Bluetooth, buscar dispositivos, emparejar y desemparejar, entre otras.
El SDK de Mercado Pago te permite activar, desactivar y verificar el estado actual del Bluetooth de la terminal, utilizando la clase BluetoothIgnitor del objeto MPManager. Observa a continuación cómo realizar cada una de estas acciones.
Para activar y desactivar el Bluetooth en la terminal Point, usa las funciones turnOn o turnOff, respectivamente, como se muestra en el ejemplo a continuación.
val bluetoothIgnitor = MPManager.bluetooth.ignitor
bluetoothIgnitor.turnOn { response ->
response
.doIfSuccess { result ->
if (result) {
// Bluetooth se encendió con éxito
// Realizar acciones adicionales si es necesario
} else {
// No se pudo encender el Bluetooth
}
}.doIfError {
// Manejar el caso de error si es necesario
}
}
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 se encendió con éxito
// Realizar acciones adicionales si es necesario
} else {
// No se pudo encender el Bluetooth
}
} else {
// Manejar el caso de error si es necesario
}
return Unit.INSTANCE;
};
bluetoothIgnitor.turnOn(callback);
Con el Bluetooth de la terminal Point activado, a continuación verás cómo se puede utilizar el SDK de Mercado Pago para buscar, emparejar y desemparejar dispositivos mediante las clases BluetoothDiscoverDevices y BluetoothDevicesPairing del objeto MPManager.
Para localizar un dispositivo para conectarlo vía Bluetooth en la terminal Point, utiliza la función startDiscovery, de la clase BluetoothDiscoverDevices, como muestra el siguiente ejemplo.
val bluetoothDiscover = MPManager.bluetooth.discover
bluetoothDiscover.startDiscovery { response ->
response
.doIfSuccess { discoveryState ->
when (discoveryState.type) {
BluetoothDiscoveryState.Type.STARTED -> {
// Manejar el inicio del descubrimiento
}
BluetoothDiscoveryState.Type.DEVICE_FOUND -> discoveryState.device?.let { device ->
// Manejar el descubrimiento de un nuevo dispositivo
}
BluetoothDiscoveryState.Type.DEVICE_CHANGE -> discoveryState.device?.let { device ->
// Manejar cambios en un dispositivo descubierto
}
BluetoothDiscoveryState.Type.ENDED -> {
// Manejar el fin del descubrimiento
}
}
}
.doIfError { error ->
// Manejar el caso de error si es necesario
}
}
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:
// Manejar el inicio del descubrimiento
break;
case DEVICE_FOUND:
// Manejar el descubrimiento de un nuevo dispositivo
final BluetoothDeviceModel foundDevice = response.getData().getDevice();
break;
case DEVICE_CHANGE:
// Manejar cambios en un dispositivo descubierto
final BluetoothDeviceModel changedDevice = response.getData().getDevice();
break;
case ENDED:
// Manejar el fin del descubrimiento
}
} else {
// Manejar el caso de error si es necesario
}
return Unit.INSTANCE;
};
bluetoothDiscoverDevices.startDiscovery(callback);
La respuesta traerá los siguientes valores:
| Nombre | Tipo | Descripción |
id | String | Identificador único del dispositivo Bluetooth. |
name | String | Nombre del dispositivo creado por el sistema operativo. |
address | String | Dirección MAC del dispositivo Bluetooth. |
isConnected | Boolean | Indica si el Bluetooth está conectado. Si lo está, true y, si no, false. |
Observa a continuación cómo usar el SDK de Mercado Pago para obtener qué dispositivos e impresoras están emparejados con la terminal Point, utilizando la clase BluetoothDiscoverDevices del objeto MPManager.
Para obtener la lista de dispositivos que están emparejados al terminal Point, usa la función getPairedDevices, como muestra el ejemplo de abajo.
val bluetoothDiscoverDevices = MPManager.bluetooth.discover
bluetoothDiscoverDevices.getPairedDevices { result ->
result
.doIfSuccess { devices ->
// Trabajar con la lista de dispositivos emparejados
}
.doIfError { error ->
// Manejar el caso de error si es necesario
}
}
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();
// Trabajar con la lista de dispositivos emparejados
} else {
// Manejar el caso de error si es necesario
}
return Unit.INSTANCE;
};
bluetoothDiscoverDevices.getPairedDevices(callback);
La respuesta traerá los siguientes valores:
| Nombre | Tipo | Descripción |
id | String | Identificador único del dispositivo Bluetooth. |
boundState | Int | Estado de emparejamiento del dispositivo. Puede tener diferentes valores que representan estados distintos, como: - none: dispositivo no emparejado. - bonding: dispositivo en proceso de emparejamiento. - bonded: dispositivo emparejado. |
name | String | Nombre del dispositivo proporcionado por el sistema operativo. |
address | String | Dirección MAC del dispositivo Bluetooth. |
isConnected | Boolean | Indica si el Bluetooth está conectado. Si está conectado, true; si no, false. |