Добавленные вручную обновления местоположений перестают работать в Eclipse - PullRequest
2 голосов
/ 02 октября 2009

Я работаю над приложением 1.5 для Android. Разработка в Eclipse 3.4.2 для Windows XP. У меня есть MapView, я запросил обновления и т. Д.

Проблема в том, что после первой введенной вручную GPS-координаты приложение перестает распознавать, что GPS-координаты отправлены.

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  
MapController mc = mapView.getController();

TextView locationText = (TextView) findViewById(R.id.LocationBar);

LocationListener locationListener = new MyLocationListener(mc, itemizedOverlay, locationText);

lm.requestLocationUpdates(
    LocationManager.GPS_PROVIDER, 
    0, 
    0, 
    locationListener);   

Затем MyLocationListener просто изменяет значение в TextView, чтобы соответствовать новой координате GPS.

public void onLocationChanged(Location loc) {
        if (loc == null) {
            return;
        }
        double lat = loc.getLatitude();
        double lng = loc.getLongitude();

        GeoPoint p = new GeoPoint(
            (int) (lat * 1E6), 
            (int) (lng * 1E6));

        mc.animateTo(p);

        itemizedOverlay.addOverlay(new OverlayItem(p, "title", "snippet"));

        String location = String.format("%f lat %f long", lat, lng);

        locationText.setText(location);

    }

Я добавил некоторые записи в методе onLocationChanged, и он только когда-либо видит местоположение во время первого времени, когда я пытаюсь отправить обновление. Все последующие не запускают метод onLocationChanged.

Дополнительная информация:

Вывод logcat выглядит следующим образом:

10-02 17:22:34.423: INFO/gps(6671): Provider gps is has status changed to 1. Extras: Bundle[mParcelledData.dataSize=52]

Поддельное первое обновление GPS:

10-02 17:22:49.383: INFO/gps(6671): Location provided by location provider: Location[mProvider=gps,mTime=-1000,mLatitude=25.0,mLongitude=23.0,mHasAltitude=true,mAltitude=0.0,mHasSpeed=false,mSpeed=0.0,mHasBearing=false,mBearing=0.0,mHasAccuracy=false,mAccuracy=0.0,mExtras=Bundle[mParcelledData.dataSize=52]]
10-02 17:22:49.444: INFO/gps(6671): Provider gps is has status changed to 2. Extras: Bundle[mParcelledData.dataSize=52]

Согласно http://developer.android.com/reference/android/location/LocationProvider.html#AVAILABLE, эти 2 отображаются на «Доступно».

Как только будет установлено «Доступно», никакие другие местоположения не будут пройдены. Кажется, немного нелогичным.

1 Ответ

2 голосов
/ 03 октября 2009

Я полагаю, вы столкнулись с ошибкой в ​​драйвере GPS эмулятора.

Обходной путь для версии 1.5 SDK от Google Issue Tracker # 39 .

В эмуляторе на главном экране нажмите

Меню -> Настройки -> Дата и время -> (Снять отметку) Автоматически -> Выбрать часовой пояс

и выберите правильный часовой пояс (т. Е. Ваш).

A fix включен в выпуск 1.6 # 43 SDK.

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