真正解决百度定位只定位一次的问题

真正解决百度定位只定位一次的问题
关于百度定位初始化完之后,只回调一次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);
        }
    };
    }

你可能感兴趣的:(真正解决百度定位只定位一次的问题)