0

I need to get the current location, saved these to a Bundle and forward them to a BroadCastReceiver, which will trigger every 5th second. This is how I structured my code

public class GPSServiceActivity extends Activity {

public Bundle locationBundle;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    locationBundle = new Bundle();
    Calendar cal = Calendar.getInstance();

    getCurrentLocation();

    Intent intent = new Intent(GPSServiceActivity.this, GPSHandler.class);
    intent.putExtra("Latitude", locationBundle.getDouble("Latitude"));
    intent.putExtra("Longitude", locationBundle.getDouble("Longitude"));
    // In reality, you would want to have a static variable for the request
    // code instead of 192837
    PendingIntent sender = PendingIntent.getBroadcast(this, 192837, intent,
            PendingIntent.FLAG_UPDATE_CURRENT);

    // Get the AlarmManager service
    AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
    am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 5000,
            sender);
}

public void getCurrentLocation() {
    LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    LocationListener mlocListener = new MyLocationListener();
    mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
            5000, 0, mlocListener);

}

/* Class My Location Listener */
public class MyLocationListener implements LocationListener {



    public void onLocationChanged(Location loc) {

        double Latitude = loc.getLatitude();
        double Longitude = loc.getLongitude();

        locationBundle.putDouble("Longitude", Longitude);
        locationBundle.putDouble("Latitude", Latitude);

    }

    public void onProviderDisabled(String arg0) {

    }

    public void onProviderEnabled(String arg0) {

    }

    public void onStatusChanged(String arg0, int arg1, Bundle arg2) {

    }
}

}

My Manifest.xml

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

After some time debugging the code, I found out that the MyLocationListener never triggers, the Bundle locationBundle just contains two double with the value 0.0 and 0.0. Can somebody give me a hint on how to get this up and running?

EDIT

Just for test purposes I wrote this code

List<String> providers = mlocManager.getAllProviders();

        if(providers.size() > 0) {
            for(int i = 0; i < providers.size(); i++) {
                Log.i("Providers: ", providers.get(i).toString());
            }
        }
        else
            Log.i("Providers: ", "No providers");

And this outputs

network
gps
passive
Cœur
  • 37,241
  • 25
  • 195
  • 267
Tobias Moe Thorstensen
  • 8,861
  • 16
  • 75
  • 143

2 Answers2

0

you can check if provider is enabled. ask user to enable if its not. Check last argument in updateLocationRequest call. what is mlocListener? is it object of your location listener class(MyLocationListener )?

Stashi
  • 71
  • 1
  • 8
0
MyLocationOverlay

it is method in google maps API

Alex Muni
  • 473
  • 5
  • 16