如何在没有侦听器或requestLocationUpdates的情况下获取任何gps坐标

时间:2011-10-15 17:13:58

标签: android gps

我只需要任何提供商的最后一个已知gps位置 没有告诉任何提供商更新。

这是否可以在不添加侦听器或requestLocationUpdates的情况下实现?

事情是我只需要一个没有阻塞延迟的近似位置

我是从Activity onCreate尝试此代码,但providers.size()始终为零

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  
List<String> providers = lm.getProviders(true);

    Location l = null;

    for (int i=providers.size()-1; i>=0; i--) {
       l = lm.getLastKnownLocation(providers.get(i));
       if (l != null) 
        break;
    }

 <uses-permission android:name="android.permission.ACCESS_GPS" /> 
    <uses-permission android:name="android.permisssion.ACCESS_FINE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permisssion.ACCESS_COARSE_LOCATION"></uses-permission> 

2 个答案:

答案 0 :(得分:2)

即使您可以从位置管理器获取最后一个已知位置,但它可能已过时,因此最好让所有提供商列出并检查最新位置以便更准确

LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        List<String> providers = manager.getAllProviders();
        Location loc;

        for (int i = 0; i < providers.size(); i++) {

            loc = manager.getLastKnownLocation(providers.get(i));
            loc.getTime();
            /*
             * put your code here
             * compare loc from providers to get the most 
             * recent location
             */
        }
}

答案 1 :(得分:1)

试试this代码段。