登录 立即注册
安币:

关于百度定位获取的问题,急急急!!![复制链接]

在做一个天气预报的app,希望通过百度定位SDK获取当前所在的城市数据。
根据实例代码构建了一个BDLocationUtil定位的工具类:
public class BDLocationUtil {

public Context context;
public static String CITY = "";
public LocationClient mLocationClient = null;
private BDLocationListener myListener = new MyLocationListener() {
};

public BDLocationUtil(Context context) {
    this.context = context;
}

public void doLocation(){
    //声明LocationClient类
    mLocationClient = new LocationClient(context.getApplicationContext());
    //注册监听函数
    mLocationClient.registerLocationListener(myListener);
    initLocation();
}

private void initLocation() {
    LocationClientOption option = new LocationClientOption();
    option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
    //可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
    option.setIsNeedAddress(true);
    //可选,是否需要地址信息,默认为不需要,即参数为false
    //如果开发者需要获得当前点的地址信息,此处必须为true
    option.setOpenGps(true);
    mLocationClient.setLocOption(option);
}
    
private class MyLocationListener implements BDLocationListener {
    public void onReceiveLocation(BDLocation bdLocation) {
        String location;
        location = bdLocation.getCity();
        CITY = location.replace("市","");        //去掉多余的“市”字
    }
}

}
之后在MainActiviy中的onCreate方法中调用如下:
private BDLocationUtil bdLocationUtil = new BDLocationUtil(MainActivity.this);

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    bdLocationUtil.doLocation();//开启定位
    bdLocationUtil.mLocationClient.start();//开始定位
    city_now = BDLocationUtil.CITY;
                initView();//初始化界面
    getTemperature();//获取天气数据
}

问题是,在MainActiviy的BDLocationUtil.CITY获取的数据为空???请问如何解决???

hz348618754 882查看 · 10回复 · 2018-7-29 16:52 有用(0
共10个回答
liu6362881 2018-7-30 14:22 回复

hjkh

wer2300 2018-7-31 11:43 回复

开启了定位权限没

liu6362881 2018-7-31 14:05 回复

okdffddf

hz348618754 2018-7-31 14:54 回复
wer2300 发表于 2018-7-31 11:43
开启了定位权限没

开启的,开启调试后location = bdLocation.getCity();
        CITY = location.replace("市","");这两句都可以获取到定位数据,但是在MainActivity中调用的时候就为空,很郁闷。
wer2300 2018-7-31 16:38 回复
hz348618754 发表于 2018-7-31 14:54
开启的,开启调试后location=bdLocation.getCity();CITY=location.replace("市","");这两句都可以获取到定 ...

那就不用调用方式,在构造的时候把city_now传过去试下
似水流年留回忆 2018-8-3 14:59 回复

初始化了吗 SDKInitializer.initialize(getApplicationContext());

hz348618754 2018-8-3 21:31 回复
似水流年留回忆 发表于 2018-8-3 14:59
初始化了吗SDKInitializer.initialize(getApplicationContext());

初始化了的,只是不懂为什么在定位的Util类中已获取到的值传到MainActivity中变成了null?
liu6362881 2018-8-6 14:09 回复

dsf fd da

hz348618754 2018-8-14 22:52 回复

测试了一下,感觉是因为百度的定位代码块获取到数据是在其它代码之后,所以之前的代码获取的数据一直为null,求大神如何解决谢谢!!!

lijiazhen1201 2018-9-4 14:18 回复

定位完发广播 把数据传过去

需要登入后才可以评论 登录 | 立即注册

联系我们
关闭
合作电话:
15618560077
Email:
805941275@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

返回顶部 返回版块