Android IBeacon - использование подстановочного знака для близости UUID в регионе с API RadiusNetworks

Я использую API-интерфейс radiusnetworks Android для своего сервиса IBeacon. Согласно их документам, "при построении диапазона любое из этих полей или все из них могут иметь значение null, что указывает на то, что они являются подстановочными знаками и будут соответствовать любому значению". Тем не менее, когда я создаю регион с нулевым близости UUID, я получаю исключение нулевого указателя. Вот этот стек:

Thread [<1> main] (Suspended (exception NullPointerException))  
<VM does not provide monitor information>   
RegionData(Region).hashCode() line: 140 
HashMap.containsKey(Object) line: 332   
IBeaconService.startRangingBeaconsInRegion(Region, Callback) line: 262  
IBeaconService$IncomingHandler.handleMessage(Message) line: 151 
IBeaconService$IncomingHandler(Handler).dispatchMessage(Message) line: 99   

Этого не происходит, когда я устанавливаю значениелучайному идентификатору в значение. Кто-нибудь использовал эту библиотеку и пытался установить близость uuid к нулю?

1 ответ

Решение

Хотя ProximityUuid, major и minor в Region, может иметь значение null, необходимо указать некоторое значение для "uniqueId", который является первым параметром конструктора:

new Region("com.myappname.myregiondescriptor", null, null, null);

Это работает, но следующее даст вам ошибку, которую вы описываете:

new Region(null, null, null, null);

Этот первый параметр не имеет ничего общего с идентификаторами iBeacon. Он просто используется в качестве уникальной ссылочной строки для вашего приложения, поэтому вы можете отменить ранжирование / мониторинг в более позднее время, передав IBeaconManager регион с той же строкой uniqueId. Вы можете присвоить ему любое значение, которое захотите, но если вы начнете мониторинг или ранжирование для второго региона с тем же значением uniqueId, он заменит тот регион, который отслеживается в настоящее время.

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