Найти мое местоположение не работает (Android 2.2) - PullRequest
0 голосов
/ 13 декабря 2011

Я пытался реализовать код, найденный по этой ссылке поиск местоположения

Правда в том, что я хочу получить свое местоположение с помощью сети или GPS (я проверял его в сети)

private Location getCurrentLocation(){
// Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
      // Called when a new location is found by the network location provider.

        mLatitude = location.getLatitude();
        mLongitude =  location.getLongitude();
        myGeoPoint = GeoTools.makeGeoPoint(mLatitude, mLongitude);
        mapController.animateTo(myGeoPoint);

    }

    public void onStatusChanged(String provider, int status, Bundle extras) {}

    public void onProviderEnabled(String provider) {}

    public void onProviderDisabled(String provider) {}
  };

// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
String locationProvider = LocationManager.NETWORK_PROVIDER;
// Or use LocationManager.GPS_PROVIDER

Location lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);
if(lastKnownLocation==null){
     locationProvider = LocationManager.GPS_PROVIDER;
    // Or use LocationManager.GPS_PROVIDER

     lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);    
}

return lastKnownLocation;

}

Как вернуть результат:

myLocation = getCurrentLocation();
        if(myLocation != null)
        {
        mLatitude = myLocation.getLatitude();
        mLongitude =  myLocation.getLongitude();
        myGeoPoint = GeoTools.makeGeoPoint(mLatitude, mLongitude);
        mapController.animateTo(myGeoPoint);

        }else {         
            mLatitude =  36.859502;
            mLongitude = 10.168097;
            myGeoPoint = GeoTools.makeGeoPoint(mLatitude, mLongitude);
            mapController.animateTo(myGeoPoint);}

Это был не единственный код, который я пробовал, и я не нашел никакого результата на телефоне Android 2.2.

Любая идея о том, как я могу это исправить

Я проверяю большинство учебников в сети !!

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

Сначала проверьте, добавили ли вы следующие разрешения или нет.

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

Во-вторых, вам нужно дать время, чтобы найти информацию о местоположении. Это можно сделать с помощью задачи таймера или posDelayed.

private Location getCurrentLocation(){
// Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
      // Called when a new location is found by the network location provider.
        t.cancel();
        mLatitude = location.getLatitude();
        mLongitude =  location.getLongitude();
        myGeoPoint = GeoTools.makeGeoPoint(mLatitude, mLongitude);
        mapController.animateTo(myGeoPoint);

    }

    public void onStatusChanged(String provider, int status, Bundle extras) {}

    public void onProviderEnabled(String provider) {}

    public void onProviderDisabled(String provider) {}
  };

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
Location lastKnownLocation;
Timer t = new Timer();

    t.schedule(new TimerTask() {
                @Override
                public void run() {
                           this.cancel();
                           lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);
                           if(lastKnownLocation==null){
                                     locationProvider = LocationManager.GPS_PROVIDER;
                                     // Or use LocationManager.GPS_PROVIDER

                             lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);   
                             return lastKnownLocation;


             }

    },30000);

}

он даст вам результаты через 30 секунд.

0 голосов
/ 16 декабря 2011

После долгих исследований я нашел свой pleasur Здесь :)

Надеюсь, это кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...