Я работаю над HTC Legend и пытаюсь создать собственное приложение для регистрации gps.Все работает, как и ожидалось, за исключением того факта, что у меня разрыв в 30 минут на каждом треке.
Этот разрыв, когда я не получаю данные GPS, всегда составляет около 30-60 минут - так что после 30 минут активности,У меня нет данных GPS в течение 30 минут.И, ничего не делая (даже не перезапуская приложение), после 30-минутного перерыва оно снова начинает собирать данные.
У кого-нибудь есть объяснение этому?Это сводит меня с ума ...
Забыл упомянуть, что я собираю данные с помощью простого запроса requestLocationUpdates, но здесь нет проблем ...
РЕДАКТИРОВАТЬ: Пример кода по запросу:
private LocationListener ll = new LocationListener(){
@Override
public void onLocationChanged(Location loc) {
}
@Override
public void onProviderDisabled(String arg0) {
}
@Override
public void onProviderEnabled(String arg0) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
};
А вот соответствующий слушатель NMEA, потому что я буду обрабатывать необработанные данные GPS:
GpsStatus.NmeaListener nl = new GpsStatus.NmeaListener() {
@Override
public void onNmeaReceived(long timestamp, String nmea) {
/*
* Use patcher and matcher to find a proper GPRMC sentence and remove symbols at the end like \n, # etc.
*/
m = p.matcher(nmea);
Log.d(LocationLoggerApp.TAG, "Time for a break...");
//Notify activity that app is ready for upload
broadcastIntent.putExtra("LOG", "Got valid GPRMC sentence");
sendBroadcast(broadcastIntent);
}
};
И здесь у нас есть строка из функции onStart, в которой «загружается» вышеуказанный материал:
/*
* Request location updates as workaround because the function addNmeaListner DOES NOT enable GPS on the phone!
*/
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, interval*1000, 0, ll);
lm.addNmeaListener(nl);
С уважением, Мартин