我正在开发一个应用程序,专门在设备移动时跟踪设备的位置。对于相同的 API 调用,我在具有不同操作系统版本的三星和 HTC 设备中得到不同的响应。
这是我的代码。
private static final long HUNDERE_METERS = 100; // in Meters
private static final long TWO_MIN = 60000*2; // in Milliseconds
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setBearingRequired(true);
criteria.setBearingAccuracy(Criteria.ACCURACY_HIGH);
criteria.setHorizontalAccuracy(Criteria.ACCURACY_HIGH);
String provider = mlocManager.getBestProvider(criteria, false);
mlocManager.requestLocationUpdates(provider, TWO_MIN, HUNDERE_METERS, mlocListener);
'Samsung Galaxy Nexus-4.1.1' 提供每移动 HUNDRED_METERS(100 米)距离的位置更新,这很好。但在“HTC EVO 3D PG86100-4.0.3”中,GPS 在 2 分钟内不可用,然后变为可用,这导致每 2 分钟更新一次位置。
我修改了代码如下
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, TWO_MIN, HUNDERE_METERS, mlocListener);
现在 HTC 开始正常工作,并为每移动 100 米的距离提供位置,但在三星 GPS 中每 2 分钟不可用。
请建议我应该用什么参数调用 requestLocationUpdates 来获取移动所需距离的距离的位置更新,这应该适用于所有 Android 设备和操作系统。