2

The code below works on Samsung Galaxy S3 (Android 4.3) but doesn't work on Alcatel One Touch Pop 2(4.5) (Android 4.4.4):

Service code:

public class MyService extends Service{

private static LocationManager lm;

private LocationListener gpsLocationListener;
    private LocationListener networkLocationListener;
    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        startLocation();
    }

    private void startLocation(){
        lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        Log.d(TAG,"LOC " + lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER));
        Toast.makeText(MyService.this,"LOC " + lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER),Toast.LENGTH_SHORT).show();
            if (_.useGPS == 1)
            {
                gpsLocationListener = new VoidLL();
                if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
                     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                         5000, 0, gpsLocationListener);
                }
            }
           if (lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
               networkLocationListener = new VoidLL();
                 lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
                    5000, 0, networkLocationListener);
               }

    }

    private void stopLocation(){
        if (gpsLocationListener != null)
        {
            lm.removeUpdates(gpsLocationListener);
        }
        if (networkLocationListener != null)
        {
            lm.removeUpdates(networkLocationListener);
        }
    }

    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        stopLocation(); 
    }

    private class VoidLL implements LocationListener {

        @Override
        public void onLocationChanged(Location location) {
            _.initializedLocation = true;
            _.loc = location;
            Toast.makeText(MyService.this,_.loc.toString(),Toast.LENGTH_SHORT).show();
            Log.d(TAG,_.loc.toString());
        }

        @Override
        public void onProviderDisabled(String provider) {
            Log.d(TAG,"onProviderDisabled: " + provider);
        }

        @Override
        public void onProviderEnabled(String provider) {
            Log.d(TAG,"onProviderEnabled: " + provider);
        }

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

      }
}

Restrictions/Permissions:

<uses-permission android:name="android.permission.ACCESS_GPS" />
        <uses-permission android:name="android.permission.ACCESS_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Slava Vedenin
  • 58,326
  • 13
  • 40
  • 59
Vyacheslav
  • 26,359
  • 19
  • 112
  • 194
  • 1
    Some hours later I found the reboot fixes this bug. More detailed: http://stackoverflow.com/a/17957697/1979882 – Vyacheslav Jan 03 '15 at 18:47

0 Answers0