我已经被困在一个问题上,因为现在2到3个星期,在网上搜索每个tuto或同样的问题,但我没有找到我的问题的答案。
我实际上是在使用C#
中的Xamarin运行的Android应用程序上工作这是我的问题: 我想在我的应用程序开始时每隔X分钟请求一次坐标就开始一个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)
{
}
}
我在我的mainActivity中将其称为:
private void BtnValidateClick(object sender, EventArgs e)
{
Intent serviceToStart = new Intent(this, typeof(GpsService));
StartService(serviceToStart);
}
当我运行这个并在OnLocationChanged
方法中放置一个断点时,我永远不会进入那里,所以我想我做错了。
以下是我的问题:
OnLocationChanged
何时被触发?OnLocationChanged
?最后一点,我想要每隔X分钟触发的原因是不要过度使用设备的电池,所以如果你有其他方法,我会接受它!
我为我的英语道歉,我尽我所能......
提前致谢!
答案 0 :(得分:0)
我通过在模拟器上运行来解决这个问题!当我在模拟器上发送位置时,会触发OnLocationChanged,这就是我所需要的。