Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android - Unable to get the gps location on the emulator

i'm tring to use the gps on the android emulator, i've the following code:

public class NL extends Activity {

 private LocationManager locmgr = null;

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.nl);

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

        Criteria crit = new Criteria();
        crit.setAccuracy(Criteria.ACCURACY_FINE);
        String provider = locmgr.getBestProvider(crit, true);
        Location loc = locmgr.getLastKnownLocation(provider);


        Toast msg = Toast.makeText(this, "Lon: " + Double.toString(loc.getLongitude()) + " Lat: " + Double.toString(loc.getLatitude()), Toast.LENGTH_SHORT);
        msg.show();
    }
}

i've added the following line at the manifest:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

and i've set the gps location with the DDMS method and either with the geo fix method, but when i run the code, i get a NullPointerExeption at the Toast line, probably cause loc is null.

I don't understand where the error is... can you help me please?


UPDATE!

Thanks for your help, now i use the following code and i don't get any error, but it doesn't run the code inside onChangeLocation... it doesn't run the Toast and don't return any message in the log!

 public class NL extends Activity {

        private LocationManager locmgr = null;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.nl);

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

         // Define a listener that responds to location updates
            LocationListener locationListener = new LocationListener() {
                public void onLocationChanged(Location loc) {
                  // Called when a new location is found by the network location provider.
                    Log.i("NOTIFICATION","onLocationChenged Triggered");

                    Toast msg = Toast.makeText(NetworkLocator.this, "Lon: " + Double.toString(loc.getLongitude()) + " Lat: " + Double.toString(loc.getLatitude()), Toast.LENGTH_SHORT);
                    msg.show();
                }

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

                public void onProviderEnabled(String provider) {}

                public void onProviderDisabled(String provider) {}
              };

            // Register the listener with the Location Manager to receive location updates
            locmgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
        }
    }

Thanks!

like image 814
Marco Faion Avatar asked Jan 20 '11 09:01

Marco Faion


3 Answers

Emulator just doesn't have any location at the beginning. According to the doc, 'getLastKnownLocation' method can return null, so it is ok. In that case you should wait for location updates (you can user requestLocationUpdates method from LocationManager). You can trigger location update on emulator's gps module by following command:

adb -e emu geo fix 50 50
like image 118
Damian Kołakowski Avatar answered Oct 06 '22 08:10

Damian Kołakowski


FOUND THE SOLUTION:

LocationManager.NETWORK_PROVIDER is WRONG.

correction: LocationManager.GPS_PROVIDER

like image 40
Marco Faion Avatar answered Oct 06 '22 08:10

Marco Faion


if all you what you described is done than maybe you are not probably not ur gps is on in emulator.go to setting:->Location and Security:->and use gps satelites should be checked


edited:ithink you have to use location manager without criteria type.



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

loc=mlocManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

------than try to get long. and lat.

like image 25
chikka.anddev Avatar answered Oct 06 '22 10:10

chikka.anddev