Skip to content

Commit

Permalink
Merge pull request #6 from pulkit4tech/add_location_button_and_services
Browse files Browse the repository at this point in the history
#3 : Added Location Button and current Location Services
  • Loading branch information
pulkit4tech authored Jan 2, 2017
2 parents 36556e5 + 948130f commit b9cc69e
Show file tree
Hide file tree
Showing 5 changed files with 202 additions and 4 deletions.
1 change: 0 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
location permissions for the 'MyLocation' functionality.
-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
Expand Down
7 changes: 7 additions & 0 deletions app/src/main/java/com/pulkit4tech/privy/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
public class MainActivity extends AppCompatActivity {

private PrivyMapsActivity mapFragement;
public static final String DEBUG = "DEBUGGER";

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand All @@ -21,4 +22,10 @@ protected void onCreate(Bundle savedInstanceState) {
startActivity(intent);
}
}

@Override
protected void onStop() {
super.onStop();
this.finish();
}
}
82 changes: 79 additions & 3 deletions app/src/main/java/com/pulkit4tech/privy/PrivyMapsActivity.java
Original file line number Diff line number Diff line change
@@ -1,24 +1,45 @@
package com.pulkit4tech.privy;

import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.widget.Toast;

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.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.pulkit4tech.privy.Utilities.LocationServices;
import com.pulkit4tech.privy.data.LocationData;

import static com.pulkit4tech.privy.MainActivity.DEBUG;

public class PrivyMapsActivity extends ActionBarActivity implements OnMapReadyCallback {

private GoogleMap mMap;
private Context mContext;
private Marker myLocationMarker;

// My Location
private LocationData myLocationData;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_privy_maps);

mContext = this;

// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.privyMapActivity);
Expand All @@ -38,13 +59,68 @@ protected void onCreate(Bundle savedInstanceState) {
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
setUpMapInfo();
addMarkers();
}


private void addMarkers() {

// Add a test marker in Delhi and move the camera
LatLng delhi = new LatLng(28.633011, 77.219373);
mMap.addMarker(new MarkerOptions().position(delhi).anchor(.5f,.5f).title("Marker in Home"));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(delhi,10.0f));
mMap.addMarker(new MarkerOptions().position(delhi).anchor(.5f, .5f).title("Marker in Home"));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(delhi, 15.0f));

LatLng delhi2 = new LatLng(28.633511, 77.219444);
mMap.addMarker(new MarkerOptions().position(delhi2).anchor(.5f,.5f).title("Test Marker in Home2").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher)));
mMap.addMarker(new MarkerOptions().position(delhi2).anchor(.5f, .5f).title("Test Marker in Home2").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher)));

}

private void setUpMapInfo() {

if(!checkLocationEnabledPermission())
return;


getMyCurrentLocation();

}

private void getMyCurrentLocation(){
mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
@Override
public boolean onMyLocationButtonClick() {
LocationServices locationService = new LocationServices(mContext);
myLocationData = locationService.getCurrentLocation();
if(myLocationData!=null) {

// checking for previous marker and if present, replacing it with new marker
if(myLocationMarker!=null){
myLocationMarker.remove();
}

myLocationMarker = mMap.addMarker(new MarkerOptions().position(myLocationData.getLatLng()).title("My Location"));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myLocationData.getLatLng(), 15.0f));
Log.d(DEBUG, myLocationData.getLatLng().toString());
}
return true;
}
});
}

private boolean checkLocationEnabledPermission() {
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.

return false;
}
mMap.setMyLocationEnabled(true);
return true;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package com.pulkit4tech.privy.Utilities;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.location.LocationListener;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.util.Log;
import android.widget.Toast;


import com.google.android.gms.maps.model.LatLng;

import com.pulkit4tech.privy.data.LocationData;

import static android.content.Context.LOCATION_SERVICE;
import static com.pulkit4tech.privy.MainActivity.DEBUG;

/**
* Created by pulkit on 01/01/17.
*/

public class LocationServices implements LocationListener {

private Context mContext;
private LocationData myLocation;

public LocationServices(Context context) {
mContext = context;
}

public LocationData getCurrentLocation() {
LocationManager locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
String bestProvider = locationManager.getBestProvider(criteria, true);
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return myLocation;
}
Location location = locationManager.getLastKnownLocation(bestProvider);
locationManager.requestLocationUpdates(bestProvider, 1000, 0, this);
if (location != null) {
onLocationChanged(location);
}
return myLocation;
}


@Override
public void onLocationChanged(Location location) {

double latitude = location.getLatitude();
double longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
myLocation = new LocationData();
myLocation.setLatLng(latLng);
}

@Override
public void onStatusChanged(String s, int i, Bundle bundle) {

}

@Override
public void onProviderEnabled(String s) {

}

@Override
public void onProviderDisabled(String s) {
Toast.makeText(mContext,"Provider Disabled",Toast.LENGTH_SHORT).show();
}
}
28 changes: 28 additions & 0 deletions app/src/main/java/com/pulkit4tech/privy/data/LocationData.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.pulkit4tech.privy.data;

import com.google.android.gms.maps.model.LatLng;

/**
* Created by pulkit on 01/01/17.
*/

public class LocationData {
private LatLng latLng;
private String Description;

public LatLng getLatLng() {
return latLng;
}

public void setLatLng(LatLng latLng) {
this.latLng = latLng;
}

public String getDescription() {
return Description;
}

public void setDescription(String description) {
Description = description;
}
}

0 comments on commit b9cc69e

Please sign in to comment.