2017-09-10 3 views
0

Als mein erstes Projekt versuche ich, eine kleine Wetter-App zu erstellen. Ich weiß, dass es viele Ressourcen gibt, aber hier scheint nichts für mich zu funktionieren. Also habe ich diesen Code, der den Lat + Long auf meinem Bildschirm erscheinen lässt, wenn ich auf einen Button klicke, aber ich finde nicht die richtige Erklärung, wie man einen Geocoder erstellt und die GPS-Koordinaten eingibt. Ich habe Ähnlichkeitsfragen hier und auch die Android-Seite über Geocoding gelesen, aber jedes Mal, wenn es scheint, fängt der Code an mir zu scheitern.Nicht sicher, wie man einen Geocoder hinzufügt

package fr.eni.android.geoweather; 

import android.Manifest; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Build; 
import android.provider.Settings; 
import android.support.annotation.NonNull; 
import android.support.annotation.RequiresApi; 
import android.support.v4.app.ActivityCompat; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageButton; 
import android.widget.TextView; 


public class MainActivity extends AppCompatActivity { 

    private ImageButton button; 
    private TextView textView; 
    private LocationManager locationManager; 
    private LocationListener locationListener; 


    @RequiresApi(api = Build.VERSION_CODES.M) 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     button = (ImageButton) findViewById(R.id.button); 
     textView = (TextView) findViewById(R.id.textView); 

     locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
     locationListener = new LocationListener() { 
      @Override 
      public void onLocationChanged(Location location) { 
       textView.append("\n " + location.getLatitude() + "" + location.getLongitude()); 
      } 


      @Override 
      public void onStatusChanged(String provider, int status, Bundle extras) { 

      } 

      @Override 
      public void onProviderEnabled(String provider) { 

      } 

      @Override 
      public void onProviderDisabled(String provider) { 
       Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
       startActivities(intent); 

      } 

      private void startActivities(Intent intent) { 
      } 
     }; 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      requestPermissions(new String[]{ 
        Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION, 
        Manifest.permission.INTERNET 
      }, 10); 
      return; 
     } else { 
      configureButton(); 
     } 

    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     switch (requestCode) { 
      case 10: 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) 
        configureButton(); 
       return; 
     } 
    } 

    private void configureButton() { 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       locationManager.requestLocationUpdates("gps", 500000, 30, locationListener); 

      } 
     }); 
    } 
} 

Antwort

0

überprüfen dies, wie Geocoder hinzufügen

Locale locale = new Locale("en", "us"); 
     Geocoder g = new Geocoder(mContext, locale); 

     List<Address> addresses1 = g.getFromLocation(yourlatitude, yourlongtiude); 
     assertNotNull(addresses1); 
     assertEquals(1, addresses1.size()); 

     Address addr = addresses1.get(0); 
     assertEquals("94305", addr.getFeatureName()); 
     assertEquals("Palo Alto, CA 94305", addr.getAddressLine(0)); 
     assertEquals("USA", addr.getAddressLine(1)); 
     assertEquals("94305", addr.getPostalCode()); 
     assertFalse(Math.abs(addr.getLatitude() - 37.4240385) > 0.1); 
Verwandte Themen