Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get user current Location android

Hi I am developing android application in which I want users current location which good enough accurate. So i have 2 options to implement this one

Retrieving the Current Location. http://developer.android.com/training/location/retrieve-current.html

and

Receiving Location Updates http://developer.android.com/training/location/receive-location-updates.html

So here is my problem. I gone through Retrieving the Current Location and I realize at the end it gives me users last best known location. But my requirement is users current location.

So I move towards the Receiving Location Updates. I though I can get first update and i will stop updates. But here also at first time it gives me last location not new one. and after first reading it start gps to give successive updates. But I am interested in first update only.

So I need good solution which will give me users accurate current location. Either using gps or network or wifi any one which is available.

If I am doing anything wrong please correct. Need Help. thank you.

like image 965
nilkash Avatar asked Oct 20 '22 21:10

nilkash


1 Answers

So this is how I get the users current location to use for my Google maps.

if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
            mMap.setMyLocationEnabled(true);
            Criteria criteria = new Criteria();
            LocationManager locationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
            String provider = locationManager.getBestProvider(criteria, false);
            Location location = locationManager.getLastKnownLocation(provider);
            double lat =  location.getLatitude();
            double lng = location.getLongitude();
            LatLng coordinate = new LatLng(lat, lng);
            CameraUpdate yourLocation = CameraUpdateFactory.newLatLngZoom(coordinate, 13);
            mMap.animateCamera(yourLocation);

        } else {
            final AlertDialog alertDialogGPS = new AlertDialog.Builder(getActivity()).create();

            alertDialogGPS.setTitle("Info");
            alertDialogGPS.setMessage("Looks like you have not given GPS permissions. Please give GPS permissions and return back to the app.");
            alertDialogGPS.setIcon(android.R.drawable.ic_dialog_alert);
            alertDialogGPS.setButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                    Intent intentSettings = new Intent(Settings.ACTION_APPLICATION_SETTINGS);
                    startActivity(intentSettings);
                    alertDialogGPS.dismiss();
                }

            });

            alertDialogGPS.show();
        }
like image 95
James Robert Singleton Avatar answered Oct 23 '22 21:10

James Robert Singleton