2012-08-10 103 views
0

我必須加載當前設備MapActivity啓動時的位置(以從另一個Activity啓動的Intent開始)。
問題是,環顧網絡和android開發人員部分我看到我必須使用LocationListener方法onLocationChange(location),但我必須在MapActivity啓動時獲取用戶位置,而不是在用戶更改他位置。我嘗試過很多方法,但我找不到解決方案。如何在MapActivity啓動時通過GPS或WiFi獲取當前位置

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保持爲空,將不會觸發onLocationChanged方法,直到用戶位置有所改變。

我也嘗試了locationManager.getLastKnowLocation(location.GPS_PROVIDER),但它返回null。

我希望能找到一些幫助,謝謝!

+0

你是通過模擬器還是實際設備運行它?這聽起來可能很愚蠢......但是如果你正在使用一個設備......你是否已經走出去讓它獲得一個好的GPS信號? – RyanInBinary 2012-08-10 13:47:33

+0

您是否在Android清單中添加權限? <使用權限android:name =「android.permission.ACCESS_COARSE_LOCATION」/> <使用權限android:name =「android.permission.ACCESS_FINE_LOCATION」> – 2012-08-10 13:50:54

+0

是的,我添加了權限,是的,我試着走出去獲取GPS信號 – TheModularMind 2012-08-10 13:56:05

回答

0

這可能是可能是您的GPS_PROVIDER無法獲取位置

這將是更好,如果你也使用NETWORK_PROVIDER和PASSIVE_PROVIDER用於獲取位置,當你GPS_PROVIDER無法給你的位置

也使用lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0,locationListener);

and lm.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER,0,0,locationListener);可能它們並不像GPS_PROVIDER那麼精確。

相關問題