2013-11-01 18 views
5

Ciao Sto sviluppando un'applicazione Android in cui voglio utenti posizione corrente che abbastanza buono preciso. Quindi ho 2 opzioni per implementare questoOttieni utente attuale Posizione android

Recupero della posizione corrente. http://developer.android.com/training/location/retrieve-current.html

e

Ricevere Luogo Aggiornamentihttp://developer.android.com/training/location/receive-location-updates.html

Così qui è il mio problema. Sono passato attraverso il recupero della posizione attuale e mi sono reso conto che alla fine mi ha dato l'ultima posizione più nota degli utenti. Ma il mio requisito è la posizione attuale degli utenti.

Così mi muovo verso gli aggiornamenti di posizione di ricezione. Anche se posso ottenere il primo aggiornamento e interromperò gli aggiornamenti. Ma anche qui a prima vista mi dà l'ultima posizione, non nuova. e dopo averlo letto, avvia gps per dare aggiornamenti successivi. Ma sono interessato solo al primo aggiornamento.

Quindi ho bisogno di una buona soluzione che mi fornisca l'esatta posizione attuale degli utenti. O utilizzando gps o rete o wifi qualunque sia disponibile.

Se si sta facendo qualcosa di sbagliato, si prega di correggere. Ho bisogno di aiuto. grazie.

risposta

1

GPS listener solution necessario.

Aggiungi all'emittente di posizione, ma scegli il GPS. Solo il public void onLocationChanged(Location loc) avrà la posizione corrente.

+0

Grazie signore per il suggerimento. Voglio attraverso la tua soluzione. Ma quello che sento non fornirà molta flessibilità. Intendo API che menziono anche a chi si occupa di localizzazione. Ciò significa che se gps non è disponibile, automaticamente prende posizione utilizzando un altro provider. Quindi mi mancheranno queste caratteristiche. Sicuramente proverò la tua soluzione. – nilkash

2

Ecco come ottengo la posizione corrente degli utenti da utilizzare per le mie mappe Google.

if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
      mMap.setMyLocationEnabled(true); 
      Criteria criteria = new Criteria(); 
      LocationManager locationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE); 
      String provider = locationManager.getBestProvider(criteria, false); 
      Location location = locationManager.getLastKnownLocation(provider); 
      double lat = location.getLatitude(); 
      double lng = location.getLongitude(); 
      LatLng coordinate = new LatLng(lat, lng); 
      CameraUpdate yourLocation = CameraUpdateFactory.newLatLngZoom(coordinate, 13); 
      mMap.animateCamera(yourLocation); 

     } else { 
      final AlertDialog alertDialogGPS = new AlertDialog.Builder(getActivity()).create(); 

      alertDialogGPS.setTitle("Info"); 
      alertDialogGPS.setMessage("Looks like you have not given GPS permissions. Please give GPS permissions and return back to the app."); 
      alertDialogGPS.setIcon(android.R.drawable.ic_dialog_alert); 
      alertDialogGPS.setButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 

        Intent intentSettings = new Intent(Settings.ACTION_APPLICATION_SETTINGS); 
        startActivity(intentSettings); 
        alertDialogGPS.dismiss(); 
       } 

      }); 

      alertDialogGPS.show(); 
     } 
Problemi correlati