Android AltBeacon Ranging没有找到任何东西

时间:2018-01-09 02:46:27

标签: java android bluetooth-lowenergy beacon altbeacon

我使用了here提供的标准示例,但我修改了它以记录如果没有找到任何内容以确保它实际被调用。

@Override
public void onBeaconServiceConnect() {
    beaconManager.addRangeNotifier(new RangeNotifier() {
        @Override
        public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
            if (beacons.size() == 0) {
                Log.i("ActivityMain", "no beacons found");
            }
            if (beacons.size() > 0) {
                Log.i("ActivityMain", "The first beacon I see is about " + beacons.iterator().next().getDistance() + " meters away.");
            }
        }
    });

    try {
        beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
    } catch (RemoteException e) {
        e.printStackTrace();
    }
}

我尝试在绑定之前添加几个额外的解析器,我尝试扫描而不添加它们:

beaconManager.getBeaconParsers().add(new BeaconParser(BeaconParser.ALTBEACON_LAYOUT));
    beaconManager.getBeaconParsers().add(new BeaconParser(BeaconParser.EDDYSTONE_TLM_LAYOUT));
    beaconManager.getBeaconParsers().add(new BeaconParser(BeaconParser.EDDYSTONE_UID_LAYOUT));
    beaconManager.getBeaconParsers().add(new BeaconParser(BeaconParser.EDDYSTONE_URL_LAYOUT));
    beaconManager.getBeaconParsers().add(new BeaconParser(BeaconParser.URI_BEACON_LAYOUT));
    beaconManager.getBeaconParsers().add(new BeaconParser().
            setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24"));

    beaconManager.bind(this);

我在清单中指定了以下权限:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

现在我的房间里有多个信标,包括Eddystone和iBeacon。调用startRangingBeaconsInRegion(...)

后,找不到任何一个

D/BluetoothLeScanner: could not find callback wrapper在logcat中显示了很多,如果这是任何指标。事情似乎是回调,因为我肯定知道这段代码

if (beacons.size() == 0) {
                    Log.i("ActivityMain", "no beacons found");
                }

每秒执行一次。我已经尝试了这个应用Beacon Scanner,它也使用了AltBeacon并且发现我的信标很好。我已经检查了它的来源,并且它不喜欢我自己没有做过的任何事情,尽管另一个应用程序正在使用kotlin并且我正在使用java。

我已尝试在Moto G3和Galaxy S7上执行此操作,并且对其中任何一个都没有运气。

这可能是什么原因?

0 个答案:

没有答案