Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.project.womensecurityapp.Location;
- import android.Manifest;
- import android.content.Context;
- import android.content.pm.PackageManager;
- import android.location.Criteria;
- import android.location.Location;
- import android.location.LocationListener;
- import android.location.LocationManager;
- import android.os.Bundle;
- import androidx.core.content.ContextCompat;
- public class SingleShotLocationProvider {
- public static interface LocationCallback {
- public void onNewLocationAvailable(GPSCoordinates location);
- }
- public static void requestSingleUpdate(final Context context, final LocationCallback callback) {
- final LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
- boolean isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
- if (isNetworkEnabled) {
- Criteria criteria = new Criteria();
- criteria.setAccuracy(Criteria.ACCURACY_COARSE);
- if ((ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) !=
- PackageManager.PERMISSION_GRANTED) &&
- ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) !=
- PackageManager.PERMISSION_GRANTED) {
- return;
- }
- locationManager.requestSingleUpdate(criteria, new LocationListener() {
- @Override
- public void onLocationChanged(Location location) {
- callback.onNewLocationAvailable(new GPSCoordinates(location.getLatitude(), location.getLongitude()));
- }
- @Override
- public void onStatusChanged(String provider, int status, Bundle extras) {
- }
- @Override
- public void onProviderEnabled(String provider) {
- }
- @Override
- public void onProviderDisabled(String provider) {
- }
- }, null);
- } else {
- boolean isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
- if (isGPSEnabled) {
- Criteria criteria = new Criteria();
- criteria.setAccuracy(Criteria.ACCURACY_FINE);
- locationManager.requestSingleUpdate(criteria, new LocationListener() {
- @Override
- public void onLocationChanged(Location location) {
- callback.onNewLocationAvailable(new GPSCoordinates(location.getLatitude(), location.getLongitude()));
- }
- @Override
- public void onStatusChanged(String provider, int status, Bundle extras) {
- }
- @Override
- public void onProviderEnabled(String provider) {
- }
- @Override
- public void onProviderDisabled(String provider) {
- }
- }, null);
- }
- }
- }
- // consider returning Location instead of this dummy wrapper class
- public static class GPSCoordinates {
- public float longitude = -1;
- public float latitude = -1;
- public GPSCoordinates(float theLatitude, float theLongitude) {
- longitude = theLongitude;
- latitude = theLatitude;
- }
- public GPSCoordinates(double theLatitude, double theLongitude) {
- longitude = (float) theLongitude;
- latitude = (float) theLatitude;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment