我正在BLE 4.2设备上运行具有自定义特征的自定义服务。我正在开发一个Android应用程序来读取/写入特征等。我尝试的第一件事是阅读特征。
我定义了一个UUID列表: List chars = new ArrayList<>();
我使用我的已知服务UUID创建服务: mCustomService = mBluetoothGatt.getService(MY_SERVICE_UUID);
我从我的服务中加载了4个已知UUID的列表:
chars.clear();
chars.add(UUID1);
chars.add(UUID2);
chars.add(UUID3);
chars.add(UUID4);
I read the first characteristic from the end of my list:
BluetoothGattCharacteristic mReadCharacteristic = mCustomService.getCharacteristic(chars.get(chars.size() - 1));
if(mReadCharacteristic != null)
mBluetoothGatt.readCharacteristic(mReadCharacteristic);
mReadCharacteristic始终返回null,该服务不包含我的特征。
如果我使用BLE"嗅探器" app然后我确实看到了所有的特征。
由于
富
PS我无法弄清楚这里的格式化!
答案 0 :(得分:0)
我有类似的设置 - 具有自定义服务和特性的设备 - 尽管该设备是BLE 4.0。在您的应用程序中,也许您正在这样做,但在问题中没有提到它 - 但是你在调用
location = params[:location].join(',') // as string
然后触发回调mBluetoothGatt.discoverServices();
。我在onServicesDiscovered
处理程序中有类似的代码,它工作正常。
onServicesDiscovered
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {