6

Sto utilizzando MapView per mostrare la posizione corrente di un utente su una mappa. Per aggiornare la posizione mentre l'utente è in movimento, devo una scelta:MyLocationOverlay o LocationManager per l'aggiornamento della posizione corrente

  • posso usare MyLocationOverlay per disegnare la posizione corrente ed estenderlo per consentire il monitoraggio della posizione degli utenti in movimento e di avere personalizzato pennarello. Il problema con MyLocationOverlay è che non riesco a controllare la frequenza con cui il dispositivo richiede la posizione dal GPS. Sono preoccupato per il consumo della batteria qui.
  • Posso usare Location Manager e iscrivermi utilizzando requestLocationUpdates per ottenere la posizione dal GPS. Qui ho più controllo sulla frequenza con cui viene interrogato il GPS. Posso collegare un LocationListener e scrivere il codice lì.

Ma ho letto qui in modo che possa non essere un buon approccio per utilizzare Location Manager e MyLocationOverlay dovrebbe essere preferito sopra a questo.

Inoltre, considera che la mia app è un'app basata sulla posizione e che la posizione dell'utente deve essere monitorata mentre si sposta.

Le persone possono suggerire quale sia l'approccio migliore da implementare e ha un impatto relativamente minore sulla batteria.

Nota che sono un principiante in Android, quindi scusami per qualsiasi errore evidente.

Grazie in anticipo, Andy

+0

Il fornitore di servizi GPS è obbligatorio?Voglio dire che vuoi precisione, vero? – overbet13

+0

Sì, voglio precisione. Il GPS ha una priorità inferiore rispetto alla posizione di rete. Ma la mia domanda rimane ferma. – andy

+0

Bene, non puoi essere preciso ed efficiente allo stesso tempo. Se hai bisogno di informazioni precise sulla posizione, usa la prima variante (proposta da te). – overbet13

risposta

2

I utilizzando poco Fluffy Località - Il suo tempo di una libreria, è l'impostazione per gli aggiornamenti o la distanza, questa biblioteca rendono un ricevitore broadcast, implementa LocationListener, n notificare l'applicazione quando localizzazione modifiche .

Semplice, veloce, facile!

prega di fare riferimento this link:

Dopo posizione cambiato, aggiornare il proprio overlay sulla mappa! =)

se è necessario, inviare la mia soluzione completa per le posizioni.

+1

amico posso dirmi come posso usare questa libreria? –

1

Utilizzando Poco Fluffy Località 1º:

nel manifesto:

<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º Crea classe estende Application

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º Crea ricevitore trasmissione

public class Broadcast extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     final LocationInfo locationInfo = (LocationInfo) intent.getSerializableExtra(LocationLibraryConstants.LOCATION_BROADCAST_EXTRA_LOCATIONINFO); 

    } 
} 

E Uso:

nella vostra attività:

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

bisogno di più? Please refer this

Funziona per me!

+0

Sto aggiungendo questo al mio codice, ma il destinatario della trasmissione non viene mai chiamato. Non vedo più nel tuo codice qui sopra che si riferisca al BroadcastReceiver 'Broadcast'. Dov'è quel set? – Darren

Problemi correlati