我正在创建Xamarin.android应用程序,可以使用它扫描BLE设备并在范围内通知用户,而不管该应用程序处于前台,暂停还是终止状态。我正在使用ESP32 BLE设备作为ibeacon。我已经使用了AltBeacon库并遵循了下面链接中提到的所有步骤
https://altbeacon.github.io/android-beacon-library/samples.html
我已经转换了Xamarin.android的代码。当应用程序处于前台且处于暂停状态时,我会收到通知,但在被杀死时却不会收到通知。]
我也尝试使用Googles附近消息API。但是我无法检测到ibeacon。
这里是应用程序类的代码
[Application]
public class Myapplication : Application, IBootstrapNotifier
{
BackgroundPowerSaver backgroundPowerSave;
RegionBootstrap regionBootstrap;
public Myapplication(IntPtr handle, JniHandleOwnership ownerShip) : base(handle, ownerShip)
{
}
public override void OnCreate()
{
base.OnCreate();
BeaconManager beaconManager = BeaconManager.GetInstanceForApplication(this);
beaconManager.BeaconParsers.Add(new BeaconParser().SetBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
backgroundPowerSave = new BackgroundPowerSaver(this);
regionBootstrap = new RegionBootstrap(this, Helper.GetRegion());
}
public void DidDetermineStateForRegion(int state, Region region)
{
Helper.ShowNotification(this, "Beacon - state for region", "Log in");
}
public void DidEnterRegion(Region region)
{
regionBootstrap.Disable();
//show notification
}
public void DidExitRegion(Region region)
{
//show notification
}
}
如何解决这个问题?
“杀死”一个应用程序后测试检测非常棘手,并且它是否正常工作(通常是有效的)取决于您如何杀死它以及您在说什么设备制造商。
仔细阅读this page上的所有详细信息,以确保您正在测试预期可行的方案。