0

I am trying to show current latitude and longitude on button click and set it in a textview,

I tried doing this and I saw many tutorials but the problem is when I click the button to show the coordinates nothing happens, and I don't know what I am missing

I implemented this service in build gradle:

  implementation 'com.google.android.gms:play-services-ads:19.4.0'

I added these permissions:

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

MainActivity code:

public class MainActivity extends Activity implements LocationListener {

Button getLocationBtn;
TextView locationText;

LocationManager locationManager;

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

    getLocationBtn = (Button)findViewById(R.id.button3);
    locationText = (TextView)findViewById(R.id.textView6);

    if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

        ActivityCompat.requestPermissions(MainActivity.this, new String[]{

            Manifest.permission.ACCESS_FINE_LOCATION
        }, 100);
    }

        getLocationBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getLocation();

         }
    }); 

}

    @SuppressLint("MissingPermission")
private void  getLocation(){

    try{
        locationManager = (LocationManager) getApplicationContext().getSystemService(LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000,5,MainActivity.this);

    }
    catch (Exception e){

        e.printStackTrace();
    }


} 



     @Override
public void onLocationChanged(Location location) {

     Toast.makeText(this, "hello" + location.getLatitude() + "," + location.getAltitude(), Toast.LENGTH_LONG).show();

     try{
         Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());
         List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getAltitude(),1 );
         String address = addresses.get(0).getAddressLine(0);

         locationText.setText(address);

     } catch (Exception e) {
         e.printStackTrace();

     }
  }
Hbk88
  • 39
  • 7

1 Answers1

0

You have to register a location Listener somewhere in your code. Without a listener your onLocationChanged() function will never be called.

See also the two top answers to this question: Android when exactly is onLocationChanged called

Dugnom
  • 342
  • 1
  • 5
  • 12