【问题标题】:What happens if Android device does not have GPS as a location provider如果 Android 设备没有 GPS 作为位置提供程序会发生什么
【发布时间】:2011-12-27 06:12:30
【问题描述】:
鉴于此代码
if (!locator.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
//consider forcing user to turn on gps here
} else {
provider = LocationManager.GPS_PROVIDER;
}
如果设备没有 GPS 会怎样。现在,如果未启用该提供程序,那么我会将用户跳转到他们的系统设置以将其打开。但如果它不存在怎么办?这将如何处理。我不想将这类用户锁定在应用之外。
【问题讨论】:
标签:
android
gps
location
settings
listener
【解决方案1】:
如果您想要精确的位置,您只需要 GPS。如果设备根本没有 GPS,那么您可以通过 NETWORK_PROVIDER 进行不太准确的估计。如果您只需要用户的大致位置(城市西侧、纪念馆附近等),这通常是合适的。如果您绝对需要一个在特定精度范围内的特定位置才能让您的应用运行,那么您是没有 GPS 的用户就很不走运了。
或者,如果您启用 GPS 而用户没有 GPS,则它根本不会获得更新。在这种情况下,您必须提到由于缺少 GPS,更新并不精确,用户将不得不使用您的应用的较弱版本。
【解决方案2】:
如果 GPS 提供程序不可用(或已启用),请尝试您能获得的任何东西:
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_HIGH);
criteria.setPowerRequirement(Criteria.POWER_HIGH);
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
String provider = lm.getBestProvider(criteria, true);
这假设您更喜欢粗略的位置而不是根本没有位置。