Blackberry LocationProvider setLocation Listener不会在8900上定期更新位置,其他设备工作正常

时间:2011-12-30 10:37:58

标签: blackberry geolocation

我目前正在开发基于位置的解决方案,我需要处理定期的位置更新。它可以在Torch 9800,Bold 9780上正常工作,但是,我不会在Curve 8900上使用OS 5.0.0.535定期更新位置。

我已将我的标准定义为:

bbCriteria = new BlackBerryCriteria();
bbCriteria.setSpeedAndCourseRequired(false);
bbCriteria.setCostAllowed(true);
if(bbCriteria.getMode() == GPSInfo.GPS_MODE_ASSIST) {
    bbCriteria.setHorizontalAccuracy(20);
    bbCriteria.setVerticalAccuracy(20);
}

我正在通过以下方式注册定期更新:

locationProvider = (BlackBerryLocationProvider)LocationProvider.getInstance(bbCriteria);
locationProvider.setLocationListener(new MyLocationListener(), getUpdateInterval(), -1, -1);

我根据业务逻辑计算时间间隔。一般来说它是60秒。

我确实在听众中收到了许多设备的定期位置更新,例如Torch 9800,Bold 9780,但是在第一次更新后没有任何反复发生在Curve 9800上。

此外,其他设备的默认GPS模式是辅助的,但是,在Curve 8900上它是自动的。

请告诉我这个问题是什么?

1 个答案:

答案 0 :(得分:2)

嗯......我在测试中发现的是,LocationListener似乎只是监听的位置,但实际上并没有请求它。因此,如果另一个应用程序请求该位置,您的应用程序将定期获取它,但如果没有任何东西主动询问位置 - 将不会给出任何位置。我实现的解决方案是完全放弃LocationListener并简单地设置一个定期调用getLocation以获取新位置的计时器。这一切都很好。此方法还为您提供了更多控制权,因为如果设备无法获得您将知道的位置并获得原因(超时等)。

对于有关默认设置的问题,不同的设备也可能具有基于运营商的不同默认值。例如,Verizon确实限制了对Assisted和Cellsite的支持。