Ошибка обнаружения маяка с помощью uuid в ScanFilter androidAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка обнаружения маяка с помощью uuid в ScanFilter android

Сообщение 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 с помощью этой библиотеки. Может ли кто-нибудь предложить решение?
ОБНОВЛЕНО
ниже приведена конфигурация альтернативного маяка, которую я применил
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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка обнаружения маяка с помощью uuid в ScanFilter android
    Anonymous » » в форуме Android
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Ошибка обнаружения маяка с помощью uuid в ScanFilter android
    Anonymous » » в форуме Android
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Чтобы сравнить UUID, могу ли я использовать == или использовать UUID.equals(UUID)?
    Anonymous » » в форуме JAVA
    0 Ответы
    56 Просмотры
    Последнее сообщение Anonymous
  • Получение UUID с помощью NamedNativeQuery: [B нельзя привести к java.util.UUID
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как создать UUID с тире, а не без тире, используя uuid-пакет для Python 3.6?
    Anonymous » » в форуме Python
    0 Ответы
    125 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»