Can't Get Gps Coordinates In Android Application
I use this code to get the current location's coordinates. When I start this activity, nothing happens. When I use this exact code in another application it worked. The only differ
Solution 1:
Hope this might help
Edit:
publicclassMainActivityextendsAppCompatActivityimplementsGoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {
privatestatic final int PERMISSION_REQUEST_ACCESS_FINE_LOCATION = 100;
privateLocationRequest mLocationRequest;
privateGoogleApiClient mGoogleApiClient;
privateTextView mLatitudeTextView;
privateTextView mLongitudeTextView;
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLatitudeTextView = (TextView) findViewById((R.id.latitude_textview));
mLongitudeTextView = (TextView) findViewById((R.id.longitude_textview));
createLocationRequest();
mGoogleApiClient = newGoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
if (!checkPermissions()) requestPermissions();
}
@OverridepublicvoidonStart() {
super.onStart();
mGoogleApiClient.connect();
}
@OverridepublicvoidonStop() {
super.onStop();
mGoogleApiClient.disconnect();
}
@OverrideprotectedvoidonPause() {
super.onPause();
if(checkPermissions()) stopLocationUpdates();
}
@OverridepublicvoidonResume() {
super.onResume();
if(checkPermissions() && mGoogleApiClient.isConnected()) startLocationUpdates();
}
privatevoidstartLocationUpdates() {
//noinspection MissingPermissionLocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
privatevoidstopLocationUpdates() {
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
}
privatebooleancheckPermissions() {
returnContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
}
privatevoidrequestPermissions() {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION)) {
} else {
ActivityCompat.requestPermissions(this,
newString[]{Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_REQUEST_ACCESS_FINE_LOCATION);
}
}
privatevoidcreateLocationRequest() {
mLocationRequest = newLocationRequest();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}
@OverridepublicvoidonConnected(@Nullable Bundle bundle) {
if(checkPermissions() && mGoogleApiClient.isConnected()) startLocationUpdates();
}
@OverridepublicvoidonConnectionSuspended(int i) {
}
@OverridepublicvoidonConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
@OverridepublicvoidonLocationChanged(Location location) {
LatLng latLng = newLatLng(location.getLatitude(), location.getLongitude());
mLatitudeTextView.setText(String.valueOf(location.getLatitude()));
mLongitudeTextView.setText(String.valueOf(location.getLongitude()));
}
@OverridepublicvoidonRequestPermissionsResult(int requestCode, @NonNullString[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
casePERMISSION_REQUEST_ACCESS_FINE_LOCATION: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
startLocationUpdates();
} else {
}
}
}
}
}
In onLocationChanged()
you get location which you can use to get latitude and longitude. Also, this code does not give continuous location updates. For that you have to set UPDATE INTERVAL & FASTEST UPDATE INTERVAL in method createLocationRequest()
.
Post a Comment for "Can't Get Gps Coordinates In Android Application"