MyLocationOverlay o LocationManager para actualizar la ubicación actual
Estoy utilizando MapView para mostrar la ubicación actual de un usuario en un mapa. Para actualizar la ubicación mientras el usuario está en movimiento, tengo que elegir:
- Puedo usar MyLocationOverlay para dibujar la ubicación actual y extenderla para permitir el seguimiento de la ubicación de los usuarios en movimiento y tener un marcador personalizado. El problema con MyLocationOverlay es que no puedo controlar la frecuencia con la que el dispositivo solicita la ubicación desde el GPS. Estoy preocupado por el drenaje de la batería aquí.
- Puedo usar el administrador de la localización y suscribir usando requestLocationUpdates para conseguir la localización del GPS. Aquí tengo más control sobre la frecuencia con la que se consulta el GPS. Puedo conectar un LocationListener y escribir el código allí.
Pero he leído aquí en SO que podría no ser un buen enfoque para utilizar el Administrador de Ubicaciones y MyLocationOverlay debe ser preferido sobre esto.
- Fragmento de mapas de Google para Android en RecyclerView.ViewHolder
- Android - Google Map en + -180 de longitud y 90 de latitud
- Cómo tomar instantáneas de Google Maps sin mostrar realmente el mapa
- Establecer GoogleMapOptions para la subclase MapFragment
- Cómo dibujar polígono mano libre en Google mapa V2 en Android?
Además, considere que mi aplicación es una aplicación basada en ubicación la ubicación del usuario debe ser rastreado a medida que se mueve.
¿Puede la gente sugerir cuál es el mejor enfoque para implementar y tiene relativamente menos impacto en la batería.
Tenga en cuenta que soy un principiante en Android, por lo que perdón cualquier error obvio.
Gracias de antemano, andy
- Marcadores de mapa con texto en Google Maps Android API v2
- Uso del Espresso a la prueba unitaria Google Maps
- Android PlacePicker se cierra 2 segundos después del lanzamiento
- ArrayIndexOutOfBounds en el dibujo de la polilínea de Android
- Cómo utilizar el método en AsyncTask en android?
- Java.io.IOException: falló grpc
- Límite de la API de Google Orientaciones
- Google Maps JS API Windows Phone Córdoba
Uso de Little Fluffy Location – Es una biblioteca, estableces tiempo para actualizaciones o distancia, esta biblioteca hace un receptor de difusión, implementa LocationListener, n notifica tu aplicación cuando cambia la ubicación.
¡Simple, rápido, fácil!
Por favor, consulte este enlace:
¡Después de cambiar la ubicación, actualice su superposición en el mapa! =)
Si usted necesita, envío mi solución completa para las localizaciones.
Usando Pequeño Suelo Ubicación 1º:
En Manifiesto:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-feature android:name="android.hardware.location" android:required="true" /> <uses-feature android:name="android.hardware.location.gps" android:required="false" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <Application...> <service android:name="com.littlefluffytoys.littlefluffylocationlibrary.LocationBroadcastService" /> <receiver android:name="com.littlefluffytoys.littlefluffylocationlibrary.StartupBroadcastReceiver" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> <receiver android:name="com.littlefluffytoys.littlefluffylocationlibrary.PassiveLocationChangedReceiver" android:exported="true" />
2º Crear clase para extender la aplicación
public class YourApplication extends Application { public void onCreate(){ super.onCreate(); LocationLibrary.showDebugOutput(true); LocationLibrary.initialiseLibrary(getBaseContext(), 0, 2 * 60 * 1000, "com.yourpackage.broadcastpackage"); } public static Context getAppContext() { return ApplicationVexPromoter.context; } }
3º Crear receptor de difusión
public class Broadcast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { final LocationInfo locationInfo = (LocationInfo) intent.getSerializableExtra(LocationLibraryConstants.LOCATION_BROADCAST_EXTRA_LOCATIONINFO); } }
Y use:
En su actividad:
public class YourActivity extends Activity { LocationInfo info; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.id.yourview); info = new LocationInfo(getBaseContext()); double latitude = info.lastLat; double longitude = info.lastLong; } }
¿Necesitar más? Por favor refiérase a esto
¡Funciona para mi!
- Diferentes tamaños en 2 dispositivos, incluso si utilizo "dp"
- Android usando MSGPack Core y Jackson Mapper – clase de decodificación variable de tipo desconocido