Как программно изменить имя подключенного устройства 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 вы можете отправить на устройство некоторую команду конфигурации, чтобы изменить имя устройства.

Другие вопросы по тегам