Skip to content

Commit 948130f

Browse files
committed
#3 : Added Location Button and current Location Services
1 parent 36556e5 commit 948130f

File tree

5 files changed

+202
-4
lines changed

5 files changed

+202
-4
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
location permissions for the 'MyLocation' functionality.
99
-->
1010
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
11-
1211
<application
1312
android:allowBackup="true"
1413
android:icon="@mipmap/ic_launcher"

app/src/main/java/com/pulkit4tech/privy/MainActivity.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
public class MainActivity extends AppCompatActivity {
1010

1111
private PrivyMapsActivity mapFragement;
12+
public static final String DEBUG = "DEBUGGER";
1213

1314
@Override
1415
protected void onCreate(Bundle savedInstanceState) {
@@ -21,4 +22,10 @@ protected void onCreate(Bundle savedInstanceState) {
2122
startActivity(intent);
2223
}
2324
}
25+
26+
@Override
27+
protected void onStop() {
28+
super.onStop();
29+
this.finish();
30+
}
2431
}

app/src/main/java/com/pulkit4tech/privy/PrivyMapsActivity.java

Lines changed: 79 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,45 @@
11
package com.pulkit4tech.privy;
22

3+
import android.content.Context;
4+
import android.content.pm.PackageManager;
5+
import android.location.Criteria;
6+
import android.location.Location;
7+
import android.location.LocationManager;
38
import android.os.Bundle;
9+
import android.support.v4.app.ActivityCompat;
410
import android.support.v7.app.ActionBarActivity;
11+
import android.util.Log;
12+
import android.widget.Toast;
513

614
import com.google.android.gms.maps.CameraUpdateFactory;
715
import com.google.android.gms.maps.GoogleMap;
816
import com.google.android.gms.maps.OnMapReadyCallback;
917
import com.google.android.gms.maps.SupportMapFragment;
1018
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
1119
import com.google.android.gms.maps.model.LatLng;
20+
import com.google.android.gms.maps.model.Marker;
1221
import com.google.android.gms.maps.model.MarkerOptions;
22+
import com.pulkit4tech.privy.Utilities.LocationServices;
23+
import com.pulkit4tech.privy.data.LocationData;
24+
25+
import static com.pulkit4tech.privy.MainActivity.DEBUG;
1326

1427
public class PrivyMapsActivity extends ActionBarActivity implements OnMapReadyCallback {
1528

1629
private GoogleMap mMap;
30+
private Context mContext;
31+
private Marker myLocationMarker;
32+
33+
// My Location
34+
private LocationData myLocationData;
1735

1836
@Override
1937
protected void onCreate(Bundle savedInstanceState) {
2038
super.onCreate(savedInstanceState);
2139
setContentView(R.layout.activity_privy_maps);
40+
41+
mContext = this;
42+
2243
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
2344
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
2445
.findFragmentById(R.id.privyMapActivity);
@@ -38,13 +59,68 @@ protected void onCreate(Bundle savedInstanceState) {
3859
@Override
3960
public void onMapReady(GoogleMap googleMap) {
4061
mMap = googleMap;
62+
setUpMapInfo();
63+
addMarkers();
64+
}
65+
66+
67+
private void addMarkers() {
4168

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

4774
LatLng delhi2 = new LatLng(28.633511, 77.219444);
48-
mMap.addMarker(new MarkerOptions().position(delhi2).anchor(.5f,.5f).title("Test Marker in Home2").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher)));
75+
mMap.addMarker(new MarkerOptions().position(delhi2).anchor(.5f, .5f).title("Test Marker in Home2").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher)));
76+
77+
}
78+
79+
private void setUpMapInfo() {
80+
81+
if(!checkLocationEnabledPermission())
82+
return;
83+
84+
85+
getMyCurrentLocation();
86+
87+
}
88+
89+
private void getMyCurrentLocation(){
90+
mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
91+
@Override
92+
public boolean onMyLocationButtonClick() {
93+
LocationServices locationService = new LocationServices(mContext);
94+
myLocationData = locationService.getCurrentLocation();
95+
if(myLocationData!=null) {
96+
97+
// checking for previous marker and if present, replacing it with new marker
98+
if(myLocationMarker!=null){
99+
myLocationMarker.remove();
100+
}
101+
102+
myLocationMarker = mMap.addMarker(new MarkerOptions().position(myLocationData.getLatLng()).title("My Location"));
103+
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myLocationData.getLatLng(), 15.0f));
104+
Log.d(DEBUG, myLocationData.getLatLng().toString());
105+
}
106+
return true;
107+
}
108+
});
109+
}
110+
111+
private boolean checkLocationEnabledPermission() {
112+
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) {
113+
// TODO: Consider calling
114+
// ActivityCompat#requestPermissions
115+
// here to request the missing permissions, and then overriding
116+
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
117+
// int[] grantResults)
118+
// to handle the case where the user grants the permission. See the documentation
119+
// for ActivityCompat#requestPermissions for more details.
120+
121+
return false;
122+
}
123+
mMap.setMyLocationEnabled(true);
124+
return true;
49125
}
50126
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package com.pulkit4tech.privy.Utilities;
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.LocationManager;
9+
import android.location.LocationListener;
10+
import android.os.Bundle;
11+
import android.support.v4.app.ActivityCompat;
12+
import android.util.Log;
13+
import android.widget.Toast;
14+
15+
16+
import com.google.android.gms.maps.model.LatLng;
17+
18+
import com.pulkit4tech.privy.data.LocationData;
19+
20+
import static android.content.Context.LOCATION_SERVICE;
21+
import static com.pulkit4tech.privy.MainActivity.DEBUG;
22+
23+
/**
24+
* Created by pulkit on 01/01/17.
25+
*/
26+
27+
public class LocationServices implements LocationListener {
28+
29+
private Context mContext;
30+
private LocationData myLocation;
31+
32+
public LocationServices(Context context) {
33+
mContext = context;
34+
}
35+
36+
public LocationData getCurrentLocation() {
37+
LocationManager locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
38+
Criteria criteria = new Criteria();
39+
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
40+
criteria.setAltitudeRequired(false);
41+
criteria.setBearingRequired(false);
42+
criteria.setCostAllowed(true);
43+
criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
44+
String bestProvider = locationManager.getBestProvider(criteria, true);
45+
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
46+
// TODO: Consider calling
47+
// ActivityCompat#requestPermissions
48+
// here to request the missing permissions, and then overriding
49+
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
50+
// int[] grantResults)
51+
// to handle the case where the user grants the permission. See the documentation
52+
// for ActivityCompat#requestPermissions for more details.
53+
return myLocation;
54+
}
55+
Location location = locationManager.getLastKnownLocation(bestProvider);
56+
locationManager.requestLocationUpdates(bestProvider, 1000, 0, this);
57+
if (location != null) {
58+
onLocationChanged(location);
59+
}
60+
return myLocation;
61+
}
62+
63+
64+
@Override
65+
public void onLocationChanged(Location location) {
66+
67+
double latitude = location.getLatitude();
68+
double longitude = location.getLongitude();
69+
LatLng latLng = new LatLng(latitude, longitude);
70+
myLocation = new LocationData();
71+
myLocation.setLatLng(latLng);
72+
}
73+
74+
@Override
75+
public void onStatusChanged(String s, int i, Bundle bundle) {
76+
77+
}
78+
79+
@Override
80+
public void onProviderEnabled(String s) {
81+
82+
}
83+
84+
@Override
85+
public void onProviderDisabled(String s) {
86+
Toast.makeText(mContext,"Provider Disabled",Toast.LENGTH_SHORT).show();
87+
}
88+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.pulkit4tech.privy.data;
2+
3+
import com.google.android.gms.maps.model.LatLng;
4+
5+
/**
6+
* Created by pulkit on 01/01/17.
7+
*/
8+
9+
public class LocationData {
10+
private LatLng latLng;
11+
private String Description;
12+
13+
public LatLng getLatLng() {
14+
return latLng;
15+
}
16+
17+
public void setLatLng(LatLng latLng) {
18+
this.latLng = latLng;
19+
}
20+
21+
public String getDescription() {
22+
return Description;
23+
}
24+
25+
public void setDescription(String description) {
26+
Description = description;
27+
}
28+
}

0 commit comments

Comments
 (0)