黑莓手机基站GPS追踪问题



在我的BB应用程序中,我尝试使用蜂窝站点获取位置。

但是它总是抛出一个Location异常:

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工作良好,我会得到设备的正确位置。

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);
        }
    }
}

和vijay一样,你可以注册位置更新。

如果你还想使用你的解决方案,你必须确保-它是线程(不只是不得到ANR,这是一个要求)-你有一张带有黑莓选项的SIM卡-至少运行OS 5.0.0

最新更新