百度sdk定位不成功,关闭定位
公司项目有用到百度地图,登录的时候需要定位一次,获取登录的地址信息,在手机无法连接外网的情况,也就无法访问百度定位服务器的时候,定位的回调函数要30秒以上才能返回结果,于是去仔细查百度api,发现没有设置回调函数时间的方法或者属性.
解决办法就是把回调函数参数赋值给实例变量
/**
* 实现实位回调监听,如果访问百度定位服务器成功就会把结果赋值给location
* 否则这个location为null
*/
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation db) {
location=db;
}
}
开启一个延时2.5秒的线程,在线程中判断回调函数有没有调用......如果手机能连接外网并且能成功访问百度服务器的话,2秒左右能返回结果
//延迟2.5秒执行locationResult()
//正常情况下访问百度定位服务器只需要2秒
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if(null==location){//为空表示百度sdk定位失败 }else{//定位成功 }
}
}, 2500);
完整代码如下:
package com.baidu.baidulocationdemo; import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption; import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView; public class MainActivity extends Activity {
public LocationClient locationClient;
private BDLocation location; private TextView mLocationResult; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); mLocationResult=(TextView) findViewById(R.id.location_result);
findViewById(R.id.start_location).setOnClickListener(clickListener);
findViewById(R.id.stop_location).setOnClickListener(clickListener); LocationClientOption option = new LocationClientOption();
option.setCoorType("bd09ll");//设置坐标类型
locationClient = new LocationClient(this);
locationClient.registerLocationListener(new MyLocationListener());
locationClient.setLocOption(option);
} private OnClickListener clickListener=new OnClickListener(){
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.start_location:
locationClient.start(); //延迟2.5秒执行locationResult()
//正常情况下访问百度定位服务器只需要2秒
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
locationResult();
}
}, 2500); break;
case R.id.stop_location:
distory();
break;
}
}
}; /**
* 实现实位回调监听,如果访问百度定位服务器成功就会把结果赋值给location
* 否则这个location为null
*/
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation db) {
location=db;
}
} private void locationResult(){
if(null==location){//为空表示百度sdk定位失败
location=new BDLocation();
}
//Receive Location
StringBuffer sb = new StringBuffer(256);
sb.append("time : ");
sb.append(location.getTime());
sb.append("\nerror code : ");
sb.append(location.getLocType());
sb.append("\nlatitude : ");
sb.append(location.getLatitude());
sb.append("\nlontitude : ");
sb.append(location.getLongitude());
sb.append("\nradius : ");
sb.append(location.getRadius()); if (mLocationResult != null)
mLocationResult.setText(sb.toString()); Log.i("BaiduLocationApiDem", sb.toString());
distory();
} private void distory(){//关闭定位
if (locationClient != null && locationClient.isStarted()) {
locationClient.stop();
}
}
}
效果图如下:
推荐下自己创建的android QQ群:202928390
欢迎大家的加入.
百度sdk定位不成功,关闭定位的更多相关文章
- 发现最新版百度Android 定位SDK v6.1.3 网络定位bug
对于百度地图已经实在忍无可忍了,实验室两年以前的一个项目用到了百度地图,以前师兄毕业了,我来维护这个破项目,百度地图推出新版本出来后,老版本的api不能用了,不能做到向下兼容吗?换掉少量的api也就算 ...
- Android开发之位置定位详解与实例解析(GPS定位、Google网络定位,BaiduLBS(SDK)定位)
在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便.定位一般分为三种发方案:即GPS定位.Google网络定位以及基站定位 最简单的手机定位方式当然是通过GP ...
- Android 百度地图开发(二)--- 定位功能之MyLocationOverlay,PopupOverlay的使用
转载请注明出处http://blog.csdn.net/xiaanming/article/details/11380619 这一篇文章主要讲解的是百度地图的定位功能,然后还有MyLocationOv ...
- [android学习]__使用百度地图开放api编写地图定位app
前言 在前面我已经记录关于如何使用百度地图api,以及如何配置相关的androidstudio配置了,接下来将记录如何使用百度地图api开发简单的地图定位apk,我将决定不定期持续更新本篇笔记,在每个 ...
- 百度地图----->地图类型、定位模式、实时交通、我的位置、加入覆盖物、覆盖物详情及提示
在百度地图开发平台 http://developer.baidu.com/map/index.php? title=androidsdk 进行创建应用,获取应用的AK,在进行下载BaiduLBS_An ...
- Android定位开发之百度定位、高德定位、腾讯定位,三足鼎立一起为我所用!
这几天的项目不是非常紧.于是想为未来可能要做的项目做一些技术储备. 下一个项目非常有可能是定位开发,须要用到手机定位功能,于是查了查如今比較流行的第三方定位,最火的基本上就是百度定位>高德定位& ...
- 百度地图API的IP定位城市和浏览器定位(转)
百度地图API提供了Geolocation 和 LocalCity两个服务类. 这俩API可以分别供用户在JavaScript中进行定位和城市确认. 1 本质上,Geolocation这个类是使用了支 ...
- android的百度地图开发(二) 定位
参考:http://blog.csdn.net/mr_wzc/article/details/51590485 第一步,初始化LocationClient类 //获取地图控件引用 mMapView = ...
- (转载) 百度地图工具类封装(包括定位,附近、城市、范围poi检索,反地理编码)
目录视图 摘要视图 订阅 赠书 | 异步2周年,技术图书免费选 程序员8月书讯 项目管理+代码托管+文档协作,开发更流畅 百度地图工具类封装(包括定位,附近.城市.范围poi检索, ...
随机推荐
- [RxJava^Android]项目经验分享 --- 递归实现
介绍一下业务逻辑:获取接口数据,根据接口内容判断是否需要继续获取数据. 本文使用递归思路,通过RxJava来实现此功能,获取数据的Observable直接用模拟的Observable.just()替代 ...
- Drawing in Singapore
说到画画,其实很多人都会画.只是很多人都把这种潜能给埋起来了,没有特意的去开发出来.且不论画的好与不好,好看与不好看.自己把自己所想的东西方式表达出来,画画是一种方式.我不是科班出身,全凭自己感觉来的 ...
- eclipse常见问题
使用eclipse进入断点,当弹出"Confir Perspective Switch"视图时,选择"Yes".之后每次进入断点都会自动切换到debug视图. ...
- Linux上的free命令详解、swap机制
Linux上的free命令详解 解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free ...
- Data对象
var myDate = new Date(); Date()返回当日的日期 例如今天是2016/8/19 getFullYear()返回当前日期的年 myDate.getFullYear() 201 ...
- iOS. PercentEscape是错用的URLEncode,看看AFN和Facebook吧
别再使用stringByAddingPercentEscapesUsingEncoding 当遇到发送网络请求的参数中有汉字的情况,很多人一股脑地使用stringByAddingPercentEsca ...
- CSS居中demo
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...
- Markdown Blog Testing
# 测试一下markdown写法 貌似之前的文章不能再重新套用markdown语法了? 1 2 3
- spring+mybatis+oracle/mysql整合开发需要的jar包详解
导入spring,mybatis,c3p0,oracle和mybatis提供的与spring整合的插件包 mysql的jar: mysql-connector-java-5.1.7 ...
- 总结Objective-c常用算法
今天是星期天,想睡到10点起床,结果认为自己太奢侈了,不能这么做,于是把闹钟设置成了6:30:结果终于9:36醒了,起床,无缘无故迟了,好吧,就算太累了吧,周天就原谅自己一回.终于到了中午 ...