1

Я разрабатываю приложение, в котором мне нужно подключиться к устройству Bluetooth на Android 4.3.Как изменить название устройства с низким энергопотреблением bluetooth в Android 4.3?

И я хочу изменить имя CC2541 Keyfob через приложение Android.

Я пытаюсь использовать 0x2A00 для получения службы имени устройства, но он не работает, когда я вызываю функцию Device_Name.

Служба Name_Service имеет значение null.

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 устройства, но показать writeCharacteristic (DeviceName) является ложным, когда я использую mBluetoothGatt.readCharacteristic (DEVICENAME).

Кто-нибудь пытается использовать UUID (0x2A00) имени устройства, чтобы записать имя в устройство BLE?

+0

У вас открыл услуги? Btw, соглашение об именах вашей переменной сбивает с толку. Старайтесь не использовать заглавную букву для первой буквы вашего имени переменной, так как это обычно указывает класс, а не переменную в java. – reTs

+0

@reTs: Я изменяю код. Я могу получить службу и прочитать имя с устройства, но это неверно, когда я использую writeCharacteristic. – Wun

ответ

2

Вам нужно изменить прошивку CC2541 брелока, чтобы добавить разрешение на запись имени устройства путем добавления кода ниже в KeyFobApp_Init() внутри keyfobdemo.c:

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