如何在Android 4.3中更改蓝牙低功耗设备的名称?

时间:2013-11-19 05:48:30

标签: android bluetooth bluetooth-lowenergy android-bluetooth android-4.3-jelly-bean

我正在开发一个应用程序,我必须连接到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设备吗?

1 个答案:

答案 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