5

嗨,我正在开发 android 应用程序,我希望用户当前位置足够准确。所以我有两个选项来实现这个

检索当前位置http://developer.android.com/training/location/retrieve-current.html

接收位置更新 http://developer.android.com/training/location/receive-location-updates.html

所以这是我的问题。我经历了检索当前位置,最后我意识到它为我提供了用户最后一个最知名的位置。但我的要求是用户当前位置。

所以我转向接收位置更新。我虽然可以得到第一次更新,但我会停止更新。但在这里也是第一次它给了我最后一个位置而不是新位置。并在第一次阅读后启动 gps 以提供连续更新。但我只对第一次更新感兴趣。

所以我需要好的解决方案,它会给我用户准确的当前位置。使用 gps 或网络或 wifi 任何可用的。

如果我做错了什么,请纠正。需要帮忙。谢谢你。

4

2 回答 2

2

所以这就是我如何让用户当前位置用于我的谷歌地图。

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();
        }
于 2016-09-16T06:33:09.550 回答
1

您需要的GPS 监听器解决方案。

添加到位置侦听器,但选择 GPS。只有遗​​嘱public void onLocationChanged(Location loc)有当前位置。

于 2013-11-01T07:57:42.790 回答