Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#3 : Added Location Button and current Location Services #6

Merged
merged 1 commit into from
Jan 2, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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;
}
}