KitKat

2014-11-01 39 views
2

上的位置检测到目前为止,当使用LocationClient获取用户的最后已知位置时,我没有问题,例如在Jelly Bean上进行测试。KitKat

我得到一个KitKat手机进行测试,我发现设置 - >位置中有一个默认设置,称为“仅设备”,它完全依靠GPS来启动,连接和获取位置。这需要一个WHILE。另外,当我在室内时,它可能没有任何位置。

如果我去设置,并切换到“高精度”我回到我的应用程序和BAM的位置就在那里。

的问题是:

如何检测其中的这三个位置设置被设定在奇巧,并要求用户更改密码(或直接改变它自己)

的三个设置如下:

-device只有

- 电池节能模式

- 高准确性

回答

1

据我所知,您可以单独确定使用LocationManager类启用/禁用哪些服务。

locationManager = (LocationManager) getApplicationContext().getSystemService(LOCATION_SERVICE); 
isGPSEnabled = locationManager 
       .isProviderEnabled(LocationManager.GPS_PROVIDER); 
isNetworkEnabled = locationManager 
       .isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

因此,您所要做的只是确定其中哪些已启用,并采取相应措施。如果其中任何一个被禁用,您可以要求用户打开它们。

if(!isGPSEnabled) { 
    startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)); 
} 
if(!isNetworkEnabled) { 
    startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS)); 
} 

编辑: 您可以使用LocationManager类是拿到你的设置正确,然后使用LocationClient实际收集位置信息。

+0

几个星期前,我刚刚停止使用LocationManager类,之后阅读了大量关于它是旧的位置API以及LocationClient如何更好的新方法的文章。实际上,在转换之后,很多问题消失了。我不想回去使用它。 – 2014-11-01 10:42:35

+0

是这样吗?我不知道。它肯定没有在官方网页中提到:http://developer.android.com/reference/android/location/LocationManager.html :) – shyam 2014-11-01 11:00:47

+1

看看这个讨论。它看起来好像有两个优点和缺点... http://stackoverflow.com/questions/18916273/locationclient-vs-locationmanager也许我使用它们的组合?确切地说, – 2014-11-01 11:06:58

相关问题