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, он заменит тот регион, который отслеживается в настоящее время.