【问题标题】:Issue in AltBeacon Monitoring and Ranging androidAltBeacon Monitoring and Ranging android中的问题
【发布时间】:2016-12-07 12:12:23
【问题描述】:

我在 Altbeacon 中使用此代码进行测距和监控

 class Appclass extends Application implements BootstrapNotifier {
private RegionBootstrap regionBootstrap;
private BackgroundPowerSaver backgroundPowerSaver;
private boolean haveDetectedBeaconsSinceBoot = false;
public static Region region1;
private static boolean activityVisible;
public static Appclass instances;
public static BeaconManager beaconManager;
public void onCreate() {
    super.onCreate();
    instances = this;beaconManager=org.altbeacon.beacon.BeaconManager.getInstanceForApplication(this);

       beaconManager.getBeaconParsers().add(new BeaconParser()
            .setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
    beaconManager.setForegroundScanPeriod(1100l);
    beaconManager.setForegroundBetweenScanPeriod(0l);
    beaconManager.setAndroidLScanningDisabled(true);
    beaconManager.setBackgroundBetweenScanPeriod(01);
    beaconManager.setBackgroundScanPeriod(1100l);
    try {
        beaconManager.updateScanPeriods();

    } catch (Exception e) {
    }
    Log.d("", "setting up background monitoring for beacons and power                 saving");
    // wake up the app when a beacon is seen
    region1 = new Region("backgroundRegion",
            null, null, null);
    regionBootstrap = new RegionBootstrap(this, region1);
    backgroundPowerSaver = new BackgroundPowerSaver(this);

}

@Override
public void didEnterRegion(Region region) {
    Log.d("ABC", "Enter");
    Log.d("ABC value", region.getId2() + " " + region.getId3());
    try { Intent i = new Intent(getApplicationContext(), AbcService.class);

            startService(i);
    } catch (Exception e) {
    }
}
@Override
public void didExitRegion(Region region) {
    Log.d("ABC", "exit");
}

@Override
public void didDetermineStateForRegion(int i, Region region) {

}

然后在我的 AbcService 类代码中是:

class AbcService extends Service implements BeaconConsumer, MonitorNotifier, RangeNotifier {
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    Appclass.beaconManager.bind(this);
    super.onCreate();

}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    try {
    } catch (Exception e) {

    }


    return START_STICKY;
}

@Override
public void didRangeBeaconsInRegion(Collection<Beacon> collection, Region region) {
    Log.d("ABC", "range");
}

@Override
public void onBeaconServiceConnect() {
    Appclass.beaconManager.setMonitorNotifier(this);
    Appclass.beaconManager.setRangeNotifier(this);

}

@Override
public void didEnterRegion(Region region) {
    try {
        Log.d("ABC", "didEnterRegion");
        Log.d("ABC", "" + region.getId2() + region.getId3());
        Appclass.beaconManager.startRangingBeaconsInRegion(Appclass.region1);

    } catch (RemoteException e) {
        e.printStackTrace();
    }
}

@Override
public void didExitRegion(Region region) {
    try {
        Log.d("ABC", "didExitRegion");
         Appclass.beaconManager.stopRangingBeaconsInRegion(Appclass.region1);

    } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
public void didDetermineStateForRegion(int i, Region region) {

}

}

现在的问题是每次进入信标范围时都会调用 Application 类的 didEnterRegion 方法,但 AbcService 类的 didEnterRegion 方法没有调用一段时间,也没有开始测距。我的代码有什么问题?

【问题讨论】:

  • 在服务类中是否调用了didDetermineStateForRegiononBeaconServiceConnect() 会被调用吗?
  • 它正在调用一些时间......所以我没有复制问题所在。
  • 抱歉,我可能需要更多信息才能提供帮助。我建议您尝试重复测试,也许 10 次,然后查看服务类中的哪些方法 onCreateonBeaconServiceConnectdidDetermineState 会在每次测试运行时被调用。如果您进行这些测试,请注意您注意到的方法被调用与测试条件的任何模式。
  • 'onBeaconServiceConnect' 和 'onCreate' 调用但 didEnter 和 didExit 没有调用

标签: android monitoring altbeacon region-ranging


【解决方案1】:

一些提示:

  • 在您开始监控的同时开始测距。没有理由等待进入的区域回调或退出区域时停止测距。

  • 将日志记录添加到didDetermineStateFirRegion。当应用程序启动后出现信标时调用此方法,即使设备在之前运行时已经在区域中。 didEnterRegion 仅在与该区域匹配的信标实际消失 15 秒以上然后重新出现时才会被调用。

【讨论】:

  • 完成。谢谢大卫。我从 'didDetermineStateFirRegion' 这个方法重新开始,它的工作正常。
猜你喜欢
  • 2015-03-31
  • 1970-01-01
  • 1970-01-01
  • 2013-12-17
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
相关资源
最近更新 更多