public void init(NetResultCallBack callBack) {
this.callBack = callBack;
try {
mLocationClient = new LocationClient(AppApplication.CONTEXT); // 聲明LocationClient類 這里必須的上下文必須是Application的Context不然會出現加載條一直加載情況
mLocationClient.registerLocationListener(myListener); // 注冊監聽函數
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);
option.setAddrType("all");// 返回的定位結果包含地址信息
option.setCoorType("bd09ll");// 返回的定位結果是百度經緯度,默認值gcj02
option.setScanSpan(0);// 設置發起定位請求的間隔時間為5000ms
option.disableCache(true);// 禁止啟用緩存定位
option.setIsNeedLocationDescribe(true);
mLocationClient.setLocOption(option);
mLocationClient.start();
if (mLocationClient != null) {
ConnectivityManager conn = (ConnectivityManager) BaseActivity.CONTEXT.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = conn.getActiveNetworkInfo();
if (info != null && info.isAvailable()) {
mLocationClient.requestLocation();
} else {
mLocationClient.requestOfflineLocation();
}
}
} catch (Exception e) {
e.printStackTrace();
if (callBack != null) {
callBack.onErr("定位失敗,請開啟GPS定位權限", "locationHelper");
}
}
}
百度定位在第二次請求的時候 走到locationClient.start()沒反應解決辦法是把 locationClient = new LocationClient(this); 改成 locationClient = new LocationClient(getApplicationContext()); 就可以了。如果沒有getApplicationContext()可用在Application中聲明上下文對象即可。