Guest User

MainActivity.java

a guest
Mar 2nd, 2016
9,833
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.57 KB | None | 0 0
  1. package com.okedroid.googlemaps;
  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.location.LocationProvider;
  11. import android.support.v4.app.FragmentActivity;
  12. import android.os.Bundle;
  13. import android.util.Log;
  14. import com.google.android.gms.maps.CameraUpdateFactory;
  15. import com.google.android.gms.maps.GoogleMap;
  16. import com.google.android.gms.maps.OnMapReadyCallback;
  17. import com.google.android.gms.maps.SupportMapFragment;
  18. import com.google.android.gms.maps.model.BitmapDescriptorFactory;
  19. import com.google.android.gms.maps.model.CameraPosition;
  20. import com.google.android.gms.maps.model.CircleOptions;
  21. import com.google.android.gms.maps.model.LatLng;
  22. import com.google.android.gms.maps.model.Marker;
  23. import com.google.android.gms.maps.model.MarkerOptions;
  24.  
  25. public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, LocationListener {
  26.  
  27.     private GoogleMap mMap;
  28.     private LocationManager mLocationManager = null;
  29.     private String provider = null;
  30.     private Marker mCurrentPosition = null;
  31.  
  32.     @Override
  33.     protected void onCreate(Bundle savedInstanceState) {
  34.         super.onCreate(savedInstanceState);
  35.         setContentView(R.layout.activity_maps);
  36.         // Obtain the SupportMapFragment and get notified when the map is ready to be used.
  37.         SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
  38.                 .findFragmentById(R.id.map);
  39.         mapFragment.getMapAsync(this);
  40.     }
  41.  
  42.     @Override
  43.     public void onMapReady(GoogleMap googleMap) {
  44.         mMap = googleMap;
  45.         mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
  46.  
  47.         if (isProviderAvailable() && (provider != null)) {
  48.             locateCurrentPosition();
  49.         }
  50.     }
  51.  
  52.     private void locateCurrentPosition() {
  53.  
  54.         int status = getPackageManager().checkPermission(Manifest.permission.ACCESS_COARSE_LOCATION,
  55.                 getPackageName());
  56.  
  57.         if (status == PackageManager.PERMISSION_GRANTED) {
  58.             Location location = mLocationManager.getLastKnownLocation(provider);
  59.             updateWithNewLocation(location);
  60.             //  mLocationManager.addGpsStatusListener(this);
  61.             long minTime = 5000;// ms
  62.             float minDist = 5.0f;// meter
  63.             mLocationManager.requestLocationUpdates(provider, minTime, minDist,
  64.                     this);
  65.         }
  66.     }
  67.  
  68.  
  69.     private boolean isProviderAvailable() {
  70.         mLocationManager = (LocationManager) getSystemService(
  71.                 Context.LOCATION_SERVICE);
  72.         Criteria criteria = new Criteria();
  73.         criteria.setAccuracy(Criteria.ACCURACY_COARSE);
  74.         criteria.setAltitudeRequired(false);
  75.         criteria.setBearingRequired(false);
  76.         criteria.setCostAllowed(true);
  77.         criteria.setPowerRequirement(Criteria.POWER_LOW);
  78.  
  79.         provider = mLocationManager.getBestProvider(criteria, true);
  80.         if (mLocationManager
  81.                 .isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
  82.             provider = LocationManager.NETWORK_PROVIDER;
  83.  
  84.             return true;
  85.         }
  86.  
  87.         if (mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
  88.             provider = LocationManager.GPS_PROVIDER;
  89.             return true;
  90.         }
  91.  
  92.         if (provider != null) {
  93.             return true;
  94.         }
  95.         return false;
  96.     }
  97.  
  98.     private void updateWithNewLocation(Location location) {
  99.  
  100.         if (location != null && provider != null) {
  101.             double lng = location.getLongitude();
  102.             double lat = location.getLatitude();
  103.  
  104.             addBoundaryToCurrentPosition(lat, lng);
  105.  
  106.             CameraPosition camPosition = new CameraPosition.Builder()
  107.                     .target(new LatLng(lat, lng)).zoom(10f).build();
  108.  
  109.             if (mMap != null)
  110.                 mMap.animateCamera(CameraUpdateFactory
  111.  
  112.                         .newCameraPosition(camPosition));
  113.         } else {
  114.             Log.d("Location error", "Something went wrong");
  115.         }
  116.     }
  117.  
  118.  
  119.     private void addBoundaryToCurrentPosition(double lat, double lang) {
  120.  
  121.         MarkerOptions mMarkerOptions = new MarkerOptions();
  122.         mMarkerOptions.position(new LatLng(lat, lang));
  123.         mMarkerOptions.icon(BitmapDescriptorFactory
  124.                 .fromResource(R.drawable.marker));
  125.         mMarkerOptions.anchor(0.5f, 0.5f);
  126.  
  127.         CircleOptions mOptions = new CircleOptions()
  128.                 .center(new LatLng(lat, lang)).radius(10000)
  129.                 .strokeColor(0x110000FF).strokeWidth(1).fillColor(0x110000FF);
  130.         mMap.addCircle(mOptions);
  131.         if (mCurrentPosition != null)
  132.             mCurrentPosition.remove();
  133.         mCurrentPosition = mMap.addMarker(mMarkerOptions);
  134.     }
  135.  
  136.  
  137.     @Override
  138.     public void onLocationChanged(Location location) {
  139.  
  140.         updateWithNewLocation(location);
  141.     }
  142.  
  143.     @Override
  144.     public void onProviderDisabled(String provider) {
  145.  
  146.         updateWithNewLocation(null);
  147.     }
  148.  
  149.     @Override
  150.     public void onProviderEnabled(String provider) {
  151.  
  152.     }
  153.  
  154.     @Override
  155.     public void onStatusChanged(String provider, int status, Bundle extras) {
  156.         switch (status) {
  157.             case LocationProvider.OUT_OF_SERVICE:
  158.                 break;
  159.             case LocationProvider.TEMPORARILY_UNAVAILABLE:
  160.                 break;
  161.             case LocationProvider.AVAILABLE:
  162.                 break;
  163.         }
  164.     }
  165. }
Advertisement
Add Comment
Please, Sign In to add comment