Android IBeacon - 使用通配符为Region中的proximityUUID和RadiusNetworks API

时间:2013-12-13 17:13:17

标签: java android ibeacon ibeacon-android

我正在为我的IBeacon服务使用radiusnetworks Android API。根据他们的文档,“在构造范围时,可以将这些字段中的任何一个或全部设置为null,这表示它们是通配符并且将匹配任何值。”但是,当我创建一个具有null proximityUUID的区域时,我得到一个空指针异常。这是堆栈:

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   

当我将proximityUUID设置为某个值时,不会发生这种情况。有没有人使用过此库并尝试将邻近度uuid设置为null?

1 个答案:

答案 0 :(得分:0)

虽然Region中的ProximityUuid,major和minor可能为null,但您必须为“uniqueId”提供一些值,这是构造函数的第一个参数:

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

这样可行,但以下内容会为您提供所描述的错误:

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

第一个参数与iBeacon标识符无关。它仅用作应用程序的唯一引用字符串,因此您可以通过向IBeaconManager传递具有相同uniqueId字符串的区域来取消范围/监视。您可以为其提供任何所需的值,但如果您开始监视或测量具有相同uniqueId值的第二个区域,则替换当前正在监视的区域。