Android 为GPS提供的ISP不工作
我们已经为Android实现了一个基于地理的应用程序,所以我们需要确保GPS一直处于启用状态。问题是Android 为GPS提供的ISP不工作,android,gps,Android,Gps,我们已经为Android实现了一个基于地理的应用程序,所以我们需要确保GPS一直处于启用状态。问题是 manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) 即使GPS提供商已启用,也始终返回false,因此我们的应用程序始终显示更改GPS状态的警报或它不工作 你知道发生了什么事吗 我们正在用三星Galaxy S和HTC Wildfire设备进行测试。。。 提前感谢。您可以直接从系统获取GPS状态: LocationManager m
manager.isProviderEnabled( LocationManager.GPS_PROVIDER )
即使GPS提供商已启用,也始终返回false,因此我们的应用程序始终显示更改GPS状态的警报或它不工作
你知道发生了什么事吗
我们正在用三星Galaxy S和HTC Wildfire设备进行测试。。。
提前感谢。您可以直接从系统获取GPS状态:
LocationManager myLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
private boolean getGPSStatus()
{
String allowedLocationProviders =
Settings.System.getString(getContentResolver(),
Settings.System.LOCATION_PROVIDERS_ALLOWED);
if (allowedLocationProviders == null) {
allowedLocationProviders = "";
}
return allowedLocationProviders.contains(LocationManager.GPS_PROVIDER);
}
你需要首先检查你的手机上是否有GPS。 如果你的手机是便宜的手机,它很可能使用网络定位作为定位提供商 你可以试试这个:
private boolean isGPSEnabled() {
Context context = Session.getInstance().getCurrentPresenter().getViewContext();
LocationManager locationMgr = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
boolean GPS_Sts = locationMgr.isProviderEnabled(LocationManager.NETWORK_PROVIDER)|| locationMgr.isProviderEnabled(LocationManager.GPS_PROVIDER);
return GPS_Sts;
}
有时,您的设备设置被设置为使用WiFi网络而不是GPS系统获取位置,因此该位置将被打开,但在检查
GPS\u提供商时,您的应用程序将返回false
正确的解决方案是检查GPS和网络:
如果要使用设置进行检查
:
private boolean checkIfLocationOpened() {
String provider = Settings.Secure.getString(getActivity().getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if (provider.contains("gps") || provider.contains("network"))
return true;
}
// otherwise return false
return false;
}
如果您想使用LocationManager
:
private boolean checkIfLocationOpened() {
final LocationManager manager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER) || manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
return true;
}
// otherwise return false
return false;
}
您可以在中找到完整的详细信息。
位置\u允许的提供程序自API 19以来已被弃用。Doc说要使用LOCATION\u MODE
和MODE\u CHANGED\u ACTION
(或PROVIDERS\u CHANGED\u ACTION
)你的解决方案每次都返回false,出了什么问题?@Zhar我不能告诉你哪里出了问题,位置怎么了,它打开了吗?在设置中,它显示它用什么来获取位置?也请参考这个答案了解更多细节:我可以建议你阅读我的帖子吗?谷歌手机并不便宜。。。我已经阅读了你的答案,但我希望我的应用程序能够工作,并且不依赖于位置方法,那么如何实现这一点呢?