0

I just need the Latitude, Longitude and Altitude for my program, this is my code, but it seems onLocationChanged is never called.

MainActivity.Java

    public class MainActivity extends AppCompatActivity implements LocationListener {
        protected LocationManager locationManager;
        protected LocationListener locationListener;
        protected Context context;
        double MyLong=0;
        double MyLati=0;

     @Override
     protected void onCreate(Bundle savedInstanceState) {


    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txtLat = (TextView) findViewById(R.id.textview1);

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { // coarse permission is granted
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                0, 0, this);

    }
    else { // permission is not granted, request for permission
        if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_COARSE_LOCATION)) { // show some info to user why you want this permission
            Toast.makeText(this, "Allow Location Permission to use this functionality.", Toast.LENGTH_SHORT).show();
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 123 /*LOCATION_PERMISSION_REQUEST_CODE*/);
        } else {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 123 /*LOCATION_PERMISSION_REQUEST_CODE*/);

        }
    }
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
            0, 0, this);
}


@Override
onLocationChanged(Location location){
    MyLong = location.getLongitude(); // this is Y in my map
    MyLati = location.getLatitude();  // this is X in my map

    txtLat = (TextView) findViewById(R.id.textview1);
    String msg = "Coordinates are: long:" + MyLong + " lati: "+MyLati;
    txtLat.setText(" "+msg+" ");

AndroidManifest

 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.example.staykov.sunlight">

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


<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

How do I get onChangeLocation to work ? What is wrong with this code ? I do get my initial string "Hello world" but it does not change to the string containing the Longitude and Latitude. If I have to guess I am doing something wrong in onCreate , but I don't know what.

Another thing is that "protected LocationListener locationListener;" is never used.

Cœur
  • 37,241
  • 25
  • 195
  • 267
Staykov
  • 19
  • 2
  • have you requested location permissions in run-time? – Atef Hares Mar 26 '17 at 20:53
  • I thought the code above locationManager.requestLocationUpdates was that – Staykov Mar 26 '17 at 21:03
  • No, it is not `requestLocationUpdates` but you seems you are requesting the permissions in run-time using `requestPermissions`. anyway, check this [answer](http://stackoverflow.com/a/43016257/5993410) and check if you are doing something wrong – Atef Hares Mar 26 '17 at 21:15

0 Answers0