Android 如何在MapActivity启动时通过GPS或WiFi获取当前位置

Android 如何在MapActivity启动时通过GPS或WiFi获取当前位置,android,geolocation,gps,location,Android,Geolocation,Gps,Location,当MapActivity启动时,我必须加载当前设备位置(它以从另一个活动启动的意图启动)。 问题是,环顾网络,在android开发者部分,我看到我必须使用LocationListener方法onLocationChange(location),但我必须在MapActivity启动时获取用户位置,而不是在用户更改位置时。我试过几种方法,但没有找到解决办法 public class MappaActivity extends MapActivity { MapView miaMapView; Ma

当MapActivity启动时,我必须加载当前设备位置(它以从另一个活动启动的意图启动)。
问题是,环顾网络,在android开发者部分,我看到我必须使用LocationListener方法onLocationChange(location),但我必须在MapActivity启动时获取用户位置,而不是在用户更改位置时。我试过几种方法,但没有找到解决办法

public class MappaActivity extends MapActivity {

MapView miaMapView;
MapController mc;
LocationManager lm;
GeoPoint actualP;
LocationListener locationListener;

@Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_mappa_activity);

    miaMapView=(MapView)findViewById(R.id.miaMapView);
    mc=miaMapView.getController();
    miaMapView.setBuiltInZoomControls(true);
    miaMapView.setSatellite(true);
    miaMapView.invalidate();

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

    locationListener=new MyLocationListener();

    lm.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, locationListener);


//  This is MyLocationListener inner class:



private class MyLocationListener implements LocationListener{

    @Override
    public void onLocationChanged(Location location) {
        if(location!=null){

            actualP = new
                    GeoPoint(
                    (int) (location.getLatitude() * 1E6), (int) (location.getLongitude() * 1E6));

            mc.animateTo(actualP);
            mc.setZoom(10);
        }

    }

    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }

}

}
actualP保持null,直到用户位置更改后才会激发onLocationChanged方法

我还尝试了locationManager.getLastKnowLocation(location.GPS\u PROVIDER),但它返回null


我希望能找到一些帮助,谢谢

您的GPS\U提供商可能无法获取位置

当您的GPS_提供商无法提供您的位置时,如果您还使用网络_提供商和被动_提供商获取位置,效果会更好

还可以使用lm.RequestLocationUpdate(LocationManager.NETWORK_提供程序,0,0,locationListener)


和lm.RequestLocationUpdate(LocationManager.PASSIVE_PROVIDER,0,0,locationListener);可能它们没有GPS提供程序精确。

您是通过模拟器还是实际设备运行此功能?这听起来可能很傻。。。但是如果你正在使用一个设备。。。你有没有出去让它获得一个好的GPS信号?你有没有在android清单中添加权限?是的,我添加了许可,是的,我试着出去获取GPS信号