微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 获取最后一个位置,这么多方法

当我检查Android教程和/或Android官方文档时,似乎有多种不同的方式来查询位置.我很困惑,因为我不确定哪种方式是正确的方式或文档是否过时.

例如,

1)Googleapiclient:通过这种方式,它使用Google Api客户端

 mGoogleapiclient = new Googleapiclient.Builder(this)
                    .addConnectionCallbacks(this)
                    .addOnConnectionFailedListener(this)
                    .addApi(LocationServices.API)
                    .build();

然后它会查询这样的位置

LocationServices.FusedLocationApi.getLastLocation(mGoogleapiclient);

2)位置管理器:这种方式使用位置管理器

LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
Location lastKNownLocation = locationManager.getLastKNownLocation(locationProvider);

3)FusedLocationApi(第2种风格):

mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
mFusedLocationClient.getLastLocation()
        .addOnSuccessListener(this, new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                // Got last kNown location. In some rare situations, this can be null.
                if (location != null) {
                    // Logic to handle location object
                }
            }
        });

我们应该采用哪种方式?

解决方法:

FusedLocationProvider是现在获取Android位置的最佳方式.
您已经提到了两种使用FusedLocationManager的方法

LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
Location lastKNownLocation = locationManager.getLastKNownLocation(locationProvider);

上面这种方法的问题是它将为您提供最后的已知位置,也可能为null,因此您还需要检查null.

 mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
 mFusedLocationClient.getLastLocation()
    .addOnSuccessListener(this, new OnSuccessListener<Location>() {
        @Override
        public void onSuccess(Location location) {
            // Got last kNown location. In some rare situations this can be null.
            if (location != null) {
                // Logic to handle location object
            }
        }
    });

在上面的这种方法中,您正在注册一个fusionlocationListener,它将成功注册调用onSuccess方法,并将提供位置对象,这里也可能为null.通常在设备重启情况下,最后一个已知位置为null.还有一些其他情况也.
我建议你使用第二种方法,因为它使用fuselocationprovider来获取最后的已知位置,因为它更有效.

原文地址:https://www.jb51.cc/android/1075115.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐