Я застрял в проблеме с 2 или 3 неделями, ища все туто или ту же проблему в сети, но я не нашел ответа на свои вопросы.
На самом деле я работаю над приложением Android, работающим с Xamarin в C #
Вот моя проблема:
Я хочу запустить службу GPS в начале моего приложения, которое запрашивает координаты каждую Х-минуту (это не имеет значения)
Так что мой сервис выглядит так:
[Service(Name = "com.xamarin.ServicesDemo2")]
public class GpsService : Service, ILocationListener
{
static readonly string TAG = typeof(GpsService).FullName;
private LocationManager _locationManager;
private Location _location;
[return: GeneratedEnum]
public override StartCommandResult OnStartCommand(Intent intent, [GeneratedEnum] StartCommandFlags flags, int startId)
{
Log.Debug(TAG, "OnStartCommand");
if (_locationManager == null)
_locationManager = (LocationManager)GetSystemService(LocationService);
_locationManager.RequestLocationUpdates(LocationManager.GpsProvider, 0, 0, this);
return StartCommandResult.Sticky;
}
public override IBinder OnBind(Intent intent)
{
return null;
}
public override void OnDestroy()
{
Log.Debug(TAG, "OnDestroy");
base.OnDestroy();
}
public void OnLocationChanged(Location location)
{
_location = location;
}
public void OnProviderDisabled(string provider)
{
}
public void OnProviderEnabled(string provider)
{
}
public void OnStatusChanged(string provider, [GeneratedEnum] Availability status, Bundle extras)
{
}
}
И я называю это в своей основной деятельности следующим образом:
private void BtnValidateClick(object sender, EventArgs e)
{
Intent serviceToStart = new Intent(this, typeof(GpsService));
StartService(serviceToStart);
}
Когда я запускаю это и устанавливаю точку останова в методе OnLocationChanged
, я никогда не попадаю туда, поэтому я полагаю, что сделал что-то не так.
Вот мои вопросы:
- Как узнать, когда
OnLocationChanged
сработал?
- Как и где указать в коде, что я хочу вызвать
OnLocationChanged
каждую Х минуту?
И последнее, причина, по которой я хочу запускать каждую Х-минуту, заключается в том, чтобы не чрезмерно использовать батарею устройства, поэтому, если у вас есть другой метод, я возьму его!
Я прошу прощения за мой английский, я старался изо всех сил ...
Заранее спасибо!