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"