Estado del GPS de Android me conduce nueces
Estoy haciendo una aplicación que utiliza el receptor GPS. La aplicación funcionará en todas las versiones desde 1.6. Tengo un icono de satélite en el que le digo a los usuarios el estado actual:
- Si el icono está rojo – gps inhabilitado
- Si el icono es naranja – gps está habilitado y tratando de arreglar los satélites
- Si el icono es verde – gps está fijo y funcionando bien.
Después de leer por aquí, he encontrado que algunos eventos para onLocationChanged desencadenar en la versión 1.6 pero no más tarde, por lo que teniendo el consejo que implementó un oyente GPS. Tengo un comportamiento muy extraño ya que el estado del icono se desbarata. Por ejemplo, habilitar GPS y se pone de color naranja … después de una reparación de obtener verde .. después de unos segundos se lee después de una segunda naranja y así sucesivamente …
- Cómo habilitar GPS en Eclipse Emulator para Android
- Ddms emulator control disabled
- Cómo corregir el movimiento suave del marcador en google maps v2?
- ¿Cómo puedo volver a mi actividad desde la ventana de configuración de GPS
- Cómo calcular la distancia de diferentes marcadores en un mapa y luego recoger el menos uno
Aquí está el código que uso. Por favor sugiera qué cambiar
public class TrackExecutionActivity extends Activity{ protected static final long GPS_UPDATE_TIME_INTERVAL=3000; //millis protected static final float GPS_UPDATE_DISTANCE_INTERVAL=0; //meters private LocationManager mlocManager; private MyGPSListener mGpsListener; private LocationListener mlocListener; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.trackexecution); imgGpsState = (ImageView)findViewById(R.id.imgGpsState); mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); mlocListener = new MyLocationListener(); mGpsListener = new MyGPSListener(); } private class MyGPSListener implements GpsStatus.Listener { public void onGpsStatusChanged(int event) { boolean isGPSFix = false; switch (event) { case GpsStatus.GPS_EVENT_SATELLITE_STATUS: if (mLastLocation != null) isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < GPS_UPDATE_TIME_INTERVAL * 2; if (isGPSFix) { // A fix has been acquired. imgGpsState.setImageDrawable(ctx.getResources().getDrawable(R.drawable.gps_on_green)); } else { // The fix has been lost. imgGpsState.setImageDrawable(ctx.getResources().getDrawable(R.drawable.gps_on_orange)); } break; case GpsStatus.GPS_EVENT_FIRST_FIX: imgGpsState.setImageDrawable(ctx.getResources().getDrawable(R.drawable.gps_on_green)); break; case GpsStatus.GPS_EVENT_STARTED: imgGpsState.setImageDrawable(ctx.getResources().getDrawable(R.drawable.gps_on_orange)); break; case GpsStatus.GPS_EVENT_STOPPED: imgGpsState.setImageDrawable(ctx.getResources().getDrawable(R.drawable.gps_on_red)); break; } } } public class MyLocationListener implements LocationListener { public void onLocationChanged(Location location) { if (location != null) { mLastLocationMillis = SystemClock.elapsedRealtime(); // do some things here mLastLocation = location; } public void onProviderDisabled(String provider) { imgGpsState.setImageDrawable(ctx.getResources().getDrawable(R.drawable.gps_on_red)); } public void onProviderEnabled(String provider) { imgGpsState.setImageDrawable(ctx.getResources().getDrawable(R.drawable.gps_on_orange)); } //this doesn't trigger on Android 2.x users say public void onStatusChanged(String provider, int status, Bundle extras) { } } } @Override protected void onResume() { if(mlocManager != null) { if (mGpsListener == null) { mGpsListener = new MyGPSListener(); } if (mlocListener == null) { mlocListener = new MyLocationListener(); } mlocManager.addGpsStatusListener(mGpsListener); mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, GPS_UPDATE_TIME_INTERVAL, GPS_UPDATE_DISTANCE_INTERVAL, mlocListener); } super.onResume(); } }
- Localización en tiempo real del dispositivo android desde otro dispositivo
- Problema al utilizar GPS_PROVIDER para la ubicación
- No hay actualizaciones de ubicación GPS en el Galaxy S3
- ¿Detectar la suplantación de ubicación en android?
- Android emulador geo arreglo no puede establecer la ubicación GPS
- android calcular exacta distancia gps. distancia entre
- Cómo obtener la ubicación actual en Android
- Problema de Android para averiguar la última corrección GPS reciente
cambia esto:
isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < GPS_UPDATE_TIME_INTERVAL * 2;
Estás estableciendo un booleano con valores no booleanos .. por lo tanto, el comportamiento de icono extraño durante los arreglos de gps que necesita para establecer que isGPSfix
boolean en alguna parte .. para el caso de hasGPSfix
o doesnothaveGPSfix
..
Podrías haber querido decir:
if ((SystemClock.elapsedRealtime() - mLastLocationMillis) < GPS_UPDATE_TIME_INTERVAL * 2) { isGPSFIX = true; }
- ¿Es posible usar Couch DB o MySql o cualquier otro DB en Android?
- ¿Hay una manera de ejecutar script SL4A desde un directorio en otro lugar?