Skip to content Skip to sidebar Skip to footer

Can't Get Location On Android Studio

I try for days to get my current location on android studio but I always get a null location. I already try lot of things like this solution : I can't get location on Android real

Solution 1:

Ok, I'm stupid, the location has always been working... I forget to send my information to my Rest service it's why I was always 0 to the latitude and longitude... So stupid.. Thank you all !

Solution 2:

import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;

import java.util.Timer;
import java.util.TimerTask;

@SuppressWarnings("ResourceType")
publicclassSingleLocationProvider {

    private int mTimeout = 5000;
    privateLocationManager mLocationManager;
    privateSingleLocationListener mListener;
    privateLocation mLastKnownLocation;

    privateTimer mTimer;
    privateRequestTimerTask mTimerTask;

    privateOnLocationProviderListener mCallback;

    publicSingleLocationProvider(Context context) {
        mLocationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
        mListener = newSingleLocationListener();

        mTimer = newTimer();
        mTimerTask = newRequestTimerTask();
    }

    publicvoidrequestLocation() {
        startSeeking();
    }

    publicbooleancheckGPSProviderEnabled() {
        if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            if (mCallback != null) {
                mCallback.onGPSProviderDisabled();
            }

            returnfalse;
        }

        returntrue;
    }

    publicvoidcancel() {
        stopSeeking();
    }

    privatevoidstartSeeking() {
        if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            if (mCallback != null) {
                mCallback.onGPSProviderDisabled();
                return;
            }
        }

        if (mCallback != null){
            mCallback.onLocationStartedSeeking();
        }

        mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, Integer.MAX_VALUE, Integer.MAX_VALUE, mListener);

        mTimer.schedule(mTimerTask, mTimeout);
    }

    privatevoidstopSeeking() {
        mLocationManager.removeUpdates(mListener);

        mTimer.purge();
        mTimer.cancel();

        if (mCallback != null){
            mCallback.onLocationStoppedSeeking();
        }
    }

    publicvoidsetTimeout(int timeout) {
        mTimeout = timeout;
    }

    publicvoidsetOnLocationProviderListener(OnLocationProviderListener callback) {
        mCallback = callback;
    }

    publicLocationgetLastKnownLocation() {
        return mLastKnownLocation;
    }

    privateclassSingleLocationListenerimplementsLocationListener {

        @OverridepublicvoidonLocationChanged(Location location) {
            if (location != null) {

                mLastKnownLocation = location;

                if (mCallback != null) {
                    mCallback.onLocationFound(location);
                }

                stopSeeking();
            }
        }

        @OverridepublicvoidonStatusChanged(String provider, int status, Bundle extras) {
            // Empty Block
        }

        @OverridepublicvoidonProviderEnabled(String provider) {
            // Empty Block
        }

        @OverridepublicvoidonProviderDisabled(String provider) {
            // Empty Block
        }
    }

    privateclassRequestTimerTaskextendsTimerTask {

        @Overridepublicvoidrun() {
            mLocationManager.removeUpdates(mListener);

            if (mCallback != null) {
                mCallback.onLocationNotFound();
            }

            stopSeeking();
        }
    }

    publicinterfaceOnLocationProviderListener {
        voidonLocationStartedSeeking();

        voidonLocationStoppedSeeking();

        voidonLocationFound(Location location);

        voidonLocationNotFound();

        voidonGPSProviderDisabled();
    }

}

and this is the usage

SingleLocationProvidermLocationProvider=newSingleLocationProvider(this);
mLocationProvider.setOnLocationProviderListener(this);
mLocationProvider.setTimeout(20000);
mLocationProvider.requestLocation();

Add these to your manifest for permission

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

You can test it on real device. Feel free to use it :)

Hope it helps.

Solution 3:

You should request these permissions in your manifest file:

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

Post a Comment for "Can't Get Location On Android Studio"