Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package apps.ahqmrf.kothay.tracker.ui;
- import android.Manifest;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.content.res.Resources;
- import android.location.Location;
- import android.location.LocationManager;
- import android.os.Build;
- import android.os.Bundle;
- import android.support.annotation.NonNull;
- import android.support.annotation.Nullable;
- import android.support.v4.app.ActivityCompat;
- import android.support.v4.content.ContextCompat;
- import android.util.Log;
- import com.google.android.gms.common.ConnectionResult;
- import com.google.android.gms.common.api.GoogleApiClient;
- import com.google.android.gms.location.LocationListener;
- import com.google.android.gms.location.LocationRequest;
- import com.google.android.gms.location.LocationServices;
- import com.google.android.gms.maps.CameraUpdateFactory;
- import com.google.android.gms.maps.GoogleMap;
- import com.google.android.gms.maps.OnMapReadyCallback;
- import com.google.android.gms.maps.SupportMapFragment;
- import com.google.android.gms.maps.model.BitmapDescriptorFactory;
- import com.google.android.gms.maps.model.LatLng;
- import com.google.android.gms.maps.model.MapStyleOptions;
- import com.google.android.gms.maps.model.Marker;
- import com.google.android.gms.maps.model.MarkerOptions;
- import com.karumi.dexter.PermissionToken;
- import com.karumi.dexter.listener.PermissionDeniedResponse;
- import com.karumi.dexter.listener.PermissionGrantedResponse;
- import com.karumi.dexter.listener.PermissionRequest;
- import com.karumi.dexter.listener.single.PermissionListener;
- import apps.ahqmrf.kothay.BaseActivity;
- import apps.ahqmrf.kothay.LocationUpdateService;
- import apps.ahqmrf.kothay.R;
- import apps.ahqmrf.kothay.util.AppUtils;
- import butterknife.ButterKnife;
- public class MyLocationActivity extends BaseActivity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {
- private static final String TAG = "MY LOCATION";
- private GoogleMap mGoogleMap;
- private GoogleApiClient mGoogleApiClient;
- private SupportMapFragment mMapFrag;
- private Marker mCurrLocationMarker;
- private LocationManager mLocationManager;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_my_location);
- ButterKnife.bind(this);
- }
- @Override
- public void onViewCreated() {
- showLoader();
- showBackArrow();
- setLabel(R.string.title_my_location);
- mMapFrag = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
- mMapFrag.getMapAsync(this);
- PermissionListener permissionListener = new PermissionListener() {
- @Override
- public void onPermissionGranted(PermissionGrantedResponse response) {
- proceed();
- Intent intent = new Intent(getApplicationContext(), LocationUpdateService.class);
- stopService(intent);
- startService(intent);
- }
- @Override
- public void onPermissionDenied(PermissionDeniedResponse response) {
- AppUtils.toast(R.string.error_permission);
- }
- @Override
- public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {/* ... */}
- };
- mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- checkLocationPermission(permissionListener);
- } else {
- if (mLocationManager != null && !mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
- showGPSDisabledAlert();
- }
- }
- }
- private void proceed() {
- if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
- showGPSDisabledAlert();
- }
- if (mGoogleApiClient == null) {
- buildGoogleApiClient();
- }
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- mGoogleMap.setMyLocationEnabled(true);
- }
- }
- public void buildGoogleApiClient() {
- mGoogleApiClient = new GoogleApiClient.Builder(this)
- .addConnectionCallbacks(this)
- .addOnConnectionFailedListener(this)
- .addApi(LocationServices.API)
- .build();
- mGoogleApiClient.connect();
- }
- @Override
- public void onMapReady(GoogleMap googleMap) {
- mGoogleMap = googleMap;
- mGoogleMap.setPadding(0, AppUtils.dpToPx(48), 0, 0);
- mGoogleMap.setTrafficEnabled(true);
- try {
- // Customise the styling of the base map using a JSON object defined
- // in a raw resource file.
- boolean success = mGoogleMap.setMapStyle(
- MapStyleOptions.loadRawResourceStyle(
- this, R.raw.style_json));
- if (!success) {
- Log.e(TAG, "Style parsing failed.");
- }
- } catch (Resources.NotFoundException e) {
- Log.e(TAG, "Can't find style. Error: ", e);
- }
- if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
- buildGoogleApiClient();
- mGoogleMap.setMyLocationEnabled(true);
- }
- } else {
- buildGoogleApiClient();
- mGoogleMap.setMyLocationEnabled(true);
- }
- hideLoader();
- }
- @Override
- public void onConnected(@Nullable Bundle bundle) {
- LocationRequest mLocationRequest = new LocationRequest();
- mLocationRequest.setInterval(1000);
- mLocationRequest.setFastestInterval(1000);
- mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
- if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
- LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
- }
- }
- @Override
- public void onConnectionSuspended(int i) {
- }
- @Override
- public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
- }
- @Override
- public void onLocationChanged(Location location) {
- final LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
- if (mCurrLocationMarker != null) {
- mCurrLocationMarker.setPosition(latLng);
- return;
- }
- MarkerOptions markerOptions = new MarkerOptions();
- markerOptions.position(latLng);
- markerOptions.title(self.getName());
- markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
- mCurrLocationMarker = mGoogleMap.addMarker(markerOptions);
- mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement