2

根据Location Strategies,GPS 最准确,但会很快消耗电池电量。该文件建议应考虑电池电量,但从该文件中没有显示使用不当的例子。
有人可以提供这样的例子。
我之所以问,是因为我正在考虑一个用例,例如,如果一天捕获用户位置 16 次(以 30 分钟为间隔)。那会是一个糟糕的用例模型吗?

4

1 回答 1

1

编辑

这是为位置请求设置超时功能的一个非常基本的示例。

public class MyLocationManager implements LocationListener {

    private static final int LOCATION_UPDATE = 1;

    private LocationManager mLocationManager;
    private Handler mHandler;

    public MyLocationManager(Context context) {
        mLocationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
        mHandler = new Handler(new Handler.Callback() {
            @Override
            public boolean handleMessage(Message msg) {
                switch (msg.what) {
                    case LOCATION_UPDATE:
                        stopLocationUpdates();
                        return true;
                    default:
                        return false;
                }
            }
        });
    }

    public void stopLocationUpdates() {
        mLocationManager.removeUpdates(this);
        mHandler.removeMessages(LOCATION_UPDATE);
    }

    public void requestLocationUpdates(long timeOut) {
        mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
        mHandler.sendEmptyMessageDelayed(LOCATION_UPDATE, timeOut);
    }

    @Override
    public void onLocationChanged(Location location) {
        stopLocationUpdates();
        //YOUR CODE HERE
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {

    }

    @Override
    public void onProviderEnabled(String provider) {

    }

    @Override
    public void onProviderDisabled(String provider) {

    }
}

回答您帖子的标题:它因设备而异。

要了解更多细节,这实际上取决于您如何设置请求。在您的情况下,您说您希望以 30 分钟的间隔获得 16 个点,如果您在请求的一秒钟内收到所有点,这不会对功率产生太大影响。但是,您从未指定等待位置到达的时间或您请求的位置点的准确性应该是多少。所以理论上,如果你在地下室寻找 10m 的精度点,你可以让 GPS 模块无限期地运行。

我的推荐

在完全无法使用之前找出您需要的位置点的最大精度,并具有可靠的超时功能。GPS 本身不会耗尽电池,它是设备处于唤醒状态以接收位置和 GPS 模块开启的组合,这会杀死电池寿命。将设备保持开启总共约 2 分钟以接收 16 分(约 8 秒超时)对电池的影响应该可以忽略不计。

于 2017-06-27T23:21:32.970 回答