Android MapActivity не может получить данные о местоположении - PullRequest
0 голосов
/ 25 сентября 2011

Я следовал учебному пособию HelloMapView для Android и добавил некоторый код для захвата информации о моем текущем местоположении и отображения в текстовом представлении.

Я проверил этот код в другой программе, и он сработал, он может отображать мои данные по долготе и широте при запуске этого приложения.Однако, когда я скопировал код в MapActivity, кажется, что я не могу получить данные о местоположении.

Вот часть кода:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);
        mapOverlays = mapView.getOverlays();
        drawable = this.getResources().getDrawable(R.drawable.androidmarker);
        itemizedOverlay = new HelloItemizedOverlay(drawable, this);
        Button button1 = (Button)this.findViewById(R.id.button1);
        tv1 = (TextView) this.findViewById(R.id.textView1);
        button1.setOnClickListener(mScan);
        latitude = 1.3831625;
        longitude = 103.7727321;


        LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
        Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        if (location == null)
            location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        if (location != null) {
            if (System.currentTimeMillis() - location.getTime() < 3000)
            {
                longitude = location.getLongitude();
                latitude = location.getLatitude();

                tv1.setText(Double.toString(longitude));

            }
        }
        lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 2000, 10, locationListener);

    }

    private final LocationListener locationListener = new LocationListener() {
        public void onLocationChanged(Location location) {
            longitude = location.getLongitude();
            latitude = location.getLatitude();

            tv1.setText(Double.toString(latitude));
        }

        @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

        }
    };   

1 Ответ

0 голосов
/ 25 сентября 2011

Вы добавили правильные разрешения в Manifest?Вот так

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

Также, пожалуйста, проверьте, включен ли ваш gps или работает ли он.

...