Я работаю над приложением 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 отображаются на «Доступно».
Как только будет установлено «Доступно», никакие другие местоположения не будут пройдены. Кажется, немного нелогичным.