Commit c6e1a7de authored by Sajal Narang's avatar Sajal Narang Committed by GitHub

Merge branch 'master' into master

parents 05d0d2cb 176a3754
package in.ac.iitb.gymkhana.iitbapp; package in.ac.iitb.gymkhana.iitbapp;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle; import android.os.Bundle;
import android.support.design.widget.NavigationView; import android.support.design.widget.NavigationView;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentTransaction;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.GravityCompat; import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.ActionBarDrawerToggle;
...@@ -129,9 +133,16 @@ public class MainActivity extends AppCompatActivity ...@@ -129,9 +133,16 @@ public class MainActivity extends AppCompatActivity
updateFragment(timetableFragment); updateFragment(timetableFragment);
break; break;
case R.id.nav_map: case R.id.nav_map:
MapFragment mapFragment = new MapFragment(); if (ContextCompat.checkSelfPermission(MainActivity.this,
updateFragment(mapFragment); Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
} else
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 0);
break; break;
case R.id.nav_contacts: case R.id.nav_contacts:
ContactsFragment contactsFragment = new ContactsFragment(); ContactsFragment contactsFragment = new ContactsFragment();
updateFragment(contactsFragment); updateFragment(contactsFragment);
...@@ -153,6 +164,16 @@ public class MainActivity extends AppCompatActivity ...@@ -153,6 +164,16 @@ public class MainActivity extends AppCompatActivity
transaction.replace(R.id.framelayout_for_fragment, fragment, fragment.getTag()); transaction.replace(R.id.framelayout_for_fragment, fragment, fragment.getTag());
transaction.commit(); transaction.commit();
} }
public void onRequestPermissionsResult(int requestCode,
String[] permissions,
int[] grantResults) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
MapFragment mapFragment = new MapFragment();
updateFragment(mapFragment);
} else {
Toast toast = Toast.makeText(MainActivity.this, "Need Permission", Toast.LENGTH_SHORT);
toast.show();
}
}
} }
package in.ac.iitb.gymkhana.iitbapp.fragment; package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.Manifest;
import android.content.pm.PackageManager;
import android.graphics.PorterDuff;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle; import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.OnMapReadyCallback;
...@@ -23,18 +14,12 @@ import com.google.android.gms.maps.model.LatLng; ...@@ -23,18 +14,12 @@ import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.LatLngBounds; import com.google.android.gms.maps.model.LatLngBounds;
import com.google.android.gms.maps.model.MarkerOptions; import com.google.android.gms.maps.model.MarkerOptions;
import java.util.List;
import in.ac.iitb.gymkhana.iitbapp.R; import in.ac.iitb.gymkhana.iitbapp.R;
import static android.content.Context.LOCATION_SERVICE;
public class MapFragment extends Fragment implements OnMapReadyCallback { public class MapFragment extends Fragment implements OnMapReadyCallback {
SupportMapFragment gMapFragment; SupportMapFragment gMapFragment;
GoogleMap googleMap; GoogleMap googleMap;
FloatingActionButton locationButton;
Location currentLocation;
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
...@@ -47,72 +32,22 @@ public class MapFragment extends Fragment implements OnMapReadyCallback { ...@@ -47,72 +32,22 @@ public class MapFragment extends Fragment implements OnMapReadyCallback {
return view; return view;
} }
private Location getLastKnownLocation() {
LocationManager mLocationManager = (LocationManager) getContext().getSystemService(LOCATION_SERVICE);
List<String> providers = mLocationManager.getProviders(true);
Location bestLocation = null;
for (String provider : providers) {
Location l = mLocationManager.getLastKnownLocation(provider);
if (l == null) {
continue;
}
if (bestLocation == null || l.getAccuracy() < bestLocation.getAccuracy()) {
bestLocation = l;
}
}
return bestLocation;
}
@Override @Override
public void onMapReady(GoogleMap gMap) { public void onMapReady(GoogleMap gMap) {
//TODO: Handle Location permissions in MainActivity, permission required to view fragment
googleMap = gMap; googleMap = gMap;
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { googleMap.setMyLocationEnabled(true);
googleMap.setMyLocationEnabled(true); googleMap.getUiSettings().setMyLocationButtonEnabled(true);
googleMap.getUiSettings().setMyLocationButtonEnabled(false); googleMap.getUiSettings().setZoomGesturesEnabled(true);
googleMap.getUiSettings().setZoomGesturesEnabled(true);
} else {
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 0);
}
LatLngBounds iitbBounds = new LatLngBounds(new LatLng(19.1249000, 72.9046000), new LatLng(19.143522, 72.920000)); LatLngBounds iitbBounds = new LatLngBounds(new LatLng(19.1249000, 72.9046000), new LatLng(19.143522, 72.920000));
googleMap.setLatLngBoundsForCameraTarget(iitbBounds); googleMap.setLatLngBoundsForCameraTarget(iitbBounds);
googleMap.setMaxZoomPreference(30); googleMap.setMaxZoomPreference(30);
googleMap.setMinZoomPreference(14.5f); googleMap.setMinZoomPreference((float) 14.5);
// Position the map's camera near Mumbai // Position the map's camera near Mumbai
LatLng iitb = new LatLng(19.1334, 72.9133); LatLng iitb = new LatLng(19.1334, 72.9133);
googleMap.addMarker(new MarkerOptions().position(iitb).title("Marker in IITB")); googleMap.addMarker(new MarkerOptions().position(iitb)
.title("Marker in IITB"));
googleMap.moveCamera(CameraUpdateFactory.newLatLng(iitb)); googleMap.moveCamera(CameraUpdateFactory.newLatLng(iitb));
googleMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
@Override
public void onCameraMove() {
locationButton.getDrawable().setColorFilter(ContextCompat.getColor(getContext(), R.color.colorGray), PorterDuff.Mode.SRC_IN);
}
});
locationButton = (FloatingActionButton) getActivity().findViewById(R.id.location);
locationButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentLocation = getLastKnownLocation();
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()), 17);
googleMap.animateCamera(cameraUpdate);
locationButton.getDrawable().setColorFilter(ContextCompat.getColor(getContext(), R.color.colorPrimary), PorterDuff.Mode.SRC_IN);
}
});
}
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
googleMap.setMyLocationEnabled(true);
googleMap.getUiSettings().setMyLocationButtonEnabled(false);
googleMap.getUiSettings().setZoomGesturesEnabled(true);
} else {
Toast toast = Toast.makeText(getActivity(), "Need Permission", Toast.LENGTH_SHORT);
toast.show();
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment