¿Cómo enviar datos a través de un enlace Bluetooth Low Energy (BLE)?

Puedo descubrir, conectar con el bluetooth.

Código fuente—

Conectarse vía bluetooth al Dispositivo Remoto:

//Get the device by its serial number bdDevice = mBluetoothAdapter.getRemoteDevice(blackBox); //for ble connection bdDevice.connectGatt(getApplicationContext(), true, mGattCallback); 

Gatt CallBack para el estado:

  private BluetoothGattCallback mGattCallback = new BluetoothGattCallback() { @Override public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { //Connection established if (status == BluetoothGatt.GATT_SUCCESS && newState == BluetoothProfile.STATE_CONNECTED) { //Discover services gatt.discoverServices(); } else if (status == BluetoothGatt.GATT_SUCCESS && newState == BluetoothProfile.STATE_DISCONNECTED) { //Handle a disconnect event } } @Override public void onServicesDiscovered(BluetoothGatt gatt, int status) { //Now we can start reading/writing characteristics } }; 

Ahora quiero enviar comandos al dispositivo BLE remoto pero no sé cómo hacerlo.

Una vez que el comando se envía al dispositivo BLE, el dispositivo BLE responderá transmitiendo datos que mi aplicación puede recibir.

One Solution collect form web for “¿Cómo enviar datos a través de un enlace Bluetooth Low Energy (BLE)?”

Debe romper este proceso en unos pocos pasos, cuando se conecta a un dispositivo BLE y descubre Servicios:

  1. Mostrar los gattServices disponibles en onServicesDiscovered para su callback

  2. Para comprobar si se puede escribir una característica o no
    Compruebe para BluetoothGattCharacteristic PROPIEDADES – no me di cuenta de que la necesidad de habilitar el PROPERTY_WRITE en el hardware BLE y que desperdició mucho tiempo.

  3. Cuando se escribe una característica, ¿el hardware realiza alguna acción para indicar explícitamente la operación (en mi caso estaba encendiendo un led)

Suponga que mWriteCharacteristic es un BluetoothGattCharacteristic La parte donde comprobar la PROPIEDAD debe ser como:

 if (((characteristic.getProperties() & BluetoothGattCharacteristic.PROPERTY_WRITE) | (charaProp & BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE)) > 0) { // writing characteristic functions mWriteCharacteristic = characteristic; } 

Y, para escribir su característica:

 // "str" is the string or character you want to write byte[] strBytes = str.getBytes(); byte[] bytes = activity.mWriteCharacteristic.getValue(); YourActivity.this.mWriteCharacteristic.setValue(bytes); YourActivity.this.writeCharacteristic(YourActivity.this.mWriteCharacteristic); 

Esas son las partes útiles del código que necesita implementar con precisión.

Consulte este proyecto github para una implementación con sólo una demo básica.

  • Android BLE 4.3 onDescriptorWrite devuelve el estado 128 al habilitar la notificación de características
  • BluetoothGatt: la negociación de nuevos MTU tiene éxito pero el nuevo tamaño no se puede utilizar (diferencia de 3 bytes)
  • BLE GATT onCharacteristicChanged no se llama después de suscribirse a la notificación
  • ¿Por qué setCharactersticNotification () no habilita realmente las notificaciones?
  • BluetoothGattServer cancelConnection no cancela la conexión
  • Samsung ble api no puede recibir notificación de múltiples características del GATT
  • ¿Cómo mejorar el rendimiento de GATT de baja energía de Bluetooth de Android?
  • La devolución de llamada de Gatt de BLuetooth no funciona con la nueva API de Lollipop
  • Cambio de tiempo de gatt de bajo consumo de energía de bluetooth o descarga de flujo de lectura para detectar el evento de desconexión más rápido
  • Lectura de múltiples características de un dispositivo BLE de forma sincrónica (método recomendado para Android)
  • Error Android Bluetooth LE: Error al registrar la devolución de llamada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.