Advertisement
Guest User

Untitled

a guest
May 27th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.36 KB | None | 0 0
  1. package apps.ahqmrf.kothay.tracker.ui;
  2.  
  3. import android.Manifest;
  4. import android.content.Intent;
  5. import android.content.pm.PackageManager;
  6. import android.content.res.Resources;
  7. import android.location.Location;
  8. import android.location.LocationManager;
  9. import android.os.Build;
  10. import android.os.Bundle;
  11. import android.support.annotation.NonNull;
  12. import android.support.annotation.Nullable;
  13. import android.support.v4.app.ActivityCompat;
  14. import android.support.v4.content.ContextCompat;
  15. import android.util.Log;
  16.  
  17. import com.google.android.gms.common.ConnectionResult;
  18. import com.google.android.gms.common.api.GoogleApiClient;
  19. import com.google.android.gms.location.LocationListener;
  20. import com.google.android.gms.location.LocationRequest;
  21. import com.google.android.gms.location.LocationServices;
  22. import com.google.android.gms.maps.CameraUpdateFactory;
  23. import com.google.android.gms.maps.GoogleMap;
  24. import com.google.android.gms.maps.OnMapReadyCallback;
  25. import com.google.android.gms.maps.SupportMapFragment;
  26. import com.google.android.gms.maps.model.BitmapDescriptorFactory;
  27. import com.google.android.gms.maps.model.LatLng;
  28. import com.google.android.gms.maps.model.MapStyleOptions;
  29. import com.google.android.gms.maps.model.Marker;
  30. import com.google.android.gms.maps.model.MarkerOptions;
  31. import com.karumi.dexter.PermissionToken;
  32. import com.karumi.dexter.listener.PermissionDeniedResponse;
  33. import com.karumi.dexter.listener.PermissionGrantedResponse;
  34. import com.karumi.dexter.listener.PermissionRequest;
  35. import com.karumi.dexter.listener.single.PermissionListener;
  36.  
  37. import apps.ahqmrf.kothay.BaseActivity;
  38. import apps.ahqmrf.kothay.LocationUpdateService;
  39. import apps.ahqmrf.kothay.R;
  40. import apps.ahqmrf.kothay.util.AppUtils;
  41. import butterknife.ButterKnife;
  42.  
  43. public class MyLocationActivity extends BaseActivity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {
  44.  
  45.     private static final String TAG = "MY LOCATION";
  46.     private GoogleMap mGoogleMap;
  47.     private GoogleApiClient    mGoogleApiClient;
  48.     private SupportMapFragment mMapFrag;
  49.     private Marker             mCurrLocationMarker;
  50.     private LocationManager    mLocationManager;
  51.  
  52.     @Override
  53.     protected void onCreate(Bundle savedInstanceState) {
  54.         super.onCreate(savedInstanceState);
  55.         setContentView(R.layout.activity_my_location);
  56.         ButterKnife.bind(this);
  57.     }
  58.  
  59.     @Override
  60.     public void onViewCreated() {
  61.         showLoader();
  62.         showBackArrow();
  63.         setLabel(R.string.title_my_location);
  64.  
  65.         mMapFrag = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
  66.         mMapFrag.getMapAsync(this);
  67.         PermissionListener permissionListener = new PermissionListener() {
  68.             @Override
  69.             public void onPermissionGranted(PermissionGrantedResponse response) {
  70.                 proceed();
  71.                 Intent intent = new Intent(getApplicationContext(), LocationUpdateService.class);
  72.                 stopService(intent);
  73.                 startService(intent);
  74.             }
  75.  
  76.             @Override
  77.             public void onPermissionDenied(PermissionDeniedResponse response) {
  78.                 AppUtils.toast(R.string.error_permission);
  79.             }
  80.  
  81.             @Override
  82.             public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {/* ... */}
  83.         };
  84.  
  85.         mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
  86.         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  87.             checkLocationPermission(permissionListener);
  88.         } else {
  89.             if (mLocationManager != null && !mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
  90.                 showGPSDisabledAlert();
  91.             }
  92.         }
  93.     }
  94.  
  95.     private void proceed() {
  96.         if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
  97.             showGPSDisabledAlert();
  98.         }
  99.  
  100.         if (mGoogleApiClient == null) {
  101.             buildGoogleApiClient();
  102.         }
  103.         if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
  104.             mGoogleMap.setMyLocationEnabled(true);
  105.         }
  106.     }
  107.  
  108.     public void buildGoogleApiClient() {
  109.         mGoogleApiClient = new GoogleApiClient.Builder(this)
  110.                 .addConnectionCallbacks(this)
  111.                 .addOnConnectionFailedListener(this)
  112.                 .addApi(LocationServices.API)
  113.                 .build();
  114.         mGoogleApiClient.connect();
  115.     }
  116.  
  117.     @Override
  118.     public void onMapReady(GoogleMap googleMap) {
  119.         mGoogleMap = googleMap;
  120.         mGoogleMap.setPadding(0, AppUtils.dpToPx(48), 0, 0);
  121.         mGoogleMap.setTrafficEnabled(true);
  122.         try {
  123.             // Customise the styling of the base map using a JSON object defined
  124.             // in a raw resource file.
  125.             boolean success = mGoogleMap.setMapStyle(
  126.                     MapStyleOptions.loadRawResourceStyle(
  127.                             this, R.raw.style_json));
  128.  
  129.             if (!success) {
  130.                 Log.e(TAG, "Style parsing failed.");
  131.             }
  132.         } catch (Resources.NotFoundException e) {
  133.             Log.e(TAG, "Can't find style. Error: ", e);
  134.         }
  135.  
  136.         if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  137.             if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
  138.                 buildGoogleApiClient();
  139.                 mGoogleMap.setMyLocationEnabled(true);
  140.             }
  141.         } else {
  142.             buildGoogleApiClient();
  143.             mGoogleMap.setMyLocationEnabled(true);
  144.         }
  145.         hideLoader();
  146.     }
  147.  
  148.     @Override
  149.     public void onConnected(@Nullable Bundle bundle) {
  150.         LocationRequest mLocationRequest = new LocationRequest();
  151.         mLocationRequest.setInterval(1000);
  152.         mLocationRequest.setFastestInterval(1000);
  153.         mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
  154.  
  155.         if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
  156.             LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
  157.         }
  158.     }
  159.  
  160.     @Override
  161.     public void onConnectionSuspended(int i) {
  162.  
  163.     }
  164.  
  165.     @Override
  166.     public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
  167.  
  168.     }
  169.  
  170.     @Override
  171.     public void onLocationChanged(Location location) {
  172.         final LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
  173.         if (mCurrLocationMarker != null) {
  174.             mCurrLocationMarker.setPosition(latLng);
  175.             return;
  176.         }
  177.  
  178.         MarkerOptions markerOptions = new MarkerOptions();
  179.         markerOptions.position(latLng);
  180.         markerOptions.title(self.getName());
  181.         markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
  182.         mCurrLocationMarker = mGoogleMap.addMarker(markerOptions);
  183.  
  184.         mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16));
  185.     }
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement