获取最准确位置的方法

TMH*_*TMH 1 android android-location

在我的应用程序中,我有一个位置监听器,它记录了位置的准确性,并在我所在的地图上放置了一个标记,但是精确度总是在900左右,我的位置在我实际上的0.2到0.5英里之间.如果我加载谷歌地图,它会在几米内获得我的位置.

有什么方法可以确保准确的位置?我在Manifest中拥有这些权限

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)

这是我的倾听者

LocationListener searchUsingLocation = new LocationListener() {
                @Override
                public void onLocationChanged(Location location) {
                    float accuracy = location.getAccuracy();
                    Log.d("FUApp", "Location changed: "+accuracy);
                    List<JSONObject> centres = sortVenuesByNearest(location);
                    try {
                        populateList(centres);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    setRefreshActionButtonState(false, R.id.search_using_location);

                }

                @Override
                public void onStatusChanged(String s, int i, Bundle bundle) {

                }

                @Override
                public void onProviderEnabled(String s) {

                }

                @Override
                public void onProviderDisabled(String s) {

                }
            };
            Log.d("FUApp", "Starting request");
            locationService.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 50, 5, searchUsingLocation);
Run Code Online (Sandbox Code Playgroud)

编辑:此外我的手机设置,访问位置,GPS卫星通信,Wi-Fi和移动网络位置也在.

Phi*_*ard 10

Android试图掩盖我们硬件的现实,但实际上只有两个位置提供商:GPS和网络.GPS位置很慢,并非所有设备都有,但它是准确的.网络位置更快,几乎所有设备都支持,但准确性较低.

如果你知道你想要哪个提供商,最好明确指定它.您的应用程序可以与任一提供商合作,您可能想要让用户选择他想要使用的内容.不要依赖Android告诉你的东西,因为大多数便宜的设备都是可怕的配置,并且可能骗你.