-1

我的应用程序使用 gps 位置,但是如果我留在建筑物内,每次请求都会失败(超时错误),但是如果我也留在建筑物中,当我从设备位置设置选项刷新位置时,位置会很好地刷新。

这是我的代码

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

请指教。

阿里

4

1 回答 1

3

当您将成本设置设置为false ( myCriteria.setCostAllowed(false);) 时,您将 GPS 模式设置为自主(下表取自基于位置的服务开发指南 - 标准映射属性

在此处输入图像描述

自主模式仅依赖 GPS 卫星(在此处查看有关 GPS 模式的更多信息)。

此模式使用 BlackBerry 设备上的 GPS 接收器来检索位置信息。此模式不能在室内或靠近许多物理障碍物的情况下使用,并且可能需要几分钟才能与四颗或更多卫星完全同步以进行第一次 GPS 定位。

这就是您的请求失败的原因。尝试使用其他 GPS 模式:辅助蜂窝站点


辅助模式

辅助模式依赖于无线网络上的 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);
于 2012-04-12T20:32:10.950 回答