Я пытаюсь обнаружить маяки во время работы моего приложения, поместить их в список, а также определить, когда они не работают, и отобразить уведомление. Кажется, я не могу заставить обоих работать одновременно на Android.
У меня есть основное занятие ...
[Activity(LaunchMode = LaunchMode.SingleInstance, Label = "MyApp", Icon = "@mipmap/icon", MainLauncher = true, Theme = "@style/MainTheme", ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity, IMonitorNotifier, IRangeNotifier, IBeaconConsumer, IBootstrapNotifier
protected override void OnCreate(Bundle savedInstanceState)
{
set beacon parsers
beaconmanager.bind(this)
...
public void OnBeaconServiceConnect()
{
BeaconManager.AndroidBeaconManager.RemoveAllMonitorNotifiers();
BeaconManager.AndroidBeaconManager.RemoveAllRangeNotifiers();
BeaconManager.AndroidBeaconManager.AddMonitorNotifier(this);
BeaconManager.AndroidBeaconManager.AddRangeNotifier(this);
StartMonitoringBeacons...
StartRangingBeacons...
}
Тогда у меня есть отдельный класс ...
[Activity(LaunchMode=LaunchMode.SingleInstance, Label="MyApp", MainLauncher = true)]
public class LaunchApplication : Application, IBootstrapNotifier, IRangeNotifier, IBeaconConsumer
{
private RegionBootstrap _bootstrap = null;
public override void OnCreate()
{
base.OnCreate();
var proximities = BeaconManager.Instance.GetServerProximitiesAsync().GetAwaiter().GetResult();
var regions = proximities.Select(x => new Region(x.UUID, null, null, null)).ToList();
BeaconManager.GetParsers().ForEach(x => BeaconManager.AndroidBeaconManager.BeaconParsers.Add(x));
_bootstrap = new RegionBootstrap(this, regions);
}
public void DidEnterRegion(Region region)
{
add parsers
beaconmanager.bind(this);
}
public void OnBeaconServiceConnect()
{
BeaconManager.AndroidBeaconManager.AddMonitorNotifier(this);
BeaconManager.AndroidBeaconManager.AddRangeNotifier(this);
start monitoring...
start ranging...
Я ничего не добавляю к своему манифесту, потому что считаю, что это автоматически происходит с атрибутом Activity.
У меня вопрос, должен ли я иметь MainActivity и отдельный класс, производный отПриложение (которое создает загрузочную область региона)?
связывать ли я с различными экземплярами (связывать (это))?
Когда я отлаживаю, LaunchApplication OnCreate никогда не вызывается, так как он вообще создаетрегион начальной загрузки?
как мне настроить его так, чтобы он обнаруживался при работе на переднем и заднем плане?
Спасибо.