我正在为我的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?
答案 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值的第二个区域,则替换当前正在监视的区域。