6

Uso 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:MyLocationOverlay o LocationManager para actualizar la ubicación actual

  • puedo usar MyLocationOverlay trazar la ubicación actual y su ampliación para permitir el seguimiento de la ubicación de los usuarios en movimiento y para tener por encargo marcador. 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 agotamiento de la batería aquí.
  • Puedo usar el Administrador de ubicaciones y suscribirme usando requestLocationUpdates para obtener la ubicació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 método para utilizar Location Manager y MyLocationOverlay debería preferirse a esto.

Además, tenga en cuenta que mi aplicación es una aplicación basada en la ubicación en la que debe rastrearse la ubicación del usuario mientras se mueve.

Las personas pueden sugerir cuál es el mejor enfoque para implementar y tiene un impacto relativamente menor en la batería.

Ten en cuenta que soy un principiante en Android, así que perdona cualquier error obvio.

gracias de antemano, Andy

+0

¿Es obligatorio el proveedor de GPS?Quiero decir que quieres precisión, ¿verdad? – overbet13

+0

Sí, quiero precisión. El GPS tiene una prioridad menor que la ubicación de red. Pero aún mi pregunta se mantiene. – andy

+0

Bueno, no puede ser preciso y eficiente al mismo tiempo. Si necesita información de ubicación precisa, use la primera variante (propuesta por usted). – overbet13

Respuesta

2

I utilizando Poco esponjoso Ubicación - Su tiempo de una biblioteca, el establecimiento de actualizaciones o la distancia, esta biblioteca hacer un receptor de radiodifusión, implementa LocationListener, n notificar a su aplicación cuando los cambios de ubicación .

¡Simple, rápido, fácil!

Consulte this enlace:

Después cambió de ubicación, actualice su superposición en el mapa! =)

si necesita, envío mi solución completa para las ubicaciones.

+1

amigo, ¿puedo decirme cómo puedo usar esta biblioteca? –

1

Usando Poco esponjoso Ubicación 1º:

en el 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 de aplicación se extiende

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 radiodifusió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 uso:

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; 
    } 
} 

necesito más? Please refer this

¡Trabaja para mí!

+0

Estoy agregando esto a mi código, pero nunca se llama al receptor de difusión. No veo en su código anterior en ninguna parte que haga referencia al BroadcastReceiver 'Broadcast'. ¿Dónde está ese conjunto? – Darren

Cuestiones relacionadas