Я пытаюсь обнаружить маяки во время работы моего приложения и поместить их в список, а также определить, когда они не запущены, и отобразить уведомление. Кажется, я не могу заставить оба работать одновременно на 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 и отдельный класс, производный от Application (который создает загрузочную область)?
привязать к разным экземплярам (привязать (это))?
Когда я отлаживаю LaunchApplication, OnCreate никогда не вызывается, так как же он вообще может создать загрузочную область?
как я должен настроить это, чтобы просто обнаруживать при работе на переднем плане и в фоновом режиме?
Спасибо.