Android - Невозможно получить местоположение GPS на эмуляторе - PullRequest
8 голосов
/ 20 января 2011

я пытаюсь использовать GPS на эмуляторе Android, у меня есть следующий код:

public class NL extends Activity {

 private LocationManager locmgr = null;

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

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

        Criteria crit = new Criteria();
        crit.setAccuracy(Criteria.ACCURACY_FINE);
        String provider = locmgr.getBestProvider(crit, true);
        Location loc = locmgr.getLastKnownLocation(provider);


        Toast msg = Toast.makeText(this, "Lon: " + Double.toString(loc.getLongitude()) + " Lat: " + Double.toString(loc.getLatitude()), Toast.LENGTH_SHORT);
        msg.show();
    }
}

я добавил следующую строку в манифест:

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

и я установил местоположение gps с помощью метода DDMS и любого с помощью метода geo fix, но когда я запускаю код, я получаю NullPointerExeption в строке Toast, вероятно, loc является нулем.

Я не понимаю, где ошибка ... Можете ли вы помочь мне, пожалуйста?


UPDATE!

Спасибо за вашу помощь, теперь я использую следующий код и не получаю никакой ошибки, но он не запускает код внутри onChangeLocation ... он не запускает Toast и не возвращает никакого сообщения в журнале!

 public class NL extends Activity {

        private LocationManager locmgr = null;

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

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

         // Define a listener that responds to location updates
            LocationListener locationListener = new LocationListener() {
                public void onLocationChanged(Location loc) {
                  // Called when a new location is found by the network location provider.
                    Log.i("NOTIFICATION","onLocationChenged Triggered");

                    Toast msg = Toast.makeText(NetworkLocator.this, "Lon: " + Double.toString(loc.getLongitude()) + " Lat: " + Double.toString(loc.getLatitude()), Toast.LENGTH_SHORT);
                    msg.show();
                }

                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
            locmgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
        }
    }

Спасибо!

Ответы [ 4 ]

9 голосов
/ 20 января 2011

Эмулятор просто не имеет места в начале. Согласно doc , метод 'getLastKnownLocation' может возвращать null , так что все в порядке. В этом случае вам следует дождаться обновления местоположения (вы можете использовать метод requestLocationUpdates из LocationManager). Вы можете запустить обновление местоположения на модуле gps эмулятора, выполнив следующую команду:

adb -e emu geo fix 50 50
7 голосов
/ 28 января 2011

НАЙТИ РЕШЕНИЕ:

LocationManager.NETWORK_PROVIDER НЕПРАВИЛЬНО.

исправление: LocationManager.GPS_PROVIDER

1 голос
/ 20 января 2011

, если все, что вы описали, сделано, чем, возможно, вы, вероятно, не уверены, что gps включен в emulator.go, чтобы установить: -> Местоположение и безопасность: -> и проверить использование спутников gps


отредактировано : вам нужно использовать диспетчер местоположений без типа критерия.



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

loc=mlocManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

------, чем пытаться получить долго. и лат.

0 голосов
/ 20 января 2011

Вы уверены, что ваше эмулированное устройство на самом деле поддерживает GPS? Я думаю, что была дополнительная опция для этого ...

Это тоже может помочь:

Спасибо! Для всех: Вы можете изменить цель сборки для своего проекта в любое время в Eclipse: щелкните правой кнопкой мыши проект в Package Explorer, выберите «Свойства»> «Android», а затем выберите «Google API» для Project Target. - Разработчики, работающие с неанглийскими настройками культуры, могут заметить, что нажатие кнопки «Отправить» в элементах управления местоположением не отправляет новое местоположение в эмулятор Android. Это исправлено в следующем выпуске 7 инструментов SDK; для быстрого исправления вы можете изменить свой язык на «en». (Подробнее см. Code.google.com/p/android/issues/detail?id=915.) - Патрик де Кляйн

источник: GPS на эмуляторе не получает географическую привязку - Android

...