public class BeaconMonitoringService extends Service implements BootstrapNotifier, BeaconConsumer, RangeNotifier {
private static final String TAG = "BeaconMonitoringService";
private BeaconManager beaconManager;
@SuppressWarnings("unused")
private RegionBootstrap regionBootstrap;
@SuppressWarnings("unused")
private BackgroundPowerSaver backgroundPowerSaver;
private Region region;
@Override
public void onCreate() {
super.onCreate();
beaconSession = new BeaconSession(this);
beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().clear();
beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
region = new Region("MyBeacon", Identifier.parse("0800200C9A66"), null, null);
regionBootstrap = new RegionBootstrap(this, region);
beaconManager.setBackgroundMode(true);
backgroundPowerSaver = new BackgroundPowerSaver(this);
beaconManager.bind(this);
}
@Override
public void didEnterRegion(Region region) {
try {
Log.d(TAG, "Did Enter Region.");
beaconManager.startRangingBeaconsInRegion(region);
} catch (RemoteException e) {
if (BuildConfig.DEBUG) Log.d(TAG, "Can't start ranging");
}
}
@Override
public void didExitRegion(Region region) {
try {
Log.d(TAG, "Did Exit Region");
} catch (RemoteException e) {
if (BuildConfig.DEBUG) Log.d(TAG, "Can't start ranging");
}
}
@Override
public void didDetermineStateForRegion(int state, Region region) {
switch (state) {
case MonitorNotifier.INSIDE:
Log.d(TAG, "INSIDE");
didEnterInRegion = true;
break;
case MonitorNotifier.OUTSIDE:
Log.d(TAG, "OUTSIDE");
didEnterInRegion = false;
break;
default:
didEnterInRegion = false;
Log.d(TAG, "state" + state);
break;
}
}
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
for (Beacon beacon : beacons) {
if (beacon.getId1().equals(Identifier.parse("0800200C9A66")) && beacon.getDistance() < 1.0) {
sendNotification(beacon);
}
}
}
}
@Override
public void onBeaconServiceConnect() {
beaconManager.addRangeNotifier(this);
try {
beaconManager.startRangingBeaconsInRegion(region);
} catch (RemoteException e) {
}
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
beaconManager.unbind(this);
super.onDestroy();
}
didrangeBeaconsinRegion
被设计为在每个扫描周期结束时(默认为每1秒)定时触发,以告诉您在此期间看到了哪些信标。
如果只希望在检测到每个信标之前触发一次事件,可以创建一个类变量来保存一个标志,指示是否已经处理了每个信标。
像这样:
// Put this at your class level
Set<String> mBeaconsProcessed = new HashSet<>();
...
// Put this code inside your didRangeBeaconsInRegion method
// Only process this beacon if we have not done so before
if (!mBeaconsProcessed.contains(beacon.toString)) {
if (beacon.getId1().equals(Identifier.parse("0800200C9A66")) && beacon.getDistance() < 1.0) {
sendNotification(beacon);
// Mark this beacon as having already been processed.
mBeaconsProcessed.put(beacon.toString));
}
}
}
问题内容: 我正在使用Swift开发iOS通用应用程序,使用自动布局功能,并且仅支持纵向模式。 我发现打过多次。而是在启动MyApp时仅被调用一次。 为什么要多次调用?是否会按顺序对每个(,等)进行约束? 任何信息将不胜感激。 问题答案: 仅被调用一次:需要加载视图时。 ,但是,每个运行循环都会在已存在或已对其调用的任何视图上调用一次- 这包括每当将子视图添加到视图,滚动,调整大小等时。
第3次didRangeBeaconsInRegion()方法在2秒内调用3次 诸如此类.... 代码段
问题内容: 关于的简单代码。是SessionScoped Bean,是RequestScoped Bean 内 我的问题是被叫很多。会告诉我们该方法在什么阶段被调用。首次加载页面时,请在阶段6-进行约 5次 呼叫。该页面上有一个,因此我在其中键入一些内容,然后单击(命令按钮)。然后在阶段1-> 4期间再呼叫 12次 。每个阶段调用此方法 3-4次 。然后,此属性的get 方法的setter方法(即
我读在初始渲染时只被调用一次,但我看到它被渲染了多次。 似乎我创建了一个递归循环。 组件didMount调度动作来获取数据 一旦接收到数据,它就会触发成功操作,将数据存储在redux状态。 父反应组件连接到redux存储,并且具有mapStateToProps用于刚刚在上述步骤中更改的条目 父渲染子组件(通过变量编程选择) 子组件的组件didMount再次被调用 它消除了获取数据的操作 我想这就是
问题内容: 这些天,我正在学习JSF + Facelets。我有一个BackingBean和Facelet xHTML页面。当我请求facelet页时(仅一次),backing-bean-method被多次调用。 这可能是什么原因? 我看不到什么特别的东西。提前致谢。 这是方面: 这是支持豆。方法getKunden被多次调用: 问题答案: Bean的getter在那里就 可以 从视图侧 访问 模型
编辑:由于代码剪贴不会重现错误-这里有一个指向github repo的链接:(代码远未完成) https://github.com/altruios/clicker-game 我现在已经在两台计算机上运行了它——这两台计算机都有相同的行为,而代码剪报并没有显示出来。 因此,我正在构建一个clicker游戏来学习react,我不明白为什么这段代码会以这种方式运行: 在主应用程序中,我有以下功能: 那