Ble gatt onCharacteristicschanged no llamado después de suscribirse a la notificación -- android campo con bluetooth-lowenergy campo con android-bluetooth camp Relacionados El problema

BLE GATT onCharacteristicChanged not called after subscribe to notification


1
vote

problema

Español

Después de suscribir la notificación, el comando de escritura inmediato no funciona. Tengo que reiniciar el dispositivo servidor y conectarme automáticamente a la instancia BLE existente para obtener resultados.

NOTIFICACIÓN OBTENERA CÓDIGO:

  4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name [_id] 4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name [image] 4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name [company_code] 4/1/2015 01:18 PM - [ResultSetConverter.convert] Exception: Column 'company_code' not found. 3  

y aquí está mi código de comando de escritura:

  4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name [_id] 4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name [image] 4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name [company_code] 4/1/2015 01:18 PM - [ResultSetConverter.convert] Exception: Column 'company_code' not found. 4  
Original en ingles

After subscribe notification immediate write command doesn't work. I have to restart server device and auto connect to existing ble instance to get result.

Notification enable code:

public boolean setCharacteristicNotification(BluetoothGattCharacteristic characteristic,                                              boolean enabled) {     if (mBluetoothAdapter == null || mBluetoothGatt == null) {         Log.w(TAG, "BluetoothAdapter not initialized");         return false;     }     mBluetoothGatt.setCharacteristicNotification(characteristic, enabled);      System.out.println("descriptor length----" + characteristic.getDescriptors().size());      // This is specific to Heart Rate Measurement.     if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) {         BluetoothGattDescriptor descriptor = characteristic.getDescriptor(                 UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"));          System.out.println("descriptor--" + Arrays.toString(descriptor.getValue()));         System.out.println("characteristic value--" + Arrays.toString(descriptor.getCharacteristic().getValue()));              descriptor.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);         return mBluetoothGatt.writeDescriptor(descriptor);     }     return false; } 

and here is my write command code:

 public void writeCustomCharacteristic(String value) {       this.value = "";     this.command = value;     if (mBluetoothAdapter == null || mBluetoothGatt == null) {         Log.w(TAG, "BluetoothAdapter not initialized");         return;     }     /*check if the service is available on the device*/     BluetoothGattService mCustomService = mBluetoothGatt.getService(UUID.fromString("65333333-a115-11e2-9e9a-0800200ca100"));     if (mCustomService == null) {         Log.w(TAG, "Custom BLE Service not found");         return;     }     /*get the read characteristic from the service*/     BluetoothGattCharacteristic mWriteCharacteristic = mCustomService.getCharacteristic(UUID.fromString("65333333-a115-11e2-9e9a-0800200ca101"));     mWriteCharacteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT);          mWriteCharacteristic.setValue(value.getBytes());         if (!mBluetoothGatt.writeCharacteristic(mWriteCharacteristic)) {             Log.w(TAG, "Failed to write characteristic");         }      System.out.println("BluetoothLeService.writeCustomCharacteristic------->" + value);  } 
        
   
   

Lista de respuestas

0
 
vote

Antes de escribir cualquier característica, retraso por unos pocos seg. Bcz lleva tiempo para ejecutar.

  rs.getObject(column_name) 4  

aquí obtienes más explicación

 

Before write any characteristic , delay for few sec . Bcz it takes time to execute.

 new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {                             @Override                             public void run() {                                 mBluetoothGatt.writeDescriptor(RTS_CCCD); //for descriptor   //  or     mBluetoothGatt.readCharacteristic(brspInfo); //for read //or     mBluetoothGatt.writeCharacteristic(brspInfo); //for write                             }                         }, 500); 

Here you get more explaination

 
 

Relacionados problema

1  Impresoras térmicas con Bundled Android SDK?  ( Thermal printers with bundled android sdk ) 
Estoy buscando una impresora de recibos que puede ser controlada por dispositivos Android a través de WiFi o Bluetooth. He encontrado algunas impresoras de Bi...

1  Fusión de byte [] que se transfirió a través de Bluetooth  ( Merging byte that was transfered through bluetooth ) 
Entonces, usé esta muestra Android como Una guía para hacer una conexión Bluetooth sin ningún tipo de validación (esta aplicación tendrá una base de usuario...

2  No se puede acceder a las clases Bluetootha2dpsink & bluetoothavrcpcontroller, ¿cómo agregar a SDK?  ( Bluetootha2dpsink bluetoothavrcpcontroller classes are not accessible how to ) 
Mi proyecto necesita las siguientes clases para construir: bluetootha2dpsink bluetoothavrcpcontroller Según este & amp; esta , las clases s...

2  ¿Por qué Android oculta la dirección Bluetooth MAC?  ( Why android hides bluetooth mac address ) 
Estoy tratando de obtener la dirección MAC bluetooth de esta manera: public class Camera extends Activity implements View.OnClickListener{ Intent i; ImageV...

1  ¿Cómo cambiar el nombre del dispositivo Android en Android 6 y 7 programáticamente?  ( How to change android device name on android 6 7 programmatically ) 
Estoy tratando de cambiar Android Nombre del dispositivo en lugar de bluetooth nombre del adaptador. Usando este código: BluetoothAdapter myBTAdapter...

6  Android Bluetooth: Lista de dispositivos emparejados  ( Android bluetooth paired devices list ) 
Tengo un dispositivo Bluetooth con perfil SPP y versión Bluetooth 2.1. Tengo una aplicación que se conecta a ese dispositivo y se comunica con él. El disposi...

0  No se han recibido devoluciones de llamadas en OnCarractersChanged de TI SensortAg  ( No oncharacteristicchanged callbacks received from ti sensortag ) 
Tengo una etiqueta de sensor TI que estoy tratando de interactuar con Android usando BLE. Estoy siguiendo las instrucciones aquí: http://processors.wiki.ti.c...

1  ¿Cómo envío datos de la aplicación Unity Gear VR sobre Bluetooth? [cerrado]  ( How do i send data from unity gear vr app over bluetooth ) 
cerrado . Esta pregunta debe ser más enfocado . Actualmente no está aceptando respuestas. ...

0  Prueba de la unidad de Android: Mock bluetoothdevice y escriba a la parcela  ( Android unit test mock bluetoothdevice and write to parcel ) 
Me gustaría preguntarle sobre la prueba de una clase de una clase que tiene BluetoothDevice variable. Mi objeto es un objeto simple que contiene cierta va...

2  Modelo de ahorro / transmisión - TensorFlow Lite Transfer Aprendizaje en Android  ( Saving transmitting model tensorflow lite transfer learning on android ) 
Estoy tratando de crear un par de aplicaciones de Android: una que capacita a un modelo de aprendizaje de clasificación de imágenes y uno que simplemente util...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos