Как программно изменить имя подключенного устройства BLE в Android?
В моем приложении для Android подключение BLE успешно работает, как только устройство BLE подключено к телефону Android. Как программно изменить имя подключенного устройства BLE? Пример кода как ниже
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));
Log.v(TAG, "writeCharacteristic(DeviceName) = " + mBluetoothGatt.writeCharacteristic(DeviceName));
Здесь mBluetoothGatt.writeCharacteristic(DeviceName); Метод всегда возвращает false.
После некоторых исследований я нашел решение ниже
Вам необходимо изменить прошивку брелка CC2541, чтобы добавить разрешение на запись имени устройства, добавив приведенный ниже код в KeyFobApp_Init() внутри keyfobdemo.c:
uint8 devNamePermission = GATT_PERMIT_READ|GATT_PERMIT_WRITE;
GGS_SetParameter( GGS_W_PERMIT_DEVICE_NAME_ATT, sizeof ( uint8 ), &devNamePermission );
Теперь мой вопрос, где мы должны добавить эти разрешения?
Пожалуйста, кто-нибудь может сказать мне, что, как добавить эти разрешения?
заранее спасибо
2 ответа
Как видно из названия: keyfobdemo.c - это файл.c, поэтому TI сообщает вам, что вы должны добавить эти разрешения в рабочее пространство KeyFobDemo, поэтому вы должны запрограммировать комплект CC2541, чтобы изменить имя. Вы не можете сделать это в Android.
Все, что вам нужно сделать, это:
Загрузите стек BLE с веб-сайта Texas Instruments: http://www.ti.com/tool/ble-stack
Затем в стеке откройте файл Projects\ble\KeyFob\CC2541DB\KeyFobDemo.eww.
Для программирования комплекта CC2540 требуется IDE с именем IAR Embedded Workbench. Вы можете скачать его и получить доступ с 30-дневной пробной версией: http://www.iar.com/Products/IAR-Embedded-Workbench/8051/
Затем откройте проект и найдите файл keyfobdemo.c в папке APP. В строке 200-213 есть массив символов с именем deviceName[], который фактически определяет название рекламы как "Keyfobdemo". Вам просто нужно изменить его на нужное имя с правильными шестнадцатеричными значениями, а также с длиной массива. Затем в строке 236 вы также должны изменить массив attDeviceName[], так как этот параметр определяет имя вашего устройства, когда оно находится в подключенном состоянии.
Нет способа сделать это в Android! если только вы не смените прошивку BLE!
Возможное решение: после подключения к устройству BLE вы можете отправить на устройство некоторую команду конфигурации, чтобы изменить имя устройства.