0

我使用 GPS 测量行进距离。问题是 GPS 有时长时间不更新位置变化。

有什么解决办法吗?

    locationListen = new LocationListener() {

        public void onLocationChanged(Location currentLocation) {
            if (prevLocation != null){
                test = currentLocation.distanceTo(prevLocation);
                distance+=test;
            }
            prevLocation = currentLocation;

        }

        public void onStatusChanged(String provider, int status, Bundle b) {
            switch (status) {
            case LocationProvider.OUT_OF_SERVICE:
                Toast.makeText(MainActivity.this,
                        "Status Changed: Out of Service " + provider,
                        Toast.LENGTH_SHORT).show();
                break;
            case LocationProvider.TEMPORARILY_UNAVAILABLE:
                Toast.makeText(
                        MainActivity.this,
                        "Status Changed: Temporarily Unavailable "
                                + provider, Toast.LENGTH_SHORT).show();
                break;
            case LocationProvider.AVAILABLE:
                Toast.makeText(MainActivity.this,
                        "Status Changed: Available " + provider,
                        Toast.LENGTH_SHORT).show();
                break;
            }
        }

        public void onProviderDisabled(String s) {
        }

        public void onProviderEnabled(String s) {
        }
    };

    startOperation.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View but) {
            if (startOperation.getText().equals("Start Calculating Fare")) {
                mHandler.post(run);
                myManager.requestLocationUpdates(
                                LocationManager.GPS_PROVIDER, 1000, 10,
                                locationListen);
                startOperation.setText("Stop the calculations");
            } else {
                mHandler.removeCallbacks(run);
                myManager.removeUpdates(locationListen);
                finalInfos();
            }
        }
    });

我的位置监听器代码。它只是使用 GPS 更新。正如我所说,GPS有时太长而无法检测到位置

4

1 回答 1

0

您在代码中明确请求仅 GPS 的位置提供程序。这迫使 Android 仅依赖 GPS,并具有其所有缺点(例如,GPS 需要清晰的天空视野才能工作)。

为了获得更可靠的设备跟踪,您必须使用更可靠和灵活的定位策略,根据变化的外部场景(室内/室外等)相应地更改当前位置提供者。更好的是,您可以同时使用一整套不同的位置提供程序(即:“混合”定位系统)。

看看这些以前回答过的 SO 问题:

同时拥有多个位置提供商

为多个提供者使用 requestLocationUpdates

以及 Android 文档的这些页面:

http://developer.android.com/guide/topics/location/strategies.html

http://developer.android.com/training/basics/location/locationmanager.html

于 2012-10-02T08:21:46.263 回答