我的应用程序使用gps位置,但每次如果我留在建筑物内部请求失败(超时错误)但是当我从设备位置设置选项中刷新位置时,如果我也留在建筑物中,则位置会刷新。< / p>
这是我的代码
Criteria myCriteria = new Criteria();
myCriteria.setCostAllowed(false);
LocationProvider myLocationProvider = LocationProvider.getInstance(myCriteria);
Location myLocation = myLocationProvider.getLocation(((int)timeOutInMiliseconds/1000));
lastLatitude = myLocation.getQualifiedCoordinates().getLatitude();
lastLongitude = myLocation.getQualifiedCoordinates().getLongitude();
lastAltitude = myLocation.getQualifiedCoordinates().getAltitude();
lastAccuracy = myLocation.getQualifiedCoordinates().getHorizontalAccuracy();
lastSpeed = myLocation.getSpeed();
请告知。
阿里
答案 0 :(得分:3)
将费用设置设为 false (myCriteria.setCostAllowed(false);
)后,您将GPS模式设置为自主(下表取自{{ 3}}
自主模式仅依赖于GPS卫星(请参阅有关GPS模式的更多信息Location based services development guide - Criteria mapping properties)。
此模式使用BlackBerry设备上的GPS接收器检索位置信息。此模式不能在室内或靠近许多物理障碍物使用,并且可能需要几分钟才能与四颗或更多卫星完全同步以进行第一次GPS定位。
这就是您的请求失败的原因。尝试使用其他GPS模式:辅助或 cellsite 。
辅助模式依赖于无线网络上的GPS卫星和服务器。此模式使用无线网络检索卫星信息。此模式可以快速检索第一个GPS定位。
对于辅助模式,请使用此片段(值得注意的是,有几种辅助模式):
Criteria myCriteria = new Criteria();
myCriteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_MEDIUM);
myCriteria.setHorizontalAccuracy(100);
myCriteria.setVerticalAccuracy(100);
myCriteria.setCostAllowed(true);
Cellsite模式依赖于地理定位服务或无线网络来提供当前基站的位置信息。此模式使用无线网络实现第一次GPS定位,通常被认为是最快的模式。此模式不提供BlackBerry设备跟踪信息,如速度和方位。
对于cellsite模式,请使用以下代码段:
Criteria myCriteria = new Criteria();
myCriteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_LOW);
myCriteria.setHorizontalAccuracy(Criteria.NO_REQUIREMENT);
myCriteria.setVerticalAccuracy(Criteria.NO_REQUIREMENT);
myCriteria.setCostAllowed(true);