Android service does not receive location updates

Trying to get LocationUpdates in my service, however, it never starts LocationListener.

My Service starts a thread, which then loops with Handler.postDelayed () - I originally used sleep (30000), however I thought this might have prevented locationUpdates. All this service starts this thread - and onStartCommand returns STICKY to make it work:

public class TST extends Thread { final int DefaultNetworkTick = 120000; // 2 minutes final int DefaultLocationTick = 20000; //600000; boolean CustomLocationUpdateTick = false; // If the network requests faster updates int CustomLocationUpdateTickMs = 600000; // Default 10 minutes public boolean kill = false; public Context context; Handler handler = new Handler(); Date nextNetworkReadTick; @Override public void run() { Log.i("TST", "Start run() iteration"); // Set the ticks to the appropriate values // Network gets read every 2 minutes nextNetworkReadTick = new Date(); nextNetworkReadTick.setTime(nextNetworkReadTick.getTime() + DefaultNetworkTick); Log.i("TST", "Set next Network tick to " + nextNetworkReadTick.toString()); Looper.prepare(); Log.i("TST", "Performing location update setup..."); SetupLocationListenerDefault(); handler.postDelayed(runFunc, 2000); Looper.loop(); } // We do our networking and stuff in here public Runnable runFunc = new Runnable(){ public void run() { Log.i("TST", "run() iteration"); if( new Date().after(nextNetworkReadTick) ) { // Set next tick nextNetworkReadTick = new Date(); nextNetworkReadTick.setTime(nextNetworkReadTick.getTime() + DefaultNetworkTick); UpdateNetwork(); } handler.postDelayed(runFunc, 1000); } }; private void UpdateNetwork() { // TODO Auto-generated method stub } LocationManager locMgr; PendingIntent locationUpdateIntentPending; Intent locationUpdateIntent; LocationListener locationListener = new LocationListener() { @Override public void onLocationChanged(Location arg0) { // TODO Auto-generated method stub Log.i("TST", "OnLocationChanged: " + arg0.toString()); } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub Log.i("TST", "OnProviderDisabled: " + provider); } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub Log.i("TST", "OnProviderEnabled: " + provider); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub Log.i("TST", "OnStatusChanged"); } }; private void SetupLocationListenerDefault() { // Reset location manager if( locMgr != null ) { locMgr.removeUpdates(locationListener); locMgr = null; } locMgr = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); String provider = locMgr.getBestProvider(criteria, true); locMgr.requestLocationUpdates(provider, DefaultLocationTick, 0, locationListener); } } 
+4
source share
1 answer

Rebooted my phone and started to receive updates - it seems that Android is stuck somewhere!

+4
source

All Articles