2016-11-08 43 views
3

我正在开发一个使用融合位置API的跟踪应用程序。我想以编程方式检查用户是否在应用程序运行时关闭了位置服务。如何在跟踪应用程序中关闭用户的位置服务实时检查

我在考虑使用方法运行一个并行线程来检查用户是否每隔5秒关闭GPS。

这是正确的方法还是有更好的方法来做到这一点?

+1

您将执行的监听器有您需要的事件。 – AxelH

回答

2

使用广播接收机,当GPS设置将被改变时,您将自动得到通知。

这里是链接:

https://developer.android.com/training/monitoring-device-state/manifest-receivers.html

+1

这对我有用。我使用下面的代码private BroadcastReceiver gpsReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context,Intent intent)if(intent.getAction()。matches(“android.location.PROVIDERS_CHANGED”)){ 如果(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER))Log.i(TAG,“onReceive:activate GPS”); permissionOrLocationSettingsNotification(); } } } }; – user7090887

+0

现在我不能在这个时候,因为我是这个网站的新手。将来会做。 – user7090887

+0

没有问题。谢谢:) – Sangeeta

1

LocationListener文档

抽象无效onProviderEnabled(字符串提供商)
调用时提供由用户启用。

抽象无效onProviderDisabled(字符串提供程序)
当用户禁用提供程序时调用。

因此,您可以使用这些事件来了解您用来侦听位置的提供者是否启用/禁用。

+0

我使用FusedLocation Api,所以我不能实现这些方法。 LocationListeners比FusedLocation Api更好吗? – user7090887

+0

我会说不,API应该增加从多个提供者获取数据的更高精度。但我认为这可能会消耗更多电量(这里不是来源)。我发现使用简单的LocationListener更容易,但如果您倾听Google,这不是最佳做法;) – AxelH

相关问题