Мы создали специальный протокол для связи BLE. В этом протоколе мы используем имя устройства как различающее значение при обмене данными между смартфоном и маяками и используем UUID в качестве полезной нагрузки данных.BLE Реклама на Android с пользовательским адаптером BT Название без касания системы
Так что в моем коде у меня есть:
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
//Needed for let the protocol work
bluetoothAdapter.setName("CUSTOMAA");
//Get Advertiser
BluetoothLeAdvertiser bluetoothLeAdvertiser = bluetoothAdapter.getBluetoothLeAdvertiser();
//Configure advertiser
AdvertiseSettings settings = new AdvertiseSettings.Builder()
.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_BALANCED)
.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM)
.setConnectable(true)
.build();
//Uuid is another important part of our protocol
AdvertiseData advertiseData = new AdvertiseData.Builder()
.setIncludeDeviceName(true)
.addServiceUuid(getUuid())
.build();
//Start Advertising
bluetoothLeAdvertiser.startAdvertising(settings, advertiseData, advertiseCallback);
Она работает правильно, но, когда приложение находится, если я искать смартфон Bluetooth с другим устройством, имя, которое появляется «CUSTOMAA» и не тот, который я установил на странице настроек Bluetooth (например, «Android от Marco»). Исходное имя вернулось, если я закрою приложение и выключись, затем в Bluetooth или перезагрузите телефон.
Есть ли способ отправить рекламные данные с пользовательским именем устройства, не касаясь оригинала для других сообщений (например, «копия» системного Bluetooth-адаптера для использования только для рекламы)?