Guest User

Untitled

a guest
Mar 18th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.29 KB | None | 0 0
  1. package com.mapme;
  2.  
  3. import android.app.Activity;
  4. import android.content.IntentSender;
  5. import android.location.Location;
  6. import android.support.annotation.NonNull;
  7. import android.util.Log;
  8.  
  9. import com.google.android.gms.common.api.ResolvableApiException;
  10. import com.google.android.gms.location.FusedLocationProviderClient;
  11. import com.google.android.gms.location.LocationCallback;
  12. import com.google.android.gms.location.LocationRequest;
  13. import com.google.android.gms.location.LocationResult;
  14. import com.google.android.gms.location.LocationServices;
  15. import com.google.android.gms.location.LocationSettingsRequest;
  16. import com.google.android.gms.location.LocationSettingsResponse;
  17. import com.google.android.gms.location.SettingsClient;
  18. import com.google.android.gms.tasks.OnFailureListener;
  19. import com.google.android.gms.tasks.OnSuccessListener;
  20. import com.google.android.gms.tasks.Task;
  21.  
  22. class FusedLocationHandler {
  23. private static final long INTERVAL = 1000;
  24. private static final long FASTEST_INTERVAL = 1000;
  25. private static final String TAG = "LOCATION_HANDLER";
  26.  
  27. private final Activity mActivity;
  28. private final LocationConsumer mLocationConsumer;
  29.  
  30. public interface LocationConsumer {
  31. void consumeLocation(Location location);
  32. }
  33.  
  34. public FusedLocationHandler(Activity activity, LocationConsumer locationConsumer) {
  35. mActivity = activity;
  36. mLocationConsumer = locationConsumer;
  37. }
  38.  
  39. private LocationCallback mLocationCallback = new LocationCallback() {
  40. @Override
  41. public void onLocationResult(LocationResult locationResult) {
  42. for (Location location : locationResult.getLocations()) {
  43. Log.v("LOCATIONUPDATE", location.toString());
  44. mLocationConsumer.consumeLocation(location);
  45. }
  46. }
  47. };
  48.  
  49. private FusedLocationProviderClient mFusedLocationClient;
  50.  
  51. private LocationRequest mLocationRequest = new LocationRequest()
  52. .setInterval(INTERVAL)
  53. .setFastestInterval(FASTEST_INTERVAL)
  54. .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
  55.  
  56. public void start() {
  57. Log.v(TAG, "Starting location updates");
  58.  
  59. mFusedLocationClient = LocationServices.getFusedLocationProviderClient(mActivity);
  60. LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
  61. .addLocationRequest(mLocationRequest);
  62.  
  63. // Make sure settings satisfy request
  64. SettingsClient client = LocationServices.getSettingsClient(mActivity);
  65. Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build());
  66. task.addOnSuccessListener(
  67. mActivity,
  68. new OnSuccessListener<LocationSettingsResponse>() {
  69. @Override
  70. public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
  71. mFusedLocationClient.requestLocationUpdates(mLocationRequest,
  72. mLocationCallback,
  73. null /* Looper */);
  74.  
  75. }
  76. });
  77.  
  78. task.addOnFailureListener(
  79. mActivity,
  80. new OnFailureListener() {
  81. @Override
  82. public void onFailure(@NonNull Exception e) {
  83. final int REQUEST_CHECK_SETTINGS = 0x1;
  84.  
  85. if (e instanceof ResolvableApiException) {
  86. // Location settings are not satisfied, but this can be fixed
  87. // by showing the user a dialog.
  88. try {
  89. // Show the dialog by calling startResolutionForResult(),
  90. // and check the result in onActivityResult().
  91. ResolvableApiException resolvable = (ResolvableApiException) e;
  92. resolvable.startResolutionForResult(mActivity, REQUEST_CHECK_SETTINGS);
  93. } catch (IntentSender.SendIntentException sendEx) {
  94. // Ignore the error.
  95. }
  96. }
  97. }
  98. });
  99. }
  100.  
  101. public void stop() {
  102. Log.v(TAG, "Stopping location updates");
  103. mFusedLocationClient.removeLocationUpdates(mLocationCallback);
  104. }
  105. }
Add Comment
Please, Sign In to add comment