Android - Holen Sie sich GPS-Koordinaten und Lage

Ich versuche, eine Anwendung zu entwickeln, zu verfolgen, die GPS-Daten vom User. Wenn ich die Längen-und Breitengrad ich wollen, konvertieren Sie diese in ein Lage. (Das ist die Arbeit mit statischen Daten wie Sie sehen können in meinem code)

Mein problem ist, die Variablen aus Längen-und Breitengrad in das JSON-request - geocode/json?latlng=42.774955,18.955061",

Am Ende sollte es bleiben "...geocode/json?latlng"+lat+","+lng+...

Jedes mal, wenn ich das bekomme ich NULL Werte. Bitte helfen Sie mir.

public class MatchActivity extends AppCompatActivity {

private Button button;
private TextView textView;
private TextView textViewCity;
private LocationManager locationManager;
private LocationListener locationListener;
private RequestQueue requestQueue;
private double lat;
private double lng;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_match);

    button = (Button) findViewById(R.id.button_location);
    textView = (TextView) findViewById(R.id.textView_Coordinates);
    textViewCity = (TextView) findViewById(R.id.textCity);

    requestQueue = Volley.newRequestQueue(this);


    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationListener = new myLocationlistener();
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

        return;
    }
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);


    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Location location = new Location("");
            lng = location.getLongitude();
            lat = location.getLatitude();

            Log.e("Latitude", String.valueOf(lat));
            Log.e("Longitude", String.valueOf(lng));

            JsonObjectRequest request = new JsonObjectRequest("https://maps.googleapis.com/maps/api/geocode/json?latlng=42.774955,18.955061", new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    try {
                        String address = response.getJSONArray("results").getJSONObject(0).getString("formatted_address");
                        textViewCity.setText(address);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });
            requestQueue.add(request);
        }
    });

}

private class myLocationlistener implements LocationListener {
    @Override
    public void onLocationChanged(Location location) {
        if(location != null){
            lat = location.getLatitude();
            lng = location.getLongitude();
        }
    }

    @Override
    public void onStatusChanged(String s, int i, Bundle bundle) {

    }

    @Override
    public void onProviderEnabled(String s) {

    }

    @Override
    public void onProviderDisabled(String s) {

    }
}
  • Sie erstellen eine neue Location - Objekt und verwenden es werden die Koordinaten, anstatt die lat und lng Werte in den onLocationChanged(...) Rückruf.
  • Okay, aber ich bereits ein neues Location-Objekt Location location = new Location(""); @Titus
  • Ja, das ist das problem, sollten Sie die Werte, die gesetzt werden, wenn der Speicherort geändert wird.
  • Aber das wird nicht funktionieren, wenn ich es so lng = myLocationlistener(new myLocationlistener(lng));
  • Wenn sich die Lage ändert, werden die lng und lat Wert wird festgelegt, indem die onLocationChanged(...) Methode. In der onClick(...) Sie nicht benötigen, um diese Werte, Sie brauchen nur zu überprüfen, wenn Sie wurden bereits festgelegt.
  • Aber ich brauche die Länge und Breite für das JSON-request, um die tatsächliche Lage.
  • Ja, ich weiß, nehmen Sie einen Blick um zu sehen, wie LocationListener funktioniert und ich denke, Sie werden verstehen, was ich zu sagen versuche. Grundsätzlich sind die Instanz-Variablen lat und lng gesetzt werden, wenn der Speicherort geändert wird.
  • Jetzt seine Arbeit, ich danke Ihnen sehr! 🙂

InformationsquelleAutor Daniel | 2016-05-22
Schreibe einen Kommentar