我正在编写一个Android应用程序以使用BLE与Arduino对话。我已经能够扫描设备,连接到目标,发现服务,获取特征并读取可读的特征。但是,当我尝试编写可写特征时,该方法始终返回false。当我调试到android.bluetooth代码时,会发生以下顺序:
Characteristics.getService()。getDevice始终返回null,
这会导致writeCharacteristic失败。
任何帮助是极大的赞赏!
最佳答案
请按照相应的顺序检查对象。每次需要写入BLE设备时,我仅保留BluetoothGatt对象并创建BluetoothGattService和BluetoothGattCharacteristic。
byte[] data_to_write; // Your data
BluetoothManager mBluetoothManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SREVICE);
BluetoothAdapter mBluetoothAdapter = mBluetoothManager.getAdapter();
BluetoothDevice mDevice = mBluetoothAdapter.getRemoteDevice(....);
BluetoothGatt mBG = mDevice.connectGatt(....);
BluetoothGattService mSVC = mBG.getService(service_uuid);
BluetoothGattCharacteristic mCH = mSVC.getCharacteristic(characteristic_uuid);
mCH.setValue(data_to_write);
mBG.writeCharacteristic(mCH);