我看过一些例子,如何通过测距而不是通过监视获得Eddystone信标的URL帧
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
for (org.altbeacon.beacon.Beacon beacon: beacons) {
if (beacon.getServiceUuid() == 0xfeaa && beacon.getBeaconTypeCode() == 0x10) {
// This is a Eddystone-URL frame
String url = UrlBeaconUrlCompressor.uncompress(beacon.getId1().toByteArray());
Log.d("Eddystone", "I see a beacon transmitting a url: " + url +
" approximately " + beacon.getDistance() + " meters away.");
}
}
}
});在didRangeBeaconsInRegion上有一个org.altbeacon.beacon.Beacon参数。但是对于监视,didEnterRegion只以区域作为参数。
@Override
public void didEnterRegion(Region region) {
}那么,我怎样才能在监控模式下得到艾德龙信标的网址呢?有可能吗?
发布于 2016-07-17 12:42:34
您必须使用测距API来读取实际的标识符。虽然可以使用监视来检测Eddystone-URL信标传输,但是由于帧只有一个标识符( URL),所以必须根据预先知道的URL标识符(不太有用)进行监视,或者监视所有标识符。
在后一种情况下,这会造成读取标识符的问题,因为监视回调只具有您所描述的region对象。
解决方案是在您监视的同时进行范围调整。远程回调将为您提供检测到的信标的完整列表,并允许您访问URL。
https://stackoverflow.com/questions/38421045
复制相似问题