Skip to content

Commit

Permalink
Merge pull request #49 from pulkit4tech/bug
Browse files Browse the repository at this point in the history
#48 : Prompt user to turn on GPS for better results
  • Loading branch information
pulkit4tech authored Jan 15, 2017
2 parents 2b04a76 + a7710dc commit 4fd5464
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 13 deletions.
2 changes: 1 addition & 1 deletion app/src/main/java/com/pulkit4tech/privy/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
import com.pulkit4tech.privy.data.json.PostPrivyRequest;
import com.pulkit4tech.privy.fragments.PrivyMapsFragment;
import com.pulkit4tech.privy.utilities.NetworkRequest;
import com.pulkit4tech.privy.utilities.NoLocationPermission;
import com.pulkit4tech.privy.fragments.NoLocationPermission;

import java.util.ArrayList;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package com.pulkit4tech.privy.utilities;
package com.pulkit4tech.privy.fragments;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.pulkit4tech.privy.R;

Expand All @@ -14,6 +15,9 @@ public class NoLocationPermission extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.error_msg_layout, container, false);
View view = inflater.inflate(R.layout.error_msg_layout, container, false);
TextView errorMsg = (TextView) view.findViewById(R.id.error_msg);
errorMsg.setText(getString(R.string.location_permission_failed));
return view;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ public class PrivyMapsFragment extends Fragment implements OnMapReadyCallback {
private Context mContext;
private CameraPosition MY_LOCATION_CAMERA_POS;
private HashMap<String, MarkerData> universalMarkers;
private LocationServices locationService;

// My location
private LocationData myLocationData;
Expand Down Expand Up @@ -119,7 +120,9 @@ public boolean onMyLocationButtonClick() {
}

private void getMyCurrentLocation() {
LocationServices locationService = new LocationServices(mContext);
if(locationService == null)
locationService = new LocationServices(mContext);

myLocationData = locationService.getCurrentLocation();
if (myLocationData != null) {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
package com.pulkit4tech.privy.utilities;

import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
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.provider.Settings;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.widget.Toast;
import android.view.View;

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

import com.pulkit4tech.privy.R;
import com.pulkit4tech.privy.data.LocationData;

import static android.content.Context.LOCATION_SERVICE;
Expand All @@ -28,12 +33,10 @@ public LocationServices(Context 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);
if(!checkGPSon(locationManager)){
promptToEnableGPS();
}
Criteria criteria = setCriteria();
String bestProvider = locationManager.getBestProvider(criteria, true);
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// ActivityCompat#requestPermissions
Expand All @@ -52,6 +55,20 @@ public LocationData getCurrentLocation() {
return myLocation;
}

private void promptToEnableGPS() {
snackMsgWithAction(mContext.getString(R.string.enable_gps_msg));
}

private Criteria setCriteria() {
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
return criteria;
}


@Override
public void onLocationChanged(Location location) {
Expand All @@ -70,11 +87,32 @@ public void onStatusChanged(String s, int i, Bundle bundle) {

@Override
public void onProviderEnabled(String s) {

snackMsg(mContext.getString(R.string.gps_enable_request_success));
}

@Override
public void onProviderDisabled(String s) {
Toast.makeText(mContext, "Provider Disabled", Toast.LENGTH_SHORT).show();
promptToEnableGPS();
}

private boolean checkGPSon(LocationManager manager){
return manager.isProviderEnabled(LocationManager.GPS_PROVIDER);
}

private void snackMsg(String msg) {
Snackbar.make(((Activity) mContext).findViewById(R.id.coordinator_layout), msg, Snackbar.LENGTH_LONG).show();
}

private void snackMsgWithAction(String msg){
Snackbar snackbar = Snackbar.make(((Activity) mContext).findViewById(R.id.coordinator_layout),msg,Snackbar.LENGTH_LONG);
snackbar.setAction(R.string.turn_on, new View.OnClickListener() {
@Override
public void onClick(View view) {
// start intent to turn on GPS
Intent onGPS = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
mContext.startActivity(onGPS);
}
});
snackbar.show();
}
}
3 changes: 3 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,7 @@
<string name="app_feedback_mail">[email protected]</string>
<string name="feedback_subject">Feedback</string>
<string name="send_feedback_msg">Send Feedback:</string>
<string name="enable_gps_msg">Please enable GPS for better results.</string>
<string name="gps_enable_request_success">Thank you for enabling gps.</string>
<string name="turn_on">TURN ON</string>
</resources>

0 comments on commit 4fd5464

Please sign in to comment.