Altbeacon 无法在Android中检测到我的背景信号灯

Altbeacon 无法在Android中检测到我的背景信号灯,altbeacon,android-ibeacon,beacon,Altbeacon,Android Ibeacon,Beacon,我有两个Radius网络的无线电信标。我已经用定位应用程序将它们配置为Eddystone。现在,我已经编写了一个小程序,在后台发送通知,即当应用程序未运行时。我需要在应用程序处于后台时发送通知。我正在使用Android beacon库来实现这一点。我已经尝试了几乎所有的链接,但我无法检测到它 我正在这里粘贴代码 公共类BeaconReferenceApplicationExtends应用程序实现BootstrapNotifier、RangeNotifier{ 私有静态最终字符串标记=Beacon

我有两个Radius网络的无线电信标。我已经用定位应用程序将它们配置为Eddystone。现在,我已经编写了一个小程序,在后台发送通知,即当应用程序未运行时。我需要在应用程序处于后台时发送通知。我正在使用Android beacon库来实现这一点。我已经尝试了几乎所有的链接,但我无法检测到它

我正在这里粘贴代码

公共类BeaconReferenceApplicationExtends应用程序实现BootstrapNotifier、RangeNotifier{ 私有静态最终字符串标记=BeaconReferenceApp; 私有区域引导区域引导; 私人BackgroundPowerSaver BackgroundPowerSaver; 私有布尔haveDetectedBeaconsinceBoot=false; private MonitoringActivity MonitoringActivity=null; 创建时的公共无效{ super.onCreate; BeaconManager BeaconManager=BeaconManager.getInstanceForApplicationthis; beaconManager.getBeaconParsers.clear; beaconManager.getBeaconParsers.addnew BeaconParser。 setBeaconLayoutm:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25; beaconManager.setbackground在扫描周期1000之间; Log.iTAG,为信标设置后台监控和节能; //Toast.makeTextgetApplicationContext,称为!!!,Toast.LENGTH\u LONG.show; //看到信标时唤醒应用程序 Region Region=new RegionbackgroundRegion,null,null,null; regionBootstrap=新regionBootstrap此区域; //只需构造这个类并在自定义应用程序中保存对它的引用 //类将自动使BeaconLibrary在应用程序启动时节省电池 //不可见。这将使蓝牙电源使用量减少约60% //backgroundPowerSaver=新的BackgroundPowerSaverthis; //如果希望在Android Emulator中测试信标检测,可以使用以下代码: //BeaconManager.setbeaconsimulator新时间beaconsimulator; //TimedBeaconSimulator BeaconManager.getBeaconSimulator.createTimedSimulatedBeacons; } @凌驾 公共无效的区域arg0{ //在本例中,每当出现信标时,此类都会向用户发送通知 //首先可以看到与上面定义的区域相匹配的图像。 Log.iTAG,未输入区域。; //发送通知; 如果!已检测到Beaconsinceboot{ Log.iTAG,自动启动MainActivity; //自启动以来,我们第一次检测到信标,我们启动了 //主要活动 意向意向=新意向此,MonitoringActivity.class; intent.setFlagsInt.FLAG_活动_新任务; //重要提示:确保在清单中添加android:launchMode=singleInstance //如果用户已创建了此活动的多个副本,则阻止创建此活动的多个副本 //已经手动启动了该应用程序。 这是startActivityintent; haveDetectedBeaconsinceBoot=true; }否则{ 如果监视活动!=null{ //如果监视活动可见,我们将记录有关我们拥有的信标的信息 //在展览上看到 monitoringActivity.LogToDisplay我再次看到一个信号灯; }否则{ //如果我们以前已经看到过信标,但监控活动不在 //在前台,我们在后续检测时向用户发送通知。 Log.iTAG,发送通知。; //发送通知; } } } @凌驾 公共区域{ 如果监视活动!=null{ monitoringActivity.LogToDisplay我再也看不到信号灯了。; } } @凌驾 公共无效不确定地区州、地区{ 如果监视活动!=null{ monitoringActivity.logtodisplay我刚从看到/不看到信标切换到:+state; } } 私有无效发送通知{ NotificationCompat.Builder= 新的通知,新的构建者 .setContentTitleBeacon参考应用程序 .SetContentText应用程序中有一个信标在附近。 .setSmallIconR.drawable.ic_发射器; TaskStackBuilder stackBuilder=TaskStackBuilder.createthis; stackBuilder.AddNextEntNew Intentthis,MonitoringActivity.class; 悬而未决的结果悬而未决的结果= stackBuilder.getpendingent 0, PendingEvent.FLAG_更新_当前 ; builder.setContentIntentresultPendingIntent; 通知经理通知经理= 通知经理:这是我的。 getSystemServiceContext.NOTIFICATION\u服务; notificationManager.notify1,builder.build; } 公共无效设置监视活动监视活动活动{ Log.iLog,仅测试; this.monitoringActivity=活动; } @凌驾 公共无效区域集合arg0,区域arg1{ //TODO自动生成的方法存根 发送通知; //Log.iLog,仅测试; }
从您使用的布局来看,我可以说您正在扫描AltBeacon而不是Eddystone。因此,您应该更改或添加以下信标布局:

s:0-1=feaa,m:2-2=00,p:3-3:-41,i:4-13,i:14-19

beaconManager.getBeaconParsers.addBeaconParser.EDDYSTONE\u UID\u布局; 此外,您还可以查看以下链接,了解有关使用AltBeacon Library for Eddystone信标的更多信息


顺便说一句,您可以将应用程序设置为仅检测Eddystone信标,以便缩小问题范围,并查看代码是否正常工作或信标是否正常。

我遇到了同样的问题,请花一天以上的时间来解决此问题。代码没有问题

作为一名开发人员,我犯了一个愚蠢的错误

这将完全用于某个人

在我的测试设备中,我没有启用位置服务。因此,无法在后台模式下接收信标。因此,启用位置服务以在后台获取信标通知,在另一端,前台不需要此设置


谢谢。

如果人们有相关的代码可以使用,他们会更容易地帮助您-请告诉我们您迄今为止尝试了什么我更新了我的代码。如果有什么可以做的,请告诉我。对不起,我还没有使用信标的经验。但我可以看到,您一方面使用NotificationCompat.Builder,另一方面使用NotificationManager而不是NotificationManagerCompat。这样行吗?不行。。还是一样。我没有在后台收到通知。根据你的代码,如果你能在应用程序位于前台时检测到信标,你也应该在后台检测到它们。你的代码看起来不错。但是,清单文件可能会导致此错误。你能分享一下吗?