2013-11-01 16 views
5

Hallo Ich entwickle Android-Anwendung, in der ich Benutzer aktuellen Standort wollen, die gut genug genau. So habe ich 2 Möglichkeiten, dieses zu implementierenBenutzer aktuellen Standort Android

Abrufen der aktuellen Position. http://developer.android.com/training/location/retrieve-current.html

und

Empfangsort Updateshttp://developer.android.com/training/location/receive-location-updates.html

So, hier ist mein Problem. Ich habe den aktuellen Standort abgerufen und merke, dass er am Ende den am besten bekannten Standort für den Benutzer angibt. Aber meine Anforderung ist der aktuelle Standort des Benutzers.

Also bewege ich mich zu den Empfangsstandort-Updates. Ich kann zwar das erste Update bekommen und ich werde die Updates stoppen. Aber auch hier gibt es mir erstmal den letzten Ort nicht neu. und nach dem ersten lesen gps starten, um sukzessive updates zu geben. Aber ich bin nur am ersten Update interessiert.

Also brauche ich eine gute Lösung, die mir den genauen Standort des Benutzers geben wird. Entweder mit Hilfe von GPS oder Netzwerk oder Wi-Fi, die verfügbar ist.

Wenn ich etwas falsch mache, bitte korrigieren. Brauche Hilfe. Danke.

Antwort

1

GPS listener solution Sie brauchen.

Zum Standort Listener hinzufügen, aber wählen Sie das GPS. Nur der public void onLocationChanged(Location loc) wird den aktuellen Standort haben.

+0

Vielen Dank Sir für den Vorschlag. Ich will durch deine Lösung. Aber was ich denke, wird es nicht so viel Flexibilität bieten. Ich meine APIs, die ich erwähne, kümmern sich auch um den Standortanbieter. Das heißt, wenn GPS nicht verfügbar ist, wird automatisch der Standort mit einem anderen Anbieter übernommen. Also werde ich diese Features vermissen. Definitiv werde ich Ihre Lösung ausprobieren. – nilkash

2

So bekomme ich den aktuellen Standort des Benutzers für meine Google Maps zu verwenden.

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(); 
     } 
Verwandte Themen