Я разработал приложение, использующее текущее местоположение каждые 30 секунд. Приложение завершено. Он отлично работает на устройствах ICS (Android 4), JellyBean (Android 4.1), но когда я запускаю приложение на Android 2.3 или Android 2.2, обновления GPS приложений каждые 2/3 секунды позже и постоянно обновляются. Хотя мой код выполняется в течение 30 секунд, и он отлично работает (30 секунд спустя) в Android 4,4.1, но не работает с Android 2.3 или 2.2.Обновления местоположения GPS постоянно в Android 2.2 и Android 2.3
Я делюсь код ....
public class GPSManager
{
//private static final int gpsMinTime = 60000;
//private static final int gpsMinDistance = 0;
private long gpsMinTime = 0;
private float gpsMinDistance = 0;
private static LocationManager locationManager = null;
private static LocationListener locationListener = null;
private static GPSCallback gpsCallback = null;
public GPSManager(long gpsMinTime,float gpsMinDistance)
{
this.gpsMinTime = gpsMinTime;
this.gpsMinDistance = gpsMinDistance;
GPSManager.locationListener = new LocationListener()
{
@Override
public void onLocationChanged(final Location location)
{
if (GPSManager.gpsCallback != null)
{
GPSManager.gpsCallback.onGPSUpdate(location);
}
}
@Override
public void onProviderDisabled(final String provider)
{
}
@Override
public void onProviderEnabled(final String provider)
{
}
@Override
public void onStatusChanged(final String provider, final int status, final Bundle extras)
{
}
};
}
public GPSCallback getGPSCallback()
{
return GPSManager.gpsCallback;
}
public void setGPSCallback(final GPSCallback gpsCallback)
{
GPSManager.gpsCallback = gpsCallback;
}
public void startListening(final Context context)
{
if (GPSManager.locationManager == null)
{
GPSManager.locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
}
final Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_MEDIUM); // accuracy_midium
criteria.setSpeedRequired(true);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(true);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
final String bestProvider = GPSManager.locationManager.getBestProvider(criteria, true);
if (bestProvider != null && bestProvider.length() > 0)
{
GPSManager.locationManager.requestLocationUpdates(bestProvider, this.gpsMinTime,
this.gpsMinDistance, GPSManager.locationListener);
}
else
{
final List<String> providers = GPSManager.locationManager.getProviders(true);
for (final String provider : providers)
{
GPSManager.locationManager.requestLocationUpdates(provider, this.gpsMinTime,
this.gpsMinDistance, GPSManager.locationListener);
}
}
}
public void stopListening()
{
try
{
if (GPSManager.locationManager != null && GPSManager.locationListener != null)
{
GPSManager.locationManager.removeUpdates(GPSManager.locationListener);
}
GPSManager.locationManager = null;
}
catch (final Exception ex)
{
}
}
}
И мой Расположение код обновления здесь:
private static final long GPS_MINTIME = 30000;
private static final float GPS_MINDISTANCE = 100;
gpsManager = new GPSManager(GPS_MINTIME,GPS_MINDISTANCE);
gpsManager.startListening(getApplicationContext());
gpsManager.setGPSCallback(this);
Любая идея, почему это происходит. Благодарю.
Я нашел то же самое на своем телефоне. Когда это было на 2.3, minUpdateTime, казалось, игнорировалось, после того как ОС была обновлена до ICS, он выполнил контракт. – NickT
Вы уверены, что вы устанавливаете минимальное время на '30Secs', я вижу, что вы установили' 0' в свой текущий код – VenomVendor
Странно! Мое приложение под управлением ОС 2.3/2.2 мигает/мерцает каждые 2/3 секунды позже, чтобы обновить текущее местоположение GPS. Удивление! – arefin