2

我有一些已经工作多年的 getLastKnowLocation 代码,但它不适用于三星 Galaxy S3 4.0.4。

Location location = null;

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, true);
// The S3 returns null here (even though location is enabled), google maps works. 
try {
  location = locationManager.getLastKnownLocation(provider);
} catch (IllegalArgumentException e) {

}
if ( location == null ) { // only S3 gets this....
   location =  locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
}

我注意到,如果我添加 PASSIVE_PROVIDER,我确实得到了一个位置,但我从来没有得到任何 onLocationChanged。相同的代码适用于我从 2.1 到 4.1 测试过的所有系统(除了我的 CM10,它看起来更加混乱)

关于发生了什么的任何想法?错误/功能?

我发现其他人有类似问题Galaxy S3 上没有 GPS 位置更新

4

2 回答 2

1

这与 Android 版本无关,我有此代码在 Galaxy Nexus 4.2.2 上运行,而不是在 S3 4.1 或 Sony XPeria S 4.0.4 上运行

我怀疑 GPS 位置没有检测到您(这需要时间和良好的 GPS 信号),在我的应用程序中,当我发现 GPS 没有响应或未启用时,我切换到网络检测(约 45 米的精度对我来说并没有那么糟糕我必须在 10 公里半径范围内搜索设备的情况)

于 2013-03-25T17:35:50.697 回答
0

我将手机升级到 4.1,错误/功能消失了。

于 2012-10-27T10:37:14.063 回答