AltBeacon范围示例永远不会返回结果

时间:2016-05-25 14:25:57

标签: android ibeacon altbeacon region-ranging

我正在开发一款能够检测附近信标的Android应用程序,我正在使用AltBeacon API,我尝试了here给出的范围示例代码的修改版本。

这是我的代码

public class MainActivity extends Activity implements BeaconConsumer {

    protected static final String TAG = "RangingActivity";
    private BeaconManager beaconManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        BeaconManager.setsManifestCheckingDisabled(true);

        beaconManager = BeaconManager.getInstanceForApplication(this);

        beaconManager.getBeaconParsers().add(new BeaconParser().
                setBeaconLayout("m:3-4=0215,i:4-19,i:20-21,i:22-23,p:24-24"));

        beaconManager.bind(this);
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        beaconManager.unbind(this);
    }
    @Override
    public void onBeaconServiceConnect() {
        beaconManager.setRangeNotifier(new RangeNotifier() {
            @Override
            public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
                if (beacons.size() > 0) {
                    Log.i(TAG, "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) {    }
    }
}

我添加了这一行

BeaconManager.setsManifestCheckingDisabled(true);

因为否则应用程序在开始时崩溃。 ref

我添加了一个beaconParser来解析我的信标(iBeacon布局)

beaconManager.getBeaconParsers().add(new BeaconParser().
                setBeaconLayout("m:3-4=0215,i:4-19,i:20-21,i:22-23,p:24-24"));

问题是我无法在logcat终端获得任何响应,就好像它无法检测到我的信标。

我正在使用带有Android 6.0的motorola Moto G(第3代),并且我已经获得了必要的权限

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

任何可能导致问题的想法?

1 个答案:

答案 0 :(得分:0)

只要您通过放入行selected来“修复”崩溃,就无法检测到信标。该行是针对不需要实际信标检测的自动测试情况的​​解决方法。因此,您必须删除此行并以不同的方式解决崩溃。

如果使用Eclipse,则需要启用清单合并(请参阅上面指出的相同参考)以使其正常工作。如果使用Android Studio或其他IDE,则可能是您如何引用库的问题。如果是这种情况,请说明如何将其与项目联系起来。