मैं ब्लूटूथ ली थर्मामीटर से कनेक्ट करने का प्रयास कर रहा हूं। डिवाइस से कनेक्ट करना अच्छा काम कर रहा है। मुझे लटकने वाला एकमात्र हिस्सा गैटकॉलबैक है और यह कैरेक्टरिस्टिक चेंज/रीड ऑन है। 'setNotification' और वर्णनकर्ता 'setValue' और 'writeDescriptor' सभी वापस आते हैं। ऑन-कैरेक्टरिस्टिक चेंज को कभी भी मूल्य वापस करने के लिए बुलाया नहीं जाता है।एंड्रॉइड बीएलई ऑन कैरेक्टरिस्टिक रीड एंड ऑन कैरेक्टरिस्टिक चेंज कभी नहीं
मैंने बीएलई स्कैनर नामक Play Store से एक बहुत ही आसान छोटा प्रोग्राम इस्तेमाल किया ताकि मुझे डिवाइस और इसकी सेवाओं और विशेषताओं के बारे में मुझे और जानकारी दी जा सके।
यही कारण है कि मैं बस हार्ड कोडित सेवा 2, विशेषता 0. मैं सिर्फ यह पता लगाने की वजह है कि मैं writeDescriptor के बाद, मैं कभी नहीं देखना नहीं कर पा रहे कुछ भी वापस आना है। दिलचस्प बात यह है कि, मैं कुछ अन्य लक्षणों (एक तापमान अंतराल होने का उपयोग कर सकता हूं) और मुझे एक प्रतिक्रिया प्राप्त होती है (हालांकि डेटा खराब हो जाता है।)
इसके अलावा, जिज्ञासा से, इस पर 2 वर्णनकर्ता क्यों हैं विशेषता?
यह कोड मेरी मुख्य गतिविधि विधि में निहित है। यकीन नहीं है कि इससे कोई फर्क पड़ता है। मैंने यहां कोई भाग्य के साथ पोस्ट किए गए कई तरीकों को देखा और कोशिश की है।
private final BluetoothGattCallback gattCallback = new BluetoothGattCallback()
{
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState)
{ ... }
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status)
{
mGatt = gatt;
List<BluetoothGattService> services = mGatt.getServices();
Log.i("onServicesDiscovered", services.toString());
BluetoothGattCharacteristic characteristic = services.get(2).getCharacteristics().get(0);
mGatt.setCharacteristicNotification(characteristic, true);
BluetoothGattDescriptor descriptor = characteristic.getDescriptor(UUID.fromString(CLIENT_CHARACTERISTIC_CONFIG));
descriptor.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);
mGatt.writeDescriptor(descriptor);
}
@Override
public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status)
{ ... }
@Override
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic)
{ ... }
};
अद्यतन: मैं onDescriptorWrite विधि की जाँच करें और कुछ जानकारी के लिए लॉग इन करने का फैसला किया।
@Override
public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status)
{
Log.i("descriptorWRITE", Integer.toString(status));
}
दिलचस्प बात यह है कि यहां स्थिति 13 है जो लौटा रहा है 'ए लिखने आपरेशन विशेषता की अधिकतम सीमा पार' है।
मैं इसे और देख रहा हूं।