2011-10-14 61 views
0

在我的BB應用程序中,我嘗試使用單元格站點獲取位置。單元格站點GPS跟蹤黑莓問題

但它總是拋出一個位置異常:

Timed out while waiting for Geolocation.m=0 

這裏是我的代碼

Criteria criteria = new Criteria(); 
criteria.setHorizontalAccuracy(Criteria.NO_REQUIREMENT); 
criteria.setVerticalAccuracy(Criteria.NO_REQUIREMENT); 
criteria.setCostAllowed(true); 
criteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_LOW); 
LocationProvider provider = LocationProvider.getInstance(criteria); 
Location location = provider.getLocation(-1); 
QualifiedCoordinates qualifiedCoordinates = location.getQualifiedCoordinates(); 
double latitude = qualifiedCoordinates.getLatitude(); 
double longitude = qualifiedCoordinates.getLongitude(); 

但是,如果我改變參數

criteria.setHorizontalAccuracy(50); 
criteria.setVerticalAccuracy(50); 
criteria.setCostAllowed(true); 
criteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_HIGH); 

輔助GPS工作正常,我將獲得設備的正確位置。

+0

我發現Criteria.POWER_USAGE_LOW在我幾周前開發的應用程序中運行良好,但尚未運行(在Sim或Device上) '大崩潰'。難道BB服務的一部分工作不正常或被禁用? – Paul

回答

0
class LocationTracker{ 
private LocationProvider provider; 
Criteria cr; 
public LocationTracker() { 
    cr= new Criteria(); 
    resetGPS(); 
} 

public void resetGPS(){  
     try { 
      provider = LocationProvider.getInstance(cr); 
      if(provider != null) { 
        provider.setLocationListener(new MyLocationListener(),60, -1, -1); 
      } 
     } 
     catch (LocationException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }  
    } 
} 

class MyLocationListener implements LocationListener { 
public void locationUpdated(LocationProvider provider, Location location){ 
    if(location != null && location.isValid()){    
     QualifiedCoordinates qc = location.getQualifiedCoordinates(); 
     try { 
      LAT = location.getQualifiedCoordinates().getLatitude(); 
      System.out.println("=============================lattitude :: "+LAT); 
      LONG= location.getQualifiedCoordinates().getLongitude(); 
      System.out.println("==================================longitude ::"+LONG); 

     } 
     catch(Exception e){ 
      } 
    } 
} 

public void providerStateChanged(LocationProvider provider, int newState){ 
    if(newState == LocationProvider.TEMPORARILY_UNAVAILABLE){ 
      provider.reset(); 
      provider.setLocationListener(null, 0, 0, -1); 
     } 
    } 
} 
+0

我嘗試了相同的代碼,我嘗試了更早,現在它工作完美.. !!! 無論如何感謝您的幫助... – abin

0

和vijay一樣,你可以註冊到位置更新。

如果你仍然想使用您的解決方案,你必須確保 - 這是線程(而不是僅僅只是不要讓一個ANR,這是一個要求) - 你有一個黑莓SIM卡選項 - 至少在OS 5.0.0上運行