2011-12-30 47 views
2

我目前正在開發一個基於位置的解決方案,我需要處理定期位置更新。它可以在Torch 9800,Bold 9780上正常工作,但是,不會定期在Curve 8900上使用OS 5.0.0.535進行位置更新。BlackberryLocationProvider setLocationListener不給8900定期位置更新,其餘設備工作正常

我定義我的標準爲:

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,但是在第一次更新之後沒有任何反應。

此外,在其他設備默認的GPS模式是ASSISTED,但是,在曲線8900它是自主的。

請讓我知道問題是什麼?

回答

2

嗯......我從我的測試中發現,LocationListener似乎只有的位置,但實際上並沒有要求它。因此,如果其他應用請求定位,您的應用會定期收到該定位,但如果沒有任何活動要求定位,則不會提供。我已經實現的解決方案是完全放棄LocationListener,並簡單地設置一個定期調用getLocation來定期獲取新位置。這一切都很好。這種方法也給了你更多的控制權,因爲如果設備未能獲得你將要知道的位置並得到原因(超時等)。

至於你的問題關於默認,不同的設備可能有不同的默認也基於載體。舉例來說,Verizon確實限制了對Assisted和Cellsite的支持。