2

我正在为我的 IBeacon 服务使用 radiusnetworks Android API。根据他们的文档,“在构建范围时,任何或所有这些字段都可能设置为 null,这表明它们是通配符并且将匹配任何值。” 但是,当我创建一个具有 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   

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

4

1 回答 1

0

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

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

这可行,但以下将为您提供您描述的错误:

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

第一个参数与 iBeacon 标识符无关。它仅用作您的应用程序的唯一参考字符串,因此您可以稍后通过向 IBeaconManager 传递具有相同 uniqueId 字符串的区域来取消测距/监控。你可以给它任何你想要的值,但是如果你开始监视或测距具有相同 uniqueId 值的第二个区域,它将替换当前正在监视的区域。

于 2013-12-13T18:39:21.720 回答