全网真正解决百度定位只定位一次的问题(亲测有效)

全网真正解决百度定位只定位一次的问题(亲测有效)

关于百度定位初始化完之后,只回调一次BDAbstractLocationListener的问题,也是困扰了我半天,网上找了半天答案,基本都说是配置的问题,但是我看了下我的配置,我敢发四绝对没问题,那么配置没问题,再有可能就是sha1获取的有问题,但是我找了其他的工具获取sha1,跟我之前按照官网获取的sha1一模一样,所以全网给的答案都并不能真正解决定位的问题,真正解决的办法看下面,亲测有效
就是初始化完LocationClient后,“一定给他变成成员变量”,一定给他变成成员变量"一定给他变成成员变量",重要的事情说三遍,否则就只会定位一次,再也定位不了了,以下是我的完整代码:

public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
    private LocationClient locationClient;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState)
        //初始化百度定位
        initBaiduSDK();
    }

    private void initBaiduSDK() {
        locationClient = new LocationClient(getApplicationContext());
        locationClient.registerLocationListener(bdAbstractLocationListener);

        LocationClientOption locationClientOption = new LocationClientOption();
        //设置是否需要地址信息,默认不需要。设置为true后,可以再listener中通过getCountry()、getProvice()、getCity()等方法得到具体的地区街道信息
        locationClientOption.setIsNeedAddress(true);
        locationClientOption.setCoorType("bd09ll");//设置坐标类型
        locationClient.setLocOption(locationClientOption);
        locationClient.start();
    }

    BDAbstractLocationListener bdAbstractLocationListener = new BDAbstractLocationListener() {
        @Override
        public void onReceiveLocation(BDLocation bdLocation) {
            StringBuilder sb = new StringBuilder();
            sb.append("纬度:").append(bdLocation.getLatitude()).append("\n");
            sb.append("经度:").append(bdLocation.getLongitude()).append("\n");
            sb.append("定位方式:");
            sb.append("地址:").append(bdLocation.getCountry()).append(bdLocation.getProvince()).append(bdLocation.getCity()).append(bdLocation.getAddrStr());
            if (bdLocation.getLocType() == BDLocation.TypeGpsLocation) {
                sb.append("GPS");
            } else if (bdLocation.getLocType() == BDLocation.TypeNetWorkLocation) {
                sb.append("网络");
            }
            Logger.i("定位信息:" + bdLocation.getLatitude());
            Logger.i("定位信息:" + sb);
        }
    };
    }

至于为啥会这样,也许是百度SDK的bug

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值