Documentación Android

Documentación Android

Documentación Android

1. Introducción

El presente documento describe el SDK de Beat One Watch que permitirá que cualquier app pueda comunicarse con el smartwatch e interactuar con él.

2. Instalación

Añade la URL de nuestro repositorio en el gradle de tu proyecto principal (directorio raiz):
 allprojects {
  repositories {
   [...]
   maven {
    url "https://raw.githubusercontent.com/beat-one/android-sdk/master"
   }
  }
 }
A continuación puedes añadir la librería al gradle del módulo en el que quieras usarla:
 dependencies {
  [...]
  implementation 'com.beatone:beat-one-sdk:1.0.3'
  [...]
 }

3. Primeros pasos

Procederemos a continuación a describir los pasos fundamentales para el escaneo y conexión a dispositivos.
  1. Crear listener de conexión.
  2.  val connectionListener = object : BOConnectionListener {
      override fun deviceOnConnectionError(deviceType: Int, errorCode: Int) {
       runOnUiThread {
        setConnectionText()
       }
      }

      override fun deviceOnConnectionChanged(deviceType: Int, status: Int) {
       runOnUiThread {
        setConnectionText()
       }
      }
     }

  3. Crear listener para la recepción de datos de la pulsera.
  4.  val deviceListener: BO1963YHListener = object : BO1963YHListener {
      override fun onGetTotalStepsDataResponse(success: Boolean, totalStepsData: List<BOStepData>) {
       // Usar el resultado obtenido
      }
      // Sobreescribir otros métodos que se deseen usar
     }
  5. Crear una instancia del manager con el cual nos comunicaremos con la pulsera y asignar los dos listeners que acabamos de crear. Se recomienda tener sólo una instancia de BOManager, por ejemplo mediante Singleton en la clase Application.
  6.  val beatOneSDKManager = BOManager(context)
     beatOneSDKManager.addDeviceListener(connectionListener)
     beatOneSDKManager.setBO1963YHListener(deviceListener)
  7. Realizar la búsqueda y conexión de la pulsera. En este ejemplo se intentará buscar durante 20 segundos:
  8.  beatOneSDKManager.connectDevice(BOConstants.DEVICE_1963YH, 20000)
  9. Una vez conectada se llamará al método correspondiente en BOConnectionListener y ya se podrá realizar operaciones tales como configurar la pulsera o recibir pasos:
  10.  beatOneSDKManager.getTotalStepsData(BOConstants.DeviceDataAction.READ_MOST_RECENT)

4. Clases del SDK

A continuación describiremos las clases principales que integran el SDK:
  • BOManager: Contiene los métodos para conectarnos y comunicarnos con el dispositivo, y para configurar los listeners con los que queremos recibir los datos.
  • BOConnectionListener: Es donde recibiremos los eventos derivados de cambios en la conexión con los dispositivos (se ha conectado o desconectado, etc.)
  • BO1963YHListener: Es donde recibiremos las respuestas del dispositivo cuando ejecutemos comandos.
  • Clases del modelo: Varias clases de utilidad para enviar o recibir datos del dispositivo.
  • BOConstants: Varias constantes y enumeraciones para enviar o recibir datos del dispositivo.
En los siguientes apartados veremos en detalle cada una de estas clases.

4.1. BOManager

BOManager es el punto de entrada al SDK, la clase con la que nos comunicaremos y pediremos todas las instrucciones tanto para conectar como para enviar comandos al reloj. Incluye los listeners BOConnectionListener que enviará los eventos correspondientes al estado de la conexión y BO1963YHListener que enviará los resultados de los comandos enviados al reloj. Se trata de una clase singleton, así que solo debería existir una instancia de este objeto en el proyecto.

Por tanto, la clase BOManager cuenta con las siguientes variables:
Variable Tipo Descripción
deviceListeners ArrayList<BOConnectionListener> Lista de listeners para recibir los eventos de conexión con los dispositivos. BOManager dispone de métodos para añadir y quitar listeners.
bo1963YHListener BO1963YHListener Variable para asignar el controlador que recibirá los eventos de respuesta de las operaciones que realicemos con el dispositivo.
A continuación pasaremos a describir los métodos públicos disponibles en la clase BOManager.

4.1.1. Métodos relacionados con la configuración de listeners

Los siguientes métodos nos permitirán asignar los listeners con los que recibiremos todos los eventos con los que el reloj se comunicará con nosotros.

fun addDeviceListener(connectionListener: BOConnectionListener)

Descripción: Método para añadir un listener de conexión. Puede haber varios listeners de conexión asignados a la vez. Cuando se produzca un evento de conexión, se llamará a todos ellos.
Ejemplo de ejecución:  val connectionListener = object : BOConnectionListener {
  override fun deviceOnConnectionError(deviceType: Int, errorCode: Int) {
   runOnUiThread {
    setConnectionText()
   }
  }
  override fun deviceOnConnectionChanged(deviceType: Int, status: Int) {
   runOnUiThread {
    setConnectionText()
   }
  }
 }
 beatOneSDKManager.addDeviceListener(connectionListener)

fun removeDeviceListener(deviceListener: BOConnectionListener)

Descripción: Método para eliminar un listener de conexión.
Ejemplo de ejecución:  beatOneSDKManager.removeDeviceListener(connectionListener)

fun setBO1963YHListener(deviceListener: BO1963YHListener?)

Descripción: Método para asignar el listener de recepción de datos del reloj de actividad. Sólo puede haber un listener de recepción de datos asignado a la vez. Si se desea asignar otro se debería eliminar el anterior.
Ejemplo de ejecución:  val deviceListener: BO1963YHListener = object : BO1963YHListener {
  override fun onGetTotalStepsDataResponse(success: Boolean, totalStepsData: List) {
   // Usar el resultado obtenido
  }
  // Sobreescribir otros métodos que se deseen usar
 }
 beatOneSDKManager.setBO1963YHListener(deviceListener)

fun getBO1963YHListener(): BO1963YHListener?

Descripción: Método para obtener el listener de recepción de datos del reloj de actividad (y comprobar por ejemplo si está asignado).
Ejemplo de ejecución:  SDKTestApplication.instance?.beatOneSDKManager?.getBO1963YHListener()?.let {
  Log.d(TAG, "Listener is set!")
 }

4.1.2. Métodos relacionados con la conexión con dispositivos

fun connectDevice(deviceType: Int, scanPeriod: Long, address: String? = null)

Descripción: Método para escanear y conectar a un dispositivo.
Parametros:
Atributo Descripción
deviceType El tipo de dispositivo que queremos enviar. Actualmente siempre enviaremos BOConstants.DEVICE_1963YH.
scanPeriod Tiempo en milisegundos que se escaneará para encontrar el dispositivo. Por ejemplo si enviamos 20000 buscaría el dispositivo durante 20 segundos. Si pasado este tiempo no encuentra el dispositivo, se detiene.
address Parámetro opcional para buscar un dispositivo en concreto. Si lo enviamos, se buscará la dirección física (MAC) que enviemos, y sólo conectará en caso de que encuentre el dispositivo con esa dirección física.
Ejemplo de ejecución: beatOneSDKManager.connectDevice(BOConstants.DEVICE_1963YH, 20000)

fun disconnectDevice(deviceType: Int)

Descripción: Método para desconectar de un dispositivo (si estábamos conectados)
Parametros:
Atributo Descripción
deviceType El tipo de dispositivo que queremos enviar. Actualmente siempre enviaremos BOConstants.DEVICE_1963YH.
Ejemplo de ejecución: beatOneSDKManager.disconnectDevice(BOConstants.DEVICE_1963YH)

fun isDeviceConnected(deviceType: Int): Boolean

Descripción: Método para comprobar si estamos conectados a algún dispositivo.
Parametros:
Atributo Descripción
deviceType El tipo de dispositivo que queremos enviar. Actualmente siempre enviaremos BOConstants.DEVICE_1963YH.
Ejemplo de ejecución:  if (beatOneSDKManager.isDeviceConnected(BOConstants.DEVICE_1963YH)) {   Log.d(TAG, "Device is connected!")
 }

fun getDeviceAddress(deviceType: Int): String

Descripción: Obtener la dirección física de un dispositivo, si hay alguno conectado.
Parametros:
Atributo Descripción
deviceType El tipo de dispositivo del que queremos obtener la dirección física. Actualmente siempre enviaremos BOConstants.DEVICE_1963YH.
Ejemplo de ejecución:  var deviceAddress = beatOneSDKManager.getDeviceAddress(BOConstants.DEVICE_1963YH)  Log.d(TAG, "Device address: $deviceAddress")

4.1.3. Métodos para enviar comandos al reloj de actividad

A continuación pasaremos a describir los métodos para enviar comandos a nuestro dispositivo

fun setTime(date: Date)

Descripción: Método para configurar la fecha y hora en el dispositivo. El resultado de la operación se recibirá en el evento onSetTimeResponse
Parametros:
Atributo Tipo Descripción
date Date Describe la fecha que se quiere enviar al dispositivo
Ejemplo de ejecución:  beatOneSDKManager.setTime(Calendar.getInstance().time)

fun getTime()

Descripción: Método para obtener la fecha y hora actual del dispositivo. El resultado de la operación se recibirá en el evento onGetTimeResponse
Ejemplo de ejecución:  beatOneSDKManager.getTime()

fun setUserPersonalInformation(userInformation: BOUserInformation)

Descripción: Método para configurar los parámetros del usuario en el dispositivo. El resultado de la operación se recibirá en el evento onSetUserPersonalInformationResponse
Parametros:
Atributo Tipo Descripción
userInformation BOUserInformation Describe las características del usuario que se quieren enviar al dispositivo
Ejemplo de ejecución:  val gender = BOConstants.UserGender.MALE
 val age = 30
 val height = 170
 val weight = 60
 val strideLength = 120
 beatOneSDKManager.setUserPersonalInformation(BOUserInformation(gender, age, height, weight, strideLength, null))

fun getUserPersonalInformation()

Descripción: Método para obtener los parámetros del usuario configurados en el dispositivo. El resultado de la operación se recibirá en el evento onGetUserPersonalInformationResponse
Ejemplo de ejecución:  beatOneSDKManager.getUserPersonalInformation()

fun setDeviceParameters(deviceParameters: BODeviceParameters)

Descripción: Método para configurar los parámetros del reloj en el dispositivo. El resultado de la operación se recibirá en el evento onSetDeviceParametersResponse
Parametros:
Atributo Tipo Descripción
deviceParameters BODeviceParameters Describe la configuración del reloj que se quiere enviar al dispositivo
Ejemplo de ejecución:  val ancsInfo = BOANCSInformation()
 ancsInfo.phoneCall = true

 SDKTestApplication.instance?.beatOneSDKManager?.setDeviceParameters(
 BODeviceParameters(
  BOConstants.DeviceDistanceUnit.KM,
  BOConstants.DeviceHourDisplay.HOUR_24_DISPLAY,
  wristSenseEnabled = true,
  BOConstants.DeviceTemperatureUnit.CELSIUS,
  nightMode = true,
  ANCSEnabled = true,
  ancsInfo,
  basicHeartRateSetting = 60,
  screenBrightness = 4,
  dialInterface = 0,
  socialDistanceEnabled = false,
  BOConstants.DeviceLanguage.ENGLISH
 ))

fun getDeviceParameters()

Descripción: Método para recuperar los ajustes del dispositivo. El resultado de la operación se recibirá en el evento onGetDeviceParametersResponse
Ejemplo de ejecución:  beatOneSDKManager.getDeviceParameters()

fun setDeviceIDCode(identifier: ByteArray)

Descripción: Método para configurar el identificador de dispositivo. El resultado de la operación se recibirá en el evento onSetDeviceIDCodeResponse
Parametros:
Atributo Tipo Descripción
identifier ByteArray Indica el identificador que se quiere enviar al dispositivo. Tiene que ser un array de 6 bytes.
Ejemplo de ejecución:  beatOneSDKManager.setDeviceIDCode(byteArrayOf(0x66, 0x55, 0x44, 0x33, 0x22, 0x11))

fun setRealTimeStepMode(isRealTimeStepAndHREnabled: Boolean, isRealTimeTemperatureEnabled: Boolean)

Descripción: Método para activar el modo de registro de pasos en tiempo real. Al activarse este modo, el reloj empieza a enviar datos a través del evento onSetRealTimeStepModeResponse.
Parametros:
Atributo Tipo Descripción
isRealTimeStepAndHREnabled Boolean Indica si se desea activar o desactivar el registro de pasos y ritmo cardíaco automático en el dispositivo. Un valor de true activará la medición automática y un valor false detendrá el proceso
isRealTimeTemperatureEnabled Boolean Indica si se desea activar o desactivar el registro de la temperatura
Ejemplo de ejecución:  beatOneSDKManager.setRealTimeStepMode(true, true)

fun setTargetSteps(steps: Int)

Descripción: Método para configurar el objetivo de pasos en el dispositivo. El resultado de la operación se recibirá en el evento onSetTargetStepsResponse
Parametros:
Atributo Tipo Descripción
steps Int Indica el número de pasos a fijar como objetivo diario en el dispositivo
Ejemplo de ejecución:  beatOneSDKManager.setTargetSteps(5000)

fun getTargetSteps()

Descripción: Método para obtener el objetivo de pasos diarios configurado en el dispositivo. El resultado de la operación se recibirá en el evento onGetTargetStepsResponse
Ejemplo de ejecución:  beatOneSDKManager.getTargetSteps()

fun getDeviceBattery()

Descripción: Método para obtener el nivel de batería del reloj. El resultado de la operación se recibirá en el evento onGetDeviceBatteryResponse
Ejemplo de ejecución:  beatOneSDKManager.getDeviceBattery()

fun getMACAddress()

Descripción: Método para obtener la dirección MAC del reloj. El resultado de la operación se recibirá en el evento onGetMACAddressResponse
Ejemplo de ejecución:  beatOneSDKManager.getMACAddress()

fun getSoftwareVersionNumber()

Descripción: Método para obtener la dirección MAC del reloj. El resultado de la operación se recibirá en el evento onGetSoftwareVersionNumberResponse
Ejemplo de ejecución:  beatOneSDKManager.getSoftwareVersionNumber()

fun setFactoryReset()

Descripción: Método para reiniciar los ajustes del reloj a sus valores de fábrica. El resultado de la operación se recibirá en el evento onSetFactoryResetResponse
Ejemplo de ejecución:  beatOneSDKManager.setFactoryReset()

fun setMCUReset()

Descripción: Método para reiniciar reiniciar la unidad del microcontrolador del reloj a sus valores de fábrica. El resultado de la operación se recibirá en el evento onSetMCUResetResponse
Ejemplo de ejecución:  beatOneSDKManager.setMCUReset()

fun setAutomaticHeartRateDetectionPeriod(workingMode: BOConstants.DeviceAutomaticWorkingMode, startTime: BOTime, endTime: BOTime, weekEnable: BOWeekEnabler, periodTime: Int)

Descripción: Método para configurar la toma automática de ritmo cardíaco. El resultado de la operación se recibirá en el evento onSetAutomaticHeartRateDetectionPeriodResponse
Parametros:
Atributo Tipo Descripción
workingMode BOConstants.DeviceAutomaticWorkingMode Indica el modo de configuración de la toma automática de pulso (en rango de horas o intervalo de tiempo)
startTime BOTime Indica la hora de inicio de las mediciones configurada en el reloj
endTime BOTime Indica la hora de finalización de las mediciones configurada en el reloj
weekEnable BOWeekEnabler Indica los días en los que se habilita la toma automática de pulso
periodTime Int Indica la periodicidad en minutos de la toma de mediciones
Ejemplo de ejecución:  SDKTestApplication.instance?.beatOneSDKManager?
 .setAutomaticHeartRateDetectionPeriod(
  workingMode = BOConstants.DeviceAutomaticWorkingMode.IN_INTERVAL,
  startTime = BOTime(10, 0),
  endTime = BOTime(17, 30),
  weekEnable = BOWeekEnabler(true, true, true, true, true, false, false),
  periodTime = 5
 )

fun getAutomaticHeartRateDetectionPeriod()

Descripción: Método para recuperar la configuración de la toma automática de ritmo cardíaco. El resultado de la operación se recibirá en el evento onGetAutomaticHeartRateDetectionPeriodResponse
Ejemplo de ejecución:  beatOneSDKManager.getAutomaticHeartRateDetectionPeriod()

fun setAlarms(alarms: ArrayList<BOAlarmData>)

Descripción: Método para enviar un listado de alarmas al reloj. El resultado de la operación se recibirá en el evento onSetAlarmResponse
Parametros:
Atributo Tipo Descripción
alarmArray [BOAlarmData] Describe una lista de alarmas que se enviarán al dispositivo. Solo pueden enviarse un máximo de 10 alarmas
Ejemplo de ejecución:  val calendar = Calendar.getInstance()
 calendar.add(Calendar.MINUTE, 3)
 val alarm1 = BOAlarmData(
   0,
   true,
   BOConstants.DeviceAlarmType.MEDICINE_REMINDER,
   BOTime(calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE)),
   BOWeekEnabler(true, true, true, true, true, false, false),
   "Take pill")
 beatOneSDKManager.setAlarms(arrayListOf(alarm1))

fun setNotification(type: BOConstants.DeviceANCS, content: String)

Descripción: Método para enviar una notificación al reloj. El resultado de la operación se recibirá en el evento onSetNotificationResponse
Parametros:
Atributo Tipo Descripción
type BOConstants.DeviceANCS Describe el tipo de notificación que se enviará al dispositivo
content String Indica el texto que aparecerá en la pantalla del reloj al recibir la notificación
Ejemplo de ejecución:  beatOneSDKManager.setNotification(BOConstants.DeviceANCS.WHATSAPP, "Hello world!")

fun setActivityPeriod(startTime: BOTime, endTime: BOTime, weekEnable: BOWeekEnabler, motionReminderPeriod: Int, minimumNumberSteps: Int, motionEnabled: Boolean)

Descripción: Método para configurar el periodo de actividad del usuario en el dispositivo. El resultado de la operación se recibirá en el evento onSetActivityPeriodResponse
Parametros:
Atributo Tipo Descripción
startTime BOTime Indica la hora de inicio del periodo de actividad en el dispositivo
endTime BOTime Indica la hora de finalización del periodo de actividad en el dispositivo
weekEnable BOWeekEnabler Describe los días de la semana en que se habilita la actividad el usuario en el dispositivo
motionReminderPeriod Int Indica en minutos la periodicidad de comprobación del recordatorio para que el usuario se mueva
minimumNumberSteps Int Indica el número mínimo de pasos que el usuario debe realizar para considerar que está activo
motionEnabled Boolean Indica si se desea activar o no la detección de movimiento en el reloj
Ejemplo de ejecución:  beatOneSDKManager.setActivityPeriod(
   startTime = BOTime(12, 0),
   endTime = BOTime(14, 0),
   weekEnable = BOWeekEnabler(true, true, true, true, true, false, false),
   motionReminderPeriod = 30,
   minimumNumberSteps = 100,
   motionEnabled = true
 )

fun getActivityPeriod()

Descripción: Método para obtener el periodo de actividad del usuario configurado en el dispositivo. El resultado de la operación se recibirá en el evento onGetActivityPeriodResponse
Ejemplo de ejecución:  beatOneSDKManager.getActivityPeriod()

fun getTotalStepsData(action: BOConstants.DeviceDataAction)

Descripción: Método para realizar operaciones de consulta sobre los pasos almacenados en el dispositivo. El resultado de la operación se recibirá en el evento onGetTotalStepsDataResponse
Parametros:
Atributo Tipo Descripción
action BOConstants.DeviceDataAction Describe la operación a realizar. Este comando solo admite la obtención de los datos más recientes o eliminar los datos en el dispositivo
Ejemplo de ejecución: beatOneSDKManager.getTotalStepsData(
BOConstants.DeviceDataAction.READ_MOST_RECENT)

fun getDetailedStepsData(action: BOConstants.DeviceDataAction, position: Int?)

Descripción: Método para realizar operaciones de consulta de los pasos almacenados en el dispositivo con más detalle. El resultado de la operación se recibirá en el evento onGetDetailedStepsDataResponse
Parametros:
Atributo Tipo Descripción
action BOConstants.DeviceDataAction Describe la operación a realizar. En caso solicitar READ_SPECIFIED o READ_NEXT es necesario indicar la posición que se quiere consultar
position Int Indica la posición del registro que se desea consultar
Ejemplo de ejecución: beatOneSDKManager.getDetailedStepsData(
BOConstants.DeviceDataAction.READ_MOST_RECENT)

fun getDetailedSleepData(action: BOConstants.DeviceDataAction, position: Int?)

Descripción: Método para realizar operaciones de consulta de los datos de sueño almacenados en el dispositivo. El resultado de la operación se recibirá en el evento onGetDetailedSleepDataResponse
Parametros:
Atributo Tipo Descripción
action BOConstants.DeviceDataAction Describe la operación a realizar. En caso solicitar READ_SPECIFIED o READ_NEXT es necesario indicar la posición que se quiere consultar
position Int Indica la posición del registro que se desea consultar
Ejemplo de ejecución: beatOneSDKManager.getDetailedSleepData(
BOConstants.DeviceDataAction.READ_MOST_RECENT)

fun getHeartRateData(action: BOConstants.DeviceDataAction, position: Int?)

Descripción: Método para realizar operaciones de consulta de los datos ritmo cardíaco almacenados en el dispositivo. El resultado de la operación se recibirá en el evento onGetHeartRateDataResponse
Parametros:
Atributo Tipo Descripción
action BOConstants.DeviceDataAction Describe la operación a realizar. En caso solicitar READ_SPECIFIED o READ_NEXT es necesario indicar la posición que se quiere consultar
position Int Indica la posición del registro que se desea consultar
Ejemplo de ejecución: beatOneSDKManager.getHeartRateData(
BOConstants.DeviceDataAction.READ_MOST_RECENT)

fun getSingleHeartRateData(action: BOConstants.DeviceDataAction, position: Int?)

Descripción: Método para realizar operaciones de consulta de los datos ritmo cardíaco almacenados en el dispositivo con más detalle. El resultado de la operación se recibirá en el evento onGetSingleHeartRateDataResponse
Parametros:
Atributo Tipo Descripción
action BOConstants.DeviceDataAction Describe la operación a realizar. En caso solicitar READ_SPECIFIED o READ_NEXT es necesario indicar la posición que se quiere consultar
position Int Indica la posición del registro que se desea consultar
Ejemplo de ejecución: beatOneSDKManager.getSingleHeartRateData(
BOConstants.DeviceDataAction.READ_MOST_RECENT)

fun getHRVData(action: BOConstants.DeviceDataAction, position: Int?)

Descripción: Método para realizar operaciones de consulta de los datos variabilidad de ritmo cardíaco almacenados en el dispositivo. El resultado de la operación se recibirá en el evento onGetHRVDataResponse
Parametros:
Atributo Tipo Descripción
action BOConstants.DeviceDataAction Describe la operación a realizar. En caso solicitar READ_SPECIFIED o READ_NEXT es necesario indicar la posición que se quiere consultar
position Int Indica la posición del registro que se desea consultar
Ejemplo de ejecución: beatOneSDKManager.getHRVData(
BOConstants.DeviceDataAction.READ_MOST_RECENT)

fun getAlarmData(action: BOConstants.DeviceDataAction)

Descripción: Método para obtener las alarmas configuradas en el dispositivo. El resultado de la operación se recibirá en el evento onGetAlarmDataResponse
Parametros:
Atributo Tipo Descripción
action BOConstants.DeviceDataAction Describe la operación a realizar. Esta operación solo admite las operaciones READ_MOST_RECENT o DELETE
Ejemplo de ejecución: beatOneSDKManager.getAlarmData(
BOConstants.DeviceDataAction.READ_MOST_RECENT)

fun getSportsData(action: BOConstants.DeviceDataAction, position: Int?)

Descripción: Método para realizar operaciones de consulta de los datos de actividad deportiva almacenados en el dispositivo. El resultado de la operación se recibirá en el evento onGetSportsDataResponse
Parametros:
Atributo Tipo Descripción
action BOConstants.DeviceDataAction Describe la operación a realizar. En caso solicitar READ_SPECIFIED o READ_NEXT es necesario indicar la posición que se quiere consultar
position Int Indica la posición del registro que se desea consultar
Ejemplo de ejecución: beatOneSDKManager.getSportsData(
BOConstants.DeviceDataAction.READ_MOST_RECENT)

fun sportModeControlEnable(controlMode: BOConstants.DeviceControlMode, sportMode: BOConstants.DeviceSportMode, levelSelection: Int?, timePeriod: Int)

Descripción: Método para activar el modo de actividad deportiva en el dispositivo. El resultado de la operación se recibirá en el evento onSportModeControlEnableResponse. Al activar este modo, se empiezan a recibir eventos onBraceletHeartBeatPacketReceived cada segundo, con los datos de la actividad. Para salir del modo de actividad deportiva es necesario enviar el comando nuevamente con el parámetro END
Parametros:
Atributo Tipo Descripción
controlMode BOConstants.DeviceControlMode Indica la operación a realizar sobre la actividad deportiva iniciada (inicar, pausar, continuar o detener)
sportMode BOConstants.DeviceSportMode Indica el tipo de actividad deportiva que se va a realizar
levelSelection Int Debe indicarse en caso de que la actividad deportiva sea BREATH. En ese caso, se debe indicar un valor entre 0 y 2
timePeriod Int Indica el periodo de actividad deportiva previsto en minutos
Ejemplo de ejecución:  beatOneSDKManager.sportModeControlEnable(
   controlMode = BOConstants.DeviceControlMode.START,
   sportMode = BOConstants.DeviceSportMode.RUN,
   levelSelection = 0,
   timePeriod = 5)

fun sendAppHeartbeatPacket(distance: Double, paceMinutes: Int, paceSeconds: Int, mobileGPSStrengthSignal: Int)

Descripción: Al activar el modo de actividad deportiva con el comando sportModeControlEnable, es posible enviar información al reloj para que sea mostrada en la pantalla del dispositivo. Esta información puede enviarse cada segundo, para poder actualizar los datos en pantalla.
Parametros:
Atributo Tipo Descripción
distance Double Indica la distancia recorrida en kilómetros
paceMinutes Int Indica ritmo del ejercicio (minutos). Valor más lento es 255m:59s
paceSeconds Int Indica ritmo del ejercicio (segundos). Valor más lento es 255m:59s
mobileGPSStrengthSignal Int Indica la intensidad de la señal GPS. Admite los valores de 1 a 3
Ejemplo de ejecución:  beatOneSDKManager.sendAppHeartbeatPacket(
   distance = 0.1,
   paceMinutes = 6,
   paceSeconds = 0,
   mobileGPS = 2)

fun setUpdateWeatherStatus(weatherStatus: BOConstants.WeatherStatus, temperature: Int)

Descripción: Método para configurar el tiempo atmosférico y la temperatura en el dispositivo. El resultado de la operación se recibirá en el evento onSetUpdateWeatherStatusResponse
Parametros:
Atributo Tipo Descripción
weatherStatus BOConstants.WeatherStatus Describe el tiempo atmosférico que se quiere presentar en el reloj
temperature Int Indica la temperatura ambiental en grados
Ejemplo de ejecución:  val weatherStatus = BOConstants.WeatherStatus.SUNNY
 val temperature = 20
 beatOneSDKManager.setUpdateWeatherStatus(weatherStatus, temperature)

fun setPhotoMode()

Descripción: Método para activar el modo de disparo de fotografías desde el dispositivo. Al activarse, en la pantalla del reloj aparece un botón que, al ser pulsado, envía el evento onFirmwareCommandReceived para activar el disparador de la cámara en el móvil. El resultado de la operación se recibirá en el evento onSetPhotoModeResponse
Ejemplo de ejecución:  beatOneSDKManager.setPhotoMode()

fun clearHistoricalSportData()

Descripción: Método para eliminar la información histórica referente a la actividad deportiva. El resultado de la operación se recibirá en el evento onClearHistoricalSportDataResponse
Ejemplo de ejecución:  beatOneSDKManager.clearHistoricalSportData()

fun getBloodOxygenData(action: BOConstants.DeviceDataAction, position: Int?)

Descripción: Método para realizar operaciones de consulta de los datos de oxígeno en sangre almacenados en el dispositivo. El resultado de la operación se recibirá en el evento onGetBloodOxygenDataResponse
Parametros:
Atributo Tipo Descripción
action BOConstants.DeviceDataAction Describe la operación a realizar. En caso solicitar READ_SPECIFIED o READ_NEXT es necesario indicar la posición que se quiere consultar
position Int Indica la posición del registro que se desea consultar
Ejemplo de ejecución: beatOneSDKManager.getBloodOxygenData(
BOConstants.DeviceDataAction.READ_MOST_RECENT)

fun getTemperatureData(action: BOConstants.DeviceDataAction, position: Int?)

Descripción: Método para realizar operaciones de consulta de los datos de temperatura almacenados en el dispositivo. El resultado de la operación se recibirá en el evento onGetTemperatureDataResponse
Parametros:
Atributo Tipo Descripción
action BOConstants.DeviceDataAction Describe la operación a realizar. En caso solicitar READ_SPECIFIED o READ_NEXT es necesario indicar la posición que se quiere consultar
position Int Indica la posición del registro que se desea consultar
Ejemplo de ejecución: beatOneSDKManager.getTemperatureData(
BOConstants.DeviceDataAction.READ_MOST_RECENT)

fun setSocialDistanceReminder(interval: Int, duration: Int, alarmSignal: Int)

Descripción: Método para configurar el recordatorio de distancia social en el dispositivo. El resultado de la operación se recibirá en el evento onSetSocialDistanceReminderResponse
Parametros:
Atributo Tipo Descripción
interval Int Indica el intervalo de escaneo de otros relojes cercanos
duration Int Indica la duración de cada escaneo de dispositivos
alarmSignal Int Indica la alarma configurada para sonar cuando no se cumpla la distancia social
Ejemplo de ejecución:  val interval = 2
 val duration = 20
 val alarmSignal = 1
 beatOneSDKManager.setSocialDistanceReminder(interval, duration, alarmSignal)

fun getSocialDistanceReminder()

Descripción: Método para obtener la fecha y hora actual del dispositivo. El resultado de la operación se recibirá en el evento onGetSocialDistanceReminderResponse
Ejemplo de ejecución:  beatOneSDKManager.getSocialDistanceReminder()

fun setAutomaticBloodOxygenDetectionPeriod(workingMode: BOConstants.DeviceAutomaticWorkingMode, startTime: BOTime, endTime: BOTime, weekEnable: BOWeekEnabler, periodTime: Int)

Descripción: Método para configurar la toma automática de ritmo cardíaco. El resultado de la operación se recibirá en el evento onSetAutomaticBloodOxygenDetectionPeriodResponse
Parametros:
Atributo Tipo Descripción
workingMode BOConstants.DeviceAutomaticWorkingMode Indica el modo de configuración de la toma automática de pulso (en rango de horas o intervalo de tiempo)
startTime BOTime Indica la hora de inicio de las mediciones configurada en el reloj
endTime BOTime Indica la hora de finalización de las mediciones configurada en el reloj
weekEnable BOWeekEnabler Indica los días en los que se habilita la toma automática de pulso
periodTime Int Indica la periodicidad en minutos de la toma de mediciones
Ejemplo de ejecución:  SDKTestApplication.instance?.beatOneSDKManager?.
   setAutomaticBloodOxygenDetectionPeriod(
  workingMode = BOConstants.DeviceAutomaticWorkingMode.IN_INTERVAL,
  startTime = BOTime(10, 0),
  endTime = BOTime(17, 30),
  weekEnable = BOWeekEnabler(true, true, true, true, true, false, false),
  periodTime = 5
 )

fun getAutomaticBloodOxygenDetectionPeriod()

Descripción: Método para recuperar la configuración de la toma automática de ritmo cardíaco. El resultado de la operación se recibirá en el evento onGetAutomaticBloodOxygenDetectionPeriodResponse
Ejemplo de ejecución:  beatOneSDKManager.getAutomaticBloodOxygenDetectionPeriod()

4.2. BOConnectionListener

BOConnectionListener es el protocolo que incluye los eventos de conexión con los dispositivos. Con estos eventos podremos saber cuándo ha cambiado la conexión con un dispositivo: desconectado, conectado, etc. A continuación vamos a describir los eventos de conexión que puede enviar BOConnectionListener:

fun deviceOnConnectionError(deviceType: Int, errorCode: Int)

Este evento se recibe en caso que haya algún error durante el escaneo o conexión con los dispositivos.
Atributo Tipo Descripción
deviceType Int El tipo de dispositivo con el que estábamos intentando conectar cuando se ha producido el error. Actualmente siempre será BOConstants.DEVICE_1963YH.
errorCode Int Nos indica qué error ha ocurrido. En la sección Errores de conexión tenemos una tabla con los posibles errores.

fun deviceOnConnectionChanged(deviceType: Int, status: Int)

Este evento se recibe cuando cambia el estado de conexión de un dispositivo (empieza el escaneo, se ha detectado un dispositivo y está conectando, finalizó la conexión o bien se ha desconectado un dispositivo).
Atributo Tipo Descripción
deviceType Int El tipo de dispositivo que ha producido el evento. Actualmente siempre será BOConstants.DEVICE_1963YH.
status Int Nos indica el nuevo estado con el dispositivo. En la sección Estados de conexión se enumeran los diferentes estados que se pueden devolver.

4.3. BO1963YHListener

BO1963YHListener es el protocolo que incluye los eventos de comunicación de resultados. Después de que enviemos un comando al reloj, éste procesará el comando y cuando acabe llamará al método correspondiente de este listener.

onSetTimeResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando setTime
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onGetTimeResponse(success: Boolean, date: Date?)

Evento que se recibe como respuesta a una petición al comando getTime
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
date Date Si el comando se ha procesado correctamente, indica la fecha configurada en el reloj

onSetUserPersonalInformationResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando setUserPersonalInformation
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onGetUserPersonalInformationResponse(success: Boolean, userInformation: BOUserInformation?)

Evento que se recibe como respuesta a una petición al comando getUserPersonalInformation
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
userInformation BOUserInformation Si el comando se ha procesado correctamente, describe la información del usuario configurada en el reloj

onSetDeviceParametersResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando setDeviceParameters
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onGetDeviceParametersResponse(success: Boolean, deviceParameters: BODeviceParameters?)

Evento que se recibe como respuesta a una petición al comando getDeviceParameters
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
deviceParameters BODeviceParameters Si el comando se ha procesado correctamente, describe los parámetros de configuración del reloj

onSetDeviceIDCodeResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando setDeviceIDCode. Este comando no tiene un comando de recuperación del dato como tal, sino que el identificador fijado por este comando se puede recuperar en el comando getUserPersonalInformation.
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onSetRealTimeStepModeResponse(success: Boolean, stepInformation: BORealTimeStepData?)

Evento que se recibe como respuesta a una petición al comando setRealTimeStepMode
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
stepInformation BORealTimeStepData Si el comando se ha procesado correctamente, describe la información referente a los pasos realizados por el usuario

onSetTargetStepsResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando setTargetSteps
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onGetTargetStepsResponse(success: Boolean, steps: Int?)

Evento que se recibe como respuesta a una petición al comando getTargetSteps
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
steps Int Si el comando se ha procesado correctamente, indica el objetivo de pasos diario configurado en el reloj

onGetDeviceBatteryResponse(success: Boolean, batteryLevel: Int?)

Evento que se recibe como respuesta a una petición al comando getDeviceBattery
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
batteryLevel Int Si el comando se ha procesado correctamente, indica el nivel de batería del reloj en porcentaje

onGetMACAddressResponse(success: Boolean, macAddress: String?)

Evento que se recibe como respuesta a una petición al comando getMACAddress
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
macAddress String Si el comando se ha procesado correctamente, indica la dirección MAC del reloj

onGetSoftwareVersionNumberResponse(success: Boolean, version: String?, date: Date?)

Evento que se recibe como respuesta a una petición al comando getSoftwareVersionNumber
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
version String Si el comando se ha procesado correctamente, indica la versión del firmware instalado en el reloj
date Date Si el comando se ha procesado correctamente, indica la fecha de la versión del firmware instalado en el reloj

onSetFactoryResetResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando setFactoryReset
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onSetMCUResetResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando setMCUReset
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onSetAutomaticHeartRateDetectionPeriodResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando setAutomaticHeartRateDetectionPeriod
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onGetAutomaticHeartRateDetectionPeriodResponse(success: Boolean, workingMode: BOConstants.DeviceAutomaticWorkingMode?, startTime: BOTime?, endTime: BOTime?, weekEnable: BOWeekEnabler?, periodTime: Int?)

Evento que se recibe como respuesta a una petición al comando getAutomaticHeartRateDetectionPeriod
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
workingMode BOConstants.DeviceAutomaticWorkingMode Si el comando se ha procesado correctamente, indica el modo de configuración de la toma automática de pulso (en rango de horas o intervalo de tiempo)
startTime BOTime Si el comando se ha procesado correctamente, indica la hora de inicio de las mediciones configurada en el reloj
endTime BOTime Si el comando se ha procesado correctamente, indica la hora de finalización de las mediciones configurada en el reloj
weekEnable BOWeekEnabler Si el comando se ha procesado correctamente, indica los días en los que se habilita la toma automática de pulso
periodTime Int Si el comando se ha procesado correctamente, indica la periodicidad en minutos de la toma de mediciones

onSetAlarmResponse(success: Boolean, alarms: List<Int>?)

Evento que se recibe como respuesta a una petición al comando setAlarms
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
alarms List<Int> Si el comando se ha procesado correctamente, describe una lista con los identificadores de las alarmas que se han configurado correctamente

onSetNotificationResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando setNotification
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onSetActivityPeriodResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando setActivityPeriod
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onGetActivityPeriodResponse(success: Boolean, startTime: BOTime?, endTime: BOTime?, weekEnable: BOWeekEnabler?, motionReminderPeriod: Int?, minimumNumberSteps: Int?, motionEnabled: Bool?)

Evento que se recibe como respuesta a una petición al comando getActivityPeriod
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
startTime BOTime Si el comando se ha procesado correctamente, indica la hora de inicio del periodo activo del usuario
endTime BOTime Si el comando se ha procesado correctamente, indica la hora de finalización del periodo activo del usuario
weekEnable BOWeekEnabler Si el comando se ha procesado correctamente, describe los días de de la semana del periodo activo del usuario
motionReminderPeriod Int Si el comando se ha procesado correctamente, indica el intervalo de recordatorio de movimiento en minutos
minimumNumberSteps Int Si el comando se ha procesado correctamente, indica el número mínimo de pasos a aplicar en el periodo de actividad
motionEnabled Boolean Si el comando se ha procesado correctamente, indica si se habilita la detección de movimiento o no

onGetTotalStepsDataResponse(success: Boolean, totalStepsData: [BOStepData]?)

Evento que se recibe como respuesta a una petición al comando getTotalStepsData
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
totalStepsData [BOStepData] Si el comando se ha procesado correctamente, describe el listado de registros con la actividad de pasos almacenada en el reloj. En caso de una operación de borrado de datos, solo se retorna el primer parámetro

onGetDetailedStepsDataResponse(success: Boolean, stepData: [BODetailedStepData]?)

Evento que se recibe como respuesta a una petición al comando getDetailedStepsData
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
stepData [BODetailedStepData] Si el comando se ha procesado correctamente, describe el listado de registros con el detalle de la actividad de pasos almacenada en el reloj. En caso de una operación de borrado de datos, solo se retorna el primer parámetro

onGetDetailedSleepDataResponse(success: Boolean, sleepData: [BOSleepData]?)

Evento que se recibe como respuesta a una petición al comando getDetailedSleepData
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
sleepData [BOSleepData] Si el comando se ha procesado correctamente, describe el listado de registros con el detalle de la actividad de sueño almacenada en el reloj. En caso de una operación de borrado de datos, solo se retorna el primer parámetro

onGetHeartRateDataResponse(success: Boolean, heartRateData: [BOHeartRateData]?)

Evento que se recibe como respuesta a una petición al comando getHeartRateData
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
heartRateData [BOHeartRateData] Si el comando se ha procesado correctamente, describe el listado de registros con las mediciones de ritmo cardíaco detallado almacenadas en el reloj. En caso de una operación de borrado de datos, solo se retorna el primer parámetro

onGetSingleHeartRateDataResponse(success: Boolean, heartRateData: [BOSingleHeartRateData]?)

Evento que se recibe como respuesta a una petición al comando getSingleHeartRateData
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
heartRateData [BOHeartRateData] Si el comando se ha procesado correctamente, describe el listado de registros con las mediciones de ritmo cardíaco almacenadas en el reloj. En caso de una operación de borrado de datos, solo se retorna el primer parámetro

onGetHRVDataResponse(success: Boolean, hrvData: [BOHRVData]?)

Evento que se recibe como respuesta a una petición al comando getHRVData
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
hrvData [BOHRVData] Si el comando se ha procesado correctamente, describe el listado de registros de variabilidad de ritmo cardíaco almacenadas en el reloj. En caso de una operación de borrado de datos, solo se retorna el primer parámetro

onGetAlarmDataResponse(success: Boolean, alarmData: [BOAlarmData]?)

Evento que se recibe como respuesta a una petición al comando getAlarmData
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
alarmData [BOAlarmData] Si el comando se ha procesado correctamente, describe el listado de alarmas configuradas en el reloj. En caso de una operación de borrado de datos, solo se retorna el primer parámetro

onGetSportsDataResponse(success: Boolean, sportData: [BOSportData]?)

Evento que se recibe como respuesta a una petición al comando getSportsData
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
sportData [BOSportData] Si el comando se ha procesado correctamente, describe el listado de registros de actividad deportiva almacenados en el reloj. En caso de una operación de borrado de datos, solo se retorna el primer parámetro

onSportModeControlEnableResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando sportModeControlEnable
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onBraceletHeartBeatPacketReceived(success: Boolean, sportData: BOSportData?)

Evento que se recibe si se ha activado el modo de actividad deportiva mediante el comando sportModeControlEnable. Este evento se recibe cada segundo mientras se mantiene activo el modo de actividad deportiva.
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
sportData BOSportData Si el comando se ha procesado correctamente, indica los datos asociados a la actividad deportiva iniciada

onSetUpdateWeatherStatusResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando setUpdateWeatherStatus
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onSetPhotoModeResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando setPhotoMode
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onFirmwareCommandReceived(success: Boolean, command: BOConstants.DeviceFirmwareCommand?, enable: Bool?)

Evento que se recibe desde el reloj sin ser solicitado. Este comando puede recibirse al activar el modo de disparo de fotografías remoto, iniciar o acabar una llamada, controlar un elemento multimedia o activar la funcionalidad de encontrar el móvil desde el reloj.
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
success BOConstants.DeviceFirmwareCommand Indica el tipo de funcionalidad que se ha activado desde el reloj
enable Boolean Indica si debe activarse o desactivarse la funcionalidad anterior

onClearHistoricalSportDataResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando clearHistoricalSportData
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onGetBloodOxygenDataResponse(success: Boolean, oxygenData: [BOOxygenData]?)

Evento que se recibe como respuesta a una petición al comando getBloodOxygenData
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
oxygenData [BOOxygenData] Si el comando se ha procesado correctamente, describe el listado de registros de oxígeno en sangre almacenados en el reloj. En caso de una operación de borrado de datos, solo se retorna el primer parámetro

onGetTemperatureDataResponse(success: Boolean, temperatureData: [BOTemperatureData]?)

Evento que se recibe como respuesta a una petición al comando getTemperatureData
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
temperatureData [BOTemperatureData] Si el comando se ha procesado correctamente, describe el listado de registros de temperatura almacenados en el reloj. En caso de una operación de borrado de datos, solo se retorna el primer parámetro

onProcessSOSFunctionReceived()

Evento que se recibe desde el reloj sin ser solicitado. Este comando se recibe al activar el envío de alerta SOS desde el reloj. No se recibe ningún parámetro adicional.

onSetSocialDistanceReminderResponse(success: Boolean, interval: Int?, duration: Int?, alarmSignal: Int?)

Evento que se recibe como respuesta a una petición al comando setSocialDistanceReminder
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
interval Int Si el comando se ha procesado correctamente, indica el intervalo de comprobación de distancia social en minutos
duration Int Si el comando se ha procesado correctamente, indica la duración de la comprobación de distancia social en segundos
alarmSignal Int Si el comando se ha procesado correctamente, indica la alarma configurada en caso de que la distancia social no se cumpla

onGetSocialDistanceReminderResponse(success: Boolean, interval: Int?, duration: Int?, alarmSignal: Int?)

Evento que se recibe como respuesta a una petición al comando getSocialDistanceReminder
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
interval Int Si el comando se ha procesado correctamente, indica el intervalo de comprobación de distancia social en minutos
duration Int Si el comando se ha procesado correctamente, indica la duración de la comprobación de distancia social en segundos
alarmSignal Int Si el comando se ha procesado correctamente, indica la alarma configurada en caso de que la distancia social no se cumpla

onSetAutomaticBloodOxygenDetectionPeriodResponse(success: Boolean)

Evento que se recibe como respuesta a una petición al comando setAutomaticBloodOxygenDetectionPeriod
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no

onGetAutomaticBloodOxygenDetectionPeriodResponse(success: Boolean, workingMode: BOConstants.DeviceAutomaticWorkingMode?, startTime: BOTime?, endTime: BOTime?, weekEnable: BOWeekEnabler?, periodTime: Int?)

Evento que se recibe como respuesta a una petición al comando getAutomaticBloodOxygenDetectionPeriod
Atributo Tipo Descripción
success Boolean Indica si el comando ha sido procesado correctamente o no
workingMode BOConstants.DeviceAutomaticWorkingMode Si el comando se ha procesado correctamente, indica el modo de configuración de la toma automática de pulso (en rango de horas o intervalo de tiempo)
startTime BOTime Si el comando se ha procesado correctamente, indica la hora de inicio de las mediciones configurada en el reloj
endTime BOTime Si el comando se ha procesado correctamente, indica la hora de finalización de las mediciones configurada en el reloj
weekEnable BOWeekEnabler Si el comando se ha procesado correctamente, indica los días en los que se habilita la toma automática de pulso
periodTime Int Si el comando se ha procesado correctamente, indica la periodicidad en minutos de la toma de mediciones

4.4. Clases del modelo

A continuación repasaremos una serie de clases que servirán de utilidad para enviar parámetros o recibir respuestas de los comandos del reloj.

BOUserInformation

Esta clase contiene los atributos propios del usuario del reloj. Se utiliza tanto para configurar esta información en el dispositivo como para recuperar la información configurada en él.
Atributo Tipo Descripción
gender BOConstants.UserGender Describe el género del usuario
age Int Describe la edad del usuario
height Int Describe la altura del usuario, indicada en centímetros
weight Int Describe el peso del usuario, indicado en kilogramos (no se admiten decimales)
strideLength Int Describe la longitud de la zancada del usuario, indicada en centímetros
deviceId String Parámetro reservado. Describe el identificador de dispositivo que se establece con el comando setDeviceIDCode

BODeviceParameters

Esta clase contiene los atributos propios del dispositivo. Se utiliza tanto para configurar esta información en el dispositivo como para recuperar la información configurada en él.
Atributo Tipo Descripción
distanceUnit BOConstants.DeviceDistanceUnit Describe la unidad de distancia configurada en el reloj (km o millas)
hourDisplay BOConstants.DeviceHourDisplay Describe el formato de hora configurada en el reloj (12h o 24h)
wristSenseEnabled Boolean Describe si está activada la vibración del reloj
temperatureUnit BOConstants.DeviceTemperatureUnit Describe la unidad de temperatura configurada en el reloj (grados Celsius o Fahrenheit)
nightMode Boolean Describe si está activado el modo nocturno en el reloj
ANCSEnabled Boolean Describe si está activada la alerta de recepción de contenido en redes sociales
ANCSInformation BOANCSInformation Describe la activación de alertas de recepción de contenido por cada red social
basicHeartRateSetting Int Describe el nivel de activación del ritmo cardíaco. El valor debe ser superior a 40
screenBrightness Int Describe el nivel de iluminación de la pantalla del reloj. El valor debe estar comprendido entre 0 (más brillo) y 15 (menos brillo)
dialInterface Int Describe el diseño de pantalla configurado en el reloj. El valor debe estar comprendido entre 0 y 5
socialDistanceEnabled Boolean Describe si está activada la alerta de distancia social comprometida
language BOConstants.DeviceLanguage Describe el idioma configurado en el reloj (Inglés o Chino)

BOANCSInformation

Esta clase contiene los atributos propios de la activación de avisos para los servicios del móvil o cada una de las redes sociales descritas.
Atributo Tipo Descripción
phoneCall Boolean Describe si se recibirá una alerta si se produce una llamada telefónica
mobilePhoneInformation Boolean Describe si se recibirá una alerta si se produce la llegada de un SMS
wechat Boolean Describe si se recibirá una alerta si se recibe un mensaje de WeChat
facebook Boolean Describe si se recibirá una alerta si se recibe un mensaje de Facebook
instagram Boolean Describe si se recibirá una alerta si se recibe un mensaje de Instagram
skype Boolean Describe si se recibirá una alerta si se recibe un mensaje de Skype
telegram Boolean Describe si se recibirá una alerta si se recibe un mensaje de Telegram
twitter Boolean Describe si se recibirá una alerta si se recibe un mensaje de Twitter
vkclient Boolean Describe si se recibirá una alerta si se recibe un mensaje de VKClient
whatsapp Boolean Describe si se recibirá una alerta si se recibe un mensaje de WhatsApp
qq Boolean Describe si se recibirá una alerta si se recibe un mensaje de QQ
in_ Boolean Describe si se recibirá una alerta si se recibe un mensaje de IN

BOTime

Esta clase contiene los atributos propios de una hora. Se utiliza tanto para enviar datos horarios al reloj como para recibirlos.
Atributo Tipo Descripción
hour Int Describe el componente "hora" de una hora
minutes Int Describe el componente "minutos" de una hora
seconds Int Describe el componente "segundos" de una hora

BOWeekEnabler

Esta clase contiene los atributos propios de la activación de cierta característica por semana. Permite activar o desactivar el servicio por cada uno de los días de la semana.
Atributo Tipo Descripción
monday Boolean Describe la activación o desactivación los lunes
tuesday Boolean Describe la activación o desactivación los martes
wednesday Boolean Describe la activación o desactivación los miércoles
thursday Boolean Describe la activación o desactivación los jueves
friday Boolean Describe la activación o desactivación los viernes
saturday Boolean Describe la activación o desactivación los sábados
sunday Boolean Describe la activación o desactivación los domingos

BOGeneralStepData

Esta clase contiene los atributos propios de una actividad relacionada con pasos.
Atributo Tipo Descripción
steps Int Describe el número de pasos
calories Int Describe la energía consumida en calorías
distance Int Describe la distancia recorrida en metros
duration Int Describe la duración de la actividad en segundos

BOStepData

Esta clase contiene los atributos propios del registro de una actividad relacionada con pasos. Es una clase que hereda los atributos de BOGeneralStepData, añadiendo algunas características.
Atributo Tipo Descripción
id Int Describe el identificador del registro de pasos
date Date Describe la fecha del registro de pasos
target Int Describe el objetivo en pasos
rapidMovement Int Describe la duración de la actividad intensiva en segundos

BORealTimeStepData

Esta clase contiene los atributos propios del registro en tiempo real de una actividad relacionada con pasos.
Atributo Tipo Descripción
steps Int Describe el número de pasos
calories Int Describe la energía consumida en calorías
distance Int Describe la distancia recorrida en metros
movementTime Int Describe la duración de la actividad en segundos
rapidMovementTime Int Describe la duración de la actividad intensiva en segundos
heartRate Int Describe el ritmo cardíaco registrado durante la actividad
temperature Date Describe la temperatura registrada durante la actividad

BODetailedStepData

Esta clase contiene los atributos propios del registro de una actividad relacionada con pasos con el detalle de los pasos realizados por minuto. Es una clase que hereda los atributos de BOStepData.
Atributo Tipo Descripción
stepsPerMinute List<Int> Describe los pasos realizados durante la actividad en intervalos de un minuto, con un máximo de 10 elementos (10 minutos)

BOSleepData

Esta clase contiene los atributos propios de la actividad de sueño.
Atributo Tipo Descripción
id Int Describe el identificador del registro de sueño
date Date Describe la fecha del registro de sueño
duration Int Describe la duración del sueño en segundos
sleepPer5Minutes List<Int> Describe la calidad del sueño durante el periodo indicado, a intervalos de cinco minutos y con un máximo de 24 elementos (dos horas)

BOHeartRateData

Esta clase contiene los atributos propios del ritmo cardíaco.
Atributo Tipo Descripción
id Int Describe el identificador del registro de ritmo cardíaco
date Date Describe la fecha del registro de ritmo cardíaco
heartRateEveryMinute List<Int> Describe las pulsaciones por minuto, con un máximo de 15 elementos (15 minutos)

BOSingleHeartRateData

Esta clase contiene los atributos de una medición de ritmo cardíaco.
Atributo Tipo Descripción
id Int Describe el identificador del registro de ritmo cardíaco
date Date Describe la fecha del registro de ritmo cardíaco
heartRate Int Describe las pulsaciones registradas

BOHRVData

Esta clase contiene los atributos de la variabilidad de ritmo cardíaco (HRV). Es una clase que hereda los atributos de BOSingleHeartRateData
Atributo Tipo Descripción
hrv Int Describe el valor de variabilidad de ritmo cardíaco
bloodVesselAging Int Describe el valor de envejecimiento de los vasos sanguíneos
fatigue Int Describe el valor de fatiga
highBloodPressure Int Describe el valor de sistólica (presión arterial alta)
lowBloodPressure Int Describe el valor de diastólica (presión arterial baja)

BOAlarmData

Esta clase contiene los atributos correspondientes a las alarmas.
Atributo Tipo Descripción
alarmEnabled Boolean Describe si la alarma debe ser activada o no
alarmType BOConstants.DeviceAlarmType Describe el tipo de alarma
alarmTime BOTime Describe la hora en que se quiere fijar la alarma
weekEnable BOWeekEnabler Describe los días de la semana en que se quiere fijar la alarma
alarmText String Describe el texto que aparecerá en la pantalla del reloj mientras suena la alarma

BOSportData

Esta clase contiene los atributos correspondientes a una sesión de entrenamiento deportivo.
Atributo Tipo Descripción
id Int Describe el identificador del registro de entrenamiento deportivo
date Date Describe la fecha del registro de entrenamiento deportivo
sportType BOConstants.DeviceSportMode Describe el tipo de actividad deportiva
heartRate Int Describe el ritmo cardíaco durante la sesión de entreno
movementTime Int Describe la duración del entrenamiento en segundos
steps Int Describe el número de pasos realizados durante el entrenamiento
movementSpeed BOTime Describe la velocidad del entrenamiento, como el tiempo necesario para recorrer un kilómetro al ritmo registrado
calories Int Describe las calorías consumidas durante el entrenamiento en calorías
distance Int Describe la distancia recorrida durante el entrenamiento en metros

BOOxygenData

Esta clase contiene los atributos correspondientes al registro de oxígeno en sangre.
Atributo Tipo Descripción
id Int Describe el identificador del registro de oxígeno en sangre
date Date Describe la fecha del registro de oxígeno en sangre
bloodOxygen Int Describe el porcentaje de oxígeno en sangre

BOTemperatureData

Esta clase contiene los atributos correspondientes al registro de temperatura del usuario.
Atributo Tipo Descripción
id Int Describe el identificador del registro de temperatura del usuario
date Date Describe la fecha del registro de temperatura del usuario
temperature Int Describe la temperatura registrada

4.5. BOConstants

Esta clase contiene todas las constantes y enumeraciones (Enum) del SDK. A continuación se describe cada grupo de constantes y los valores respectivos.

Errores en la conexión

Describe los permisos de acceso al módulo Bluetooth.
Constante Valor Descripción
CODE_BLUETOOTH_DISABLED -1 El Bluetooth está desactivado.
CODE_LOCATION_DISABLED -2 No se tienen permisos suficientes de ubicación.
CODE_LOCATION_TURN_OFF -3 La ubicación (GPS) está desactivada.

Estados de conexión

Describe los estados que puede devolver el listener de conexión con dispositivos.
Constante Valor Descripción
STATUS_DISCONNECTED -1 El dispositivo se ha desconectado, o bien hemos acabado un escaneo sin encontrar el dispositivo.
STATUS_SCANNING 0 Ha comenzado la búsqueda del dispositivo.
STATUS_CONNECTING 1 Se ha encontrado un dispositivo y se está conectando.
STATUS_CONNECTED 2 La conexión con el dispositivo ha finalizado correctamente.

UserGender

Indica el género del usuario
Constante Descripción
FEMALE Indica que el usuario es mujer
MALE Indica que el usuario es hombre

DeviceDistanceUnit

Indica la unidad de distancia configurada en el dispositivo.
Constante Descripción
KM Indica que el dispositivo muestra la distancia en kilómetros
MILE Indica que el dispositivo muestra la distancia en millas

DeviceTemperatureUnit

Indica la unidad de temperatura configurada en el dispositivo.
Constante Descripción
CELSIUS Indica que el dispositivo muestra la temperatura en grados centígrados
FAHRENHEIT Indica que el dispositivo muestra la temperatura en grados Fahrenheit

WeatherStatus

Indica el tiempo atmosférico a mostrar en el reloj. Esta constante se utiliza para mostrar un gráfico en la pantalla del smartwatch.
Constante Descripción
SUNNY Indica día soleado
CLOUDY Indica día nublado
RAINY Indica día lluvioso
SNOWY Indica día nevado

DeviceHourDisplay

Indica el formato de hora configurado en el dispositivo
Constante Descripción
HOUR_24_DISPLAY Indica que el dispositivo muestra la hora en formato 24 horas (ejemplo: "13:30")
HOUR_12_DISPLAY Indica que el dispositivo muestra la hora en formato 12 horas (ejemplo: "01:30 PM")

DeviceLanguage

Indica el idioma configurado en el dispositivo
Constante Descripción
ENGLISH Indica que el dispositivo está configurado en Inglés
CHINESE Indica que el dispositivo está configurado en Chino

DeviceEnableSwitch

Constante que indica si una opción está activada o debe activarse.
Constante Descripción
DISABLED Indica que una opción está desactivada
ENABLED Indica que una opción está activada

DeviceANCS

Constante que indica una aplicación o tipo de contenido de redes sociales.
Constante Descripción
PHONE_CALL Indica que se está recibiendo una llamada telefónica
MOBILE_PHONE_INFORMATION Indica que se trata de contenido móvil
WECHAT Indica que se trata de contenido de WeChat
FACEBOOK Indica que se trata de contenido de Facebook
INSTAGRAM Indica que se trata de contenido de Instagram
SKYPE Indica que se trata de contenido de Skype
TELEGRAM Indica que se trata de contenido de Telegram
TWITTER Indica que se trata de contenido de Twitter
VKCLIENT Indica que se trata de contenido de VKClient
WHATSAPP Indica que se trata de contenido de WhatsApp
QQ Indica que se trata de contenido de QQ
IN Indica que se trata de contenido de IN
STOP_CALL_REMINDER Indica que se trata de la finalización de una llamada telefónica

DeviceAutomaticWorkingMode

Indica el modo de operación de la función de medición de pulso automática
Constante Descripción
OFF Indica que las mediciones de pulso están desactivadas
IN_TIMEZONE Indica que las mediciones de pulso se realizan dentro de un rango de tiempo
IN_INTERVAL Indica que las mediciones de pulso se realizan cada cierto intervalo de tiempo

DeviceAlarmType

Indica el tipo de alarma configurada. Cada tipo de alarma tiene asignado un gráfico que se muestra en la pantalla del smartwatch cuando se dispara.
Constante Descripción
ALARM Indica que se trata de una alarma tradicional
MEDICINE_REMINDER Indica que la alarma es un recordatorio para la toma de un medicamento
WATER_REMINDER Indica que la alarma es un recordatorio para beber agua

DeviceDataAction

Esta constante se utiliza como parámetro en el tratamiento de los datos almacenados en el reloj (datos de sueño, pasos, ritmo cardíaco, etc). Mediante ellos se pueden eliminar los datos, recuperar todos los datos o solicitar los registros individualmente. No todas las acciones están disponibles en todos los comandos.
Constante Descripción
DELETE Indica que se quiere eliminar los datos a los que afecta el comando solicitado
READ_MOST_RECENT Indica que se quiere acceder a todos los datos afectados por el comando solicitado
READ_SPECIFIED Indica que se quiere acceder a un dato específico. Los comandos que aceptan este parámetro requieren también que se proporcione el identificador del registro deseado
READ_NEXT Indica que se desea acceder a los registros a partir del registro indicado. Los comandos que aceptan este parámetro requieren también que se proporcione el identificador del registro deseado

DeviceControlMode

Esta constante se utiliza para interactuar con procesos que se pueden arrancar y parar como el mode deporte.
Constante Descripción
START Indica que se quiere empezar el modo deporte
PAUSE Indica que se quiere pausar el modo deporte
CONTINUE Indica que se quiere reanudar el modo deporte
END Indica que se quiere finalizar el modo deporte

DeviceFirmwareCommand

Esta constante se utiliza para identificar comandos que son enviados desde el reloj con diversas funcionalidades.
Constante Descripción
CALL_OPERATION Indica que se quiere operar con las llamadas desde el reloj
TAKE_PICTURE Indica que se quiere tomar una fotografía desde el reloj
MUSIC_CONTROL Indica que se quiere controlar el contenido multimedia desde el reloj
FIND_PHONE Indica que se quiere utilizar la opción para buscar el móvil desde el reloj

DeviceSportMode

Indica el tipo de actividad física que se va a realizar.
Constante Descripción
RUN Indica que se va a realizar ejercicio físico de carrera
CYCLING Indica que se va a realizar ciclismo
BADMINTON Indica que se va a jugar a badminton
FOOTBALL Indica que se va a jugar a fútbol
TENNIS Indica que se va a jugar a tenis
YOGA Indica que se va a ejercitar yoga
BREATH Indica que se van a realizar ejercicios de respiración
DANCE Indica que se va a realizar actividad física relacionada con el baile
BASKETBALL Indica que se va a jugar a baloncesto
HIKING Indica que se va a realizar senderismo
GYM Indica que se van a realizar ejercicios de gimnasia

CommandIdentifiers

Indica el identificador de comando para reconocerlo en algunas operaciones como cuando se envía un error.
Constante Descripción
SET_TIME Comando para enviar la fecha y hora al reloj
GET_TIME Comando para recuperar la fecha y hora del reloj
SET_USER_PERSONAL_INFORMATION Comando para enviar la información del usuario (género, edad, altura, peso y zancada)
GET_USER_PERSONAL_INFORMATION Comando para recuperar la información del usuario
SET_DEVICE_PARAMETERS Comando para configurar los parámetros del dispositivo (unidades de distancia y temperatura, formato de hora en pantalla, vibración, etc.)
GET_DEVICE_PARAMETERS Comando para recuperar los parámetros del dispositivo
SET_DEVICE_ID_CODE Comando para establecer el identificador del reloj
SET_REALTIME_STEP_MODE Comando para configurar el registro de pasos en tiempo real
SET_TARGET_STEPS Comando para configurar el objetivo de pasos
GET_TARGET_STEPS Comando para recuperar el objetivo de pasos configurado
GET_DEVICE_BATTERY Comando para recuperar el nivel de batería del reloj
GET_MAC_ADDRESS Comando para recuperar la dirección MAC del reloj
GET_SOFTWARE_VERSION_NUMBER Comando para recuperar la versión del firmware del reloj
SET_FACTORY_RESET Comando para devolver el reloj a los valores de fábrica
SET_MCU_RESET Comando para reiniciar la unidad del microcontrolador del reloj
SET_AUTOMATIC_HEART_RATE_DETECTION_PERIOD Comando para configurar la toma automática del ritmo cardíaco
GET_AUTOMATIC_HEART_RATE_DETECTION_PERIOD Comando para recuperar la configuración de la toma automática del ritmo cardíaco
SET_ALARM Comando para configurar alarmas
SET_NOTIFICATION Comando para el envío de notificaciones
SET_ACTIVITY_PERIOD Comando para configurar el periodo de actividad del usuario
GET_ACTIVITY_PERIOD Comando para recuperar la configuración del periodo de actividad del usuario
GET_TOTAL_STEPS_DATA Comando para recuperar la información sobre pasos almacenada en el reloj
GET_DETAILED_STEPS_DATA Comando para recuperar la información detallada sobre pasos almacenada en el reloj
GET_DETAILED_SLEEP_DATA Comando para recuperar la información detallada sobre sueño almacenada en el reloj
GET_HEART_RATE_DATA Comando para recuperar la información del ritmo cardíaco almacenada en el reloj
GET_SINGLE_HEART_RATE_DATA Comando para recuperar la información de intervalo de ritmo cardíaco almacenada en el reloj
GET_HRV_TEST_DATA Comando para recuperar la información de la variabilidad de ritmo cardíaco almacenada en el reloj
GET_ALARM_DATA Comando para recuperar la configuración de alarmas
GET_SPORTS_DATA Comando para recuperar la información de actividad deportiva almacenada en el reloj
SPORT_MODE_CONTROL_ENABLE Comando para controlar el inicio y fin de la actividad deportiva
APP_HEART_BEAT_PACKET Comando reservado. Cuando se inicia el registro en tiempo real del ritmo cardíaco se recibe información identificada por esta constante
BRACELET_HEART_BEAT_PACKET Comando reservado. Cuando se inicia el registro en tiempo real del ritmo cardíaco se recibe información identificada por esta constante
SET_UPDATE_WEATHER_STATUS Comando para configurar el tiempo climatológico en el reloj
SET_PHOTO_MODE Comando para configurar el disparador de fotografías desde el móvil
FIRMWARE_COMMAND Comando reservado. Identifica una funcionalidad enviada desde el reloj. Puede estar relacionada con las llamadas telefónicas, tomar una fotografía o utilizar la funcionalidad de encontrar el móvil
CLEAR_HISTORICAL_SPORT_DATA Comando para realizar la limpieza de los datos históricos en el reloj (excepto los referentes al sueño)
GET_BLOOD_OXYGEN_DATA Comando para recuperar la información de oxígeno en sangre almacenada en el reloj
GET_TEMPERATURE_DATA Comando para recuperar la información de temperatura almacenada en el reloj
SOS_FUNCTION Comando reservado. Identifica que se ha activado la funcionalidad de envío de SOS desde el móvil
SOCIAL_DISTANCE_REMINDER Comando utilizado tanto para la configuración como para la recuperación de los ajustes pertenecientes al recordatorio de distancia social