theanandankit

Untitled

May 4th, 2021
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.65 KB | None | 0 0
  1. package com.project.womensecurityapp.Location;
  2.  
  3. import android.Manifest;
  4. import android.content.Context;
  5. import android.content.pm.PackageManager;
  6. import android.location.Criteria;
  7. import android.location.Location;
  8. import android.location.LocationListener;
  9. import android.location.LocationManager;
  10. import android.os.Bundle;
  11.  
  12. import androidx.core.content.ContextCompat;
  13.  
  14. public class SingleShotLocationProvider {
  15.  
  16. public static interface LocationCallback {
  17. public void onNewLocationAvailable(GPSCoordinates location);
  18. }
  19.  
  20. public static void requestSingleUpdate(final Context context, final LocationCallback callback) {
  21.  
  22. final LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
  23. boolean isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
  24.  
  25. if (isNetworkEnabled) {
  26. Criteria criteria = new Criteria();
  27. criteria.setAccuracy(Criteria.ACCURACY_COARSE);
  28.  
  29. if ((ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) !=
  30. PackageManager.PERMISSION_GRANTED) &&
  31. ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) !=
  32. PackageManager.PERMISSION_GRANTED) {
  33.  
  34. return;
  35. }
  36.  
  37. locationManager.requestSingleUpdate(criteria, new LocationListener() {
  38. @Override
  39. public void onLocationChanged(Location location) {
  40. callback.onNewLocationAvailable(new GPSCoordinates(location.getLatitude(), location.getLongitude()));
  41. }
  42.  
  43. @Override
  44. public void onStatusChanged(String provider, int status, Bundle extras) {
  45. }
  46.  
  47. @Override
  48. public void onProviderEnabled(String provider) {
  49. }
  50.  
  51. @Override
  52. public void onProviderDisabled(String provider) {
  53. }
  54. }, null);
  55. } else {
  56. boolean isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
  57. if (isGPSEnabled) {
  58. Criteria criteria = new Criteria();
  59. criteria.setAccuracy(Criteria.ACCURACY_FINE);
  60. locationManager.requestSingleUpdate(criteria, new LocationListener() {
  61. @Override
  62. public void onLocationChanged(Location location) {
  63. callback.onNewLocationAvailable(new GPSCoordinates(location.getLatitude(), location.getLongitude()));
  64. }
  65.  
  66. @Override
  67. public void onStatusChanged(String provider, int status, Bundle extras) {
  68. }
  69.  
  70. @Override
  71. public void onProviderEnabled(String provider) {
  72. }
  73.  
  74. @Override
  75. public void onProviderDisabled(String provider) {
  76. }
  77. }, null);
  78. }
  79. }
  80. }
  81.  
  82.  
  83. // consider returning Location instead of this dummy wrapper class
  84. public static class GPSCoordinates {
  85. public float longitude = -1;
  86. public float latitude = -1;
  87.  
  88. public GPSCoordinates(float theLatitude, float theLongitude) {
  89. longitude = theLongitude;
  90. latitude = theLatitude;
  91. }
  92.  
  93. public GPSCoordinates(double theLatitude, double theLongitude) {
  94. longitude = (float) theLongitude;
  95. latitude = (float) theLatitude;
  96. }
  97. }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment