geLocations()始终返回null

时间:2011-05-02 12:51:37

标签: android location locationmanager

我从GPS或网络获取位置。问题是我已经在htc欲望高清上测试了它并且它工作得非常好,但是现在我开始在三星星系位置的其他设备上进行测试总是无效。

以下是我获取位置的代码

  locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    currentLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    if( currentLocation == null){
    currentLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    }

提前致谢

2 个答案:

答案 0 :(得分:0)

您是否有任何GPS工作示例?我认为如果应用程序已经设置了位置监听器,并且等待第一个位置到达,则某些电话将仅向应用程序提供最后已知位置。你的代码不会这样做。

public class YourActivity extends Activity implements LocationListener {
    private LocationManager lm;
    @Override public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        startLocating();
    }
    private void startLocating(){
        lm.requestLocationUpdates("gps", 0, 10, this);  
    }
    @Override
    public void onLocationChanged(Location arg0) {
        lm.removeUpdates(this);
        /*
         * put your code here
         */
    }
    @Override public void onProviderDisabled(String arg0) {}
    @Override public void onProviderEnabled(String provider) {}
    @Override public void onStatusChanged(String provider, int status, Bundle extras) {}

}

答案 1 :(得分:0)

您需要注册一个侦听器以进行位置更改。添加如下内容:

 LocationListener locationListener = new LocationListener() {
            public void onLocationChanged(Location location) {
                if (location != null) {
                    doSomethingWithLocation();
                }
            }

            public void onProviderDisabled(String provider) {
            }

            public void onProviderEnabled(String provider) {
            }

            public void onStatusChanged(String provider, int status, Bundle extras) {
            }
        };
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener);

请确保在请求位置更新时添加正确的等待时间。使用零而不是1000,系统将没有足够的时间来获取新位置。

运行上面的代码后调用getLastKnownLocation()应该会删除你的null问题。