Мы используем ScanFilter в основной службе Android для сканирования маяков. Фильтр включает UUID службы. Когда мы удаляем UUID службы, мы можем обнаруживать маяки с указанным uuid. Однако когда мы включаем UUID службы, обнаружение маяка не удается.
private var scanFilter: ScanFilter = ScanFilter.Builder()
.setServiceUuid(ParcelUuid(UUID.fromString("0000feab-0000-1000-8000-00805f9b34fb"))) // Filter by Service UUID
.build()
если мы удалили фильтр UUID службы, мы получим следующие результаты для маяка, который мы хотим обнаружить в обратном вызове onScanResult
ScanResult{device=CF:63:4B:5D:E1:F9, scanRecord=ScanRecord [mAdvertiseFlags=6, mServiceUuids=null, mServiceSolicitationUuids=[], mManufacturerSpecificData={}, mServiceData={0000feab-0000-1000-8000-00805f9b34fb=[64, 0, 2, 11, -30, 0, 1, -49, 99, 75, 93, -31, -7, 48, 10]}, mTxPowerLevel=0, mDeviceName=0001, mTransportBlocks=[]], rssi=-71, timestampNanos=40980732284950, eventType=27, primaryPhy=1, secondaryPhy=0, advertisingSid=255, txPower=127, periodicAdvertisingInterval=0}
в приведенном выше результате mServiceUuids имеет значение null, и я думаю, что это проблема, возможно, маяк, который я обнаруживаю, не передает UUID службы вещания, я могу применить базу фильтров к mServiceData
код> как показано ниже:
private val beaconUuid: ParcelUuid = ParcelUuid.fromString("0000feab-0000-1000-8000-00805f9b34fb")
private var serviceData: ByteArray = byteArrayOf(64, 0) // This is the beginning of the service data
private var serviceDataMask: ByteArray = byteArrayOf(-1, -1) // This mask means match both bytes exactly
private var scanFilter: ScanFilter = ScanFilter.Builder()
.setServiceData(beaconUuid, serviceData, serviceDataMask) // Filter by Service Data
.build()
Я успешно фильтрую маяки с помощью mServiceData с текущим собственным адаптером Bluetooth. Однако мне нужно переключиться на библиотеку AltBeacon для совместимости с устройствами Samsung. AltBeacon фильтрует на основе mServiceUuid, когда устройство Samsung находится в автономном режиме, но я не могу найти способ фильтрации по mServiceData с помощью этой библиотеки. Может ли кто-нибудь предложить решение?
ОБНОВЛЕНО
ниже приведена конфигурация альтернативного маяка, которую я применил
beaconManager = BeaconManager.getInstanceForApplication(this)
beaconManager.enableForegroundServiceScanning(
createNotificationScan(), 1002
)
beaconManager.setEnableScheduledScanJobs(false)
beaconManager.backgroundBetweenScanPeriod = 5000
beaconManager.backgroundScanPeriod = 11000
beaconManager.foregroundBetweenScanPeriod = 1000
beaconManager.foregroundScanPeriod = 10000
BeaconManager.setDebug(true)
beaconManager.beaconParsers.clear()
val parser = BeaconParser().
setBeaconLayout("s:0-1=feab,m:2-3=4000,p:3-3:-41,i:4-21v")
parser.setHardwareAssistManufacturerCodes(intArrayOf(0x0A62))
beaconManager.beaconParsers.add(parser)
region = Region("all-beacons-region", null, null, null)
beaconManager.getRegionViewModel(region).rangedBeacons.observe(this, rangingObserver)
Обнаружение работает хорошо для упомянутых маяков с вышеуказанной конфигурацией, но тот же маяк не обнаруживается при выключении экрана.
ниже приведен фильтр применяется библиотекой altbeacon, когда экран устройства гаснет:
BluetoothLeScanFilter [mDeviceName=null, mDeviceAddress=null, mUuid=0000feab-0000-1000-8000-00805f9b34fb, mUuidMask=ffffffff-ffff-ffff-ffff-ffffffffffff, mServiceSolicitationUuid=null, mServiceSolicitationUuidMask=null, mServiceDataUuid=null, mServiceData=null, mServiceDataMask=null, mManufacturerId=-1, mManufacturerData=null, mManufacturerDataMask=null, mAdvertisingDataType=-1, mAdvertisingData=null, mAdvertisingDataMask=null]
Подробнее здесь: https://stackoverflow.com/questions/788 ... er-android
Ошибка обнаружения маяка с помощью uuid в ScanFilter android ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1729539835
Anonymous
Мы используем ScanFilter в основной службе Android для сканирования маяков. Фильтр включает UUID службы. Когда мы удаляем UUID службы, мы можем обнаруживать маяки с указанным uuid. Однако когда мы включаем UUID службы, обнаружение маяка не удается.
private var scanFilter: ScanFilter = ScanFilter.Builder()
.setServiceUuid(ParcelUuid(UUID.fromString("0000feab-0000-1000-8000-00805f9b34fb"))) // Filter by Service UUID
.build()
если мы удалили фильтр UUID службы, мы получим следующие результаты для маяка, который мы хотим обнаружить в обратном вызове onScanResult
ScanResult{device=CF:63:4B:5D:E1:F9, scanRecord=ScanRecord [mAdvertiseFlags=6, mServiceUuids=null, mServiceSolicitationUuids=[], mManufacturerSpecificData={}, mServiceData={0000feab-0000-1000-8000-00805f9b34fb=[64, 0, 2, 11, -30, 0, 1, -49, 99, 75, 93, -31, -7, 48, 10]}, mTxPowerLevel=0, mDeviceName=0001, mTransportBlocks=[]], rssi=-71, timestampNanos=40980732284950, eventType=27, primaryPhy=1, secondaryPhy=0, advertisingSid=255, txPower=127, periodicAdvertisingInterval=0}
в приведенном выше результате mServiceUuids имеет значение null, и я думаю, что это проблема, возможно, маяк, который я обнаруживаю, не передает UUID службы вещания, я могу применить базу фильтров к mServiceData
код> как показано ниже:
private val beaconUuid: ParcelUuid = ParcelUuid.fromString("0000feab-0000-1000-8000-00805f9b34fb")
private var serviceData: ByteArray = byteArrayOf(64, 0) // This is the beginning of the service data
private var serviceDataMask: ByteArray = byteArrayOf(-1, -1) // This mask means match both bytes exactly
private var scanFilter: ScanFilter = ScanFilter.Builder()
.setServiceData(beaconUuid, serviceData, serviceDataMask) // Filter by Service Data
.build()
Я успешно фильтрую маяки с помощью mServiceData с текущим собственным адаптером Bluetooth. Однако мне нужно переключиться на библиотеку AltBeacon для совместимости с устройствами Samsung. AltBeacon фильтрует на основе mServiceUuid, когда устройство Samsung находится в автономном режиме, но я не могу найти способ фильтрации по mServiceData с помощью этой библиотеки. Может ли кто-нибудь предложить решение?
[b]ОБНОВЛЕНО[/b]
ниже приведена конфигурация альтернативного маяка, которую я применил
beaconManager = BeaconManager.getInstanceForApplication(this)
beaconManager.enableForegroundServiceScanning(
createNotificationScan(), 1002
)
beaconManager.setEnableScheduledScanJobs(false)
beaconManager.backgroundBetweenScanPeriod = 5000
beaconManager.backgroundScanPeriod = 11000
beaconManager.foregroundBetweenScanPeriod = 1000
beaconManager.foregroundScanPeriod = 10000
BeaconManager.setDebug(true)
beaconManager.beaconParsers.clear()
val parser = BeaconParser().
setBeaconLayout("s:0-1=feab,m:2-3=4000,p:3-3:-41,i:4-21v")
parser.setHardwareAssistManufacturerCodes(intArrayOf(0x0A62))
beaconManager.beaconParsers.add(parser)
region = Region("all-beacons-region", null, null, null)
beaconManager.getRegionViewModel(region).rangedBeacons.observe(this, rangingObserver)
Обнаружение работает хорошо для упомянутых маяков с вышеуказанной конфигурацией, но тот же маяк не обнаруживается при выключении экрана.
ниже приведен фильтр применяется библиотекой altbeacon, когда экран устройства гаснет:
BluetoothLeScanFilter [mDeviceName=null, mDeviceAddress=null, mUuid=0000feab-0000-1000-8000-00805f9b34fb, mUuidMask=ffffffff-ffff-ffff-ffff-ffffffffffff, mServiceSolicitationUuid=null, mServiceSolicitationUuidMask=null, mServiceDataUuid=null, mServiceData=null, mServiceDataMask=null, mManufacturerId=-1, mManufacturerData=null, mManufacturerDataMask=null, mAdvertisingDataType=-1, mAdvertisingData=null, mAdvertisingDataMask=null]
Подробнее здесь: [url]https://stackoverflow.com/questions/78897225/beacon-detection-failing-with-uuid-in-scanfilter-android[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия