我必須加載當前設備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。
我希望能找到一些幫助,謝謝!
你是通過模擬器還是實際設備運行它?這聽起來可能很愚蠢......但是如果你正在使用一個設備......你是否已經走出去讓它獲得一個好的GPS信號? – RyanInBinary 2012-08-10 13:47:33
您是否在Android清單中添加權限? <使用權限android:name =「android.permission.ACCESS_COARSE_LOCATION」/> <使用權限android:name =「android.permission.ACCESS_FINE_LOCATION」> – 2012-08-10 13:50:54
是的,我添加了權限,是的,我試着走出去獲取GPS信號 – TheModularMind 2012-08-10 13:56:05