我正在开发一个应用程序,我必须连接到Android 4.3上的蓝牙设备。
我想通过Android应用程序更改CC2541 Keyfob的名称。
我尝试使用0x2A00来获取设备名称服务,但是当我调用Device_Name函数时它看起来不起作用。
Name_Service为空。
private static final UUID Device_Name_UUID = UUID.fromString("00002a00-0000-1000-8000-00805f9b34fb");
private static final UUID Write_UUID = UUID.fromString("00001800-0000-1000-8000-00805f9b34fb");
public void Device_Name(){
BluetoothGattService Name_Service = mBluetoothGatt.getService(Write_UUID );
if(Name_Service == null) {
Log.d(TAG, "Name_Service service not found!");
return;
}
BluetoothGattCharacteristic DeviceName = Name_Service.getCharacteristic(Device_Name_UUID);
if(DeviceName == null) {
Log.d(TAG, "DeviceName charateristic not found!");
return;
}
}
Log.v(TAG, "readCharacteristic(DeviceName) = " + mBluetoothGatt.readCharacteristic(DeviceName));
String i = "123";
DeviceName.setValue(i);
Log.v(TAG, "writeCharacteristic(DeviceName) = " + mBluetoothGatt.writeCharacteristic(DeviceName));
我可以从BLE设备读取名称,但是当我使用mBluetoothGatt.readCharacteristic(DeviceName)时,它显示writeCharacteristic(DeviceName)为false。
有人试图使用设备名称的UUID(0x2A00)将名称写入BLE设备吗?
答案 0 :(得分:2)
您需要修改CC2541密钥卡的固件,通过将以下代码添加到keyfobdemo.c中的KeyFobApp_Init()中来添加设备名称的写入权限:
uint8 devNamePermission = GATT_PERMIT_READ|GATT_PERMIT_WRITE;
GGS_SetParameter( GGS_W_PERMIT_DEVICE_NAME_ATT, sizeof ( uint8 ), &devNamePermission );
参考:http://processors.wiki.ti.com/index.php/CC2540_DeviceNameWrite