本地化:GPS不起作用

时间:2013-08-04 19:37:07

标签: android localization gps

我正在尝试获取设备的位置,因此我创建了类

public class MainActivity extends Activity implements LocationListener

和方法

private Location getLocation(Context ctx) {
    Location location = null;
    LocationManager lm = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    List<String> providers = lm.getProviders(true);

    for(int i=providers.size() - 1; i>=0; i--) {
        lm.requestLocationUpdates(providers.get(i), 100, 1, MainActivity.this);
        location = lm.getLastKnownLocation(providers.get(i));
        if(location != null) {
            Log.i("Used provider", providers.get(i));
            break;
        }
    }

    if(location != null) {
        Log.i("Latitude", String.valueOf(location.getLatitude()));
        Log.i("Longitude", String.valueOf(location.getLongitude()));
        Log.i("Accuracy", String.valueOf(location.getAccuracy())+" m");
    }

    return location;
}

它工作得很好但是它总是会跳过GPS,即使我在外面也是如此。我不得不说我将接口LocationListener中的所有重写方法都留空了,因为我不知道应该放在那里。 任何的想法?你觉得我用的代码还行吗?非常感谢你!

编辑: 感谢您的回复,但我的代码中肯定有问题。通过日志我可以看到设备正在使用哪个提供商:昨天它使用“被动”并且位置是完美的(26米精度),而今天它仍然使用“被动”,但精度是2288米,这是非常糟糕的!如果我尝试使用谷歌地图找到我的位置,那就完全没问题了。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我认为它从GSM / WiFi选择位置,因为它比GPS的位置更快,尝试禁用WiFi或禁用从WiFi / GSM获取位置,然后尝试定位。