首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初始位置的FusedLocationClient与LocationManager

初始位置的FusedLocationClient与LocationManager
EN

Stack Overflow用户
提问于 2018-04-04 19:06:34
回答 1查看 6.3K关注 0票数 4

在安卓系统中选择LocationManagerFusedLocationClient相当容易,选择FusedLocationClient就可以了,因为它会节省电力,并且被推荐为最佳实践。

然而,在这种情况下,我必须获取设备的“初始位置”,或者仅仅是当前/最近已知的位置。在三种不同的场景中,FusedLocationClient可能会认为是空的。(see here)。

当然,当请求位置更新时,这种情况不会改变,直到设备的实际位置发生变化。(here)

在android framework提供的LocationManager中,你可以通过简单地调用mLocationManager.getLastKnownLocation(provider);来轻松地获取最近已知的位置,但是使用它来监听更新需要耗费大量的电力。

这里最好的解决方案是什么?将两者结合起来是否合理?如果是,如何仅使用LocationManager获取当前位置,然后禁用它以节省电力?

EN

回答 1

Stack Overflow用户

发布于 2018-04-04 19:18:35

你可以通过this document

代码语言:javascript
复制
private FusedLocationProviderClient mFusedLocationClient;
private LocationRequest mLocationRequest;
mLocationRequest = LocationRequest.create()
            .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
            .setInterval(60000) ;     // 10 seconds, in milliseconds
          .setFastestInterval(10000); // 1 second, in milliseconds
if(mFusedLocationClient == null) {
        mFusedLocationClient = LocationServices.getFusedLocationProviderClient(mContext);
        mFusedLocationClient.requestLocationUpdates(mLocationRequest,
                locationCallback,
                null /* Looper */);
    }
 private LocationCallback locationCallback = new LocationCallback(){
    @Override
    public void onLocationResult(LocationResult locationResult) {
        super.onLocationResult(locationResult);
        Location location = locationResult.getLastLocation();
        if(location != null) {...you can get updated location
}}
//REMOVE LOCATION UPDATES
mFusedLocationClient.removeLocationUpdates(locationCallback);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49649432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档