百度sdk定位不成功,关闭定位

简介:

公司项目有用到百度地图,登录的时候需要定位一次,获取登录的地址信息,在手机无法连接外网的情况,也就无法访问百度定位服务器的时候,定位的回调函数要30秒以上才能返回结果,于是去仔细查百度api,发现没有设置回调函数时间的方法或者属性.


解决办法就是把回调函数参数赋值给实例变量

  1. /** 
  2.  * 实现实位回调监听,如果访问百度定位服务器成功就会把结果赋值给location 
  3.  * 否则这个location为null 
  4.  */  
  5. public class MyLocationListener implements BDLocationListener {  
  6.     @Override  
  7.     public void onReceiveLocation(BDLocation db) {  
  8.         location=db;  
  9.     }  
  10. }  


开启一个延时2.5秒的线程,在线程中判断回调函数有没有调用......如果手机能连接外网并且能成功访问百度服务器的话,2秒左右能返回结果

  1. //延迟2.5秒执行locationResult()  
  2. //正常情况下访问百度定位服务器只需要2秒  
  3. new Handler().postDelayed(new Runnable() {  
  4.     @Override  
  5.     public void run() {  
  6.         if(null==location){//为空表示百度sdk定位失败  
  7.           
  8.         }else{//定位成功  
  9.           
  10.         }  
  11.     }  
  12. }, 2500);  

完整代码如下:

  1. package com.baidu.baidulocationdemo;  
  2.   
  3. import com.baidu.location.BDLocation;  
  4. import com.baidu.location.BDLocationListener;  
  5. import com.baidu.location.LocationClient;  
  6. import com.baidu.location.LocationClientOption;  
  7.   
  8. import android.os.Bundle;  
  9. import android.os.Handler;  
  10. import android.app.Activity;  
  11. import android.util.Log;  
  12. import android.view.View;  
  13. import android.view.View.OnClickListener;  
  14. import android.widget.TextView;  
  15.   
  16. public class MainActivity extends Activity {  
  17.     public LocationClient locationClient;  
  18.     private BDLocation location;  
  19.       
  20.     private TextView mLocationResult;  
  21.   
  22.     @Override  
  23.     protected void onCreate(Bundle savedInstanceState) {  
  24.         super.onCreate(savedInstanceState);  
  25.         setContentView(R.layout.activity_main);  
  26.           
  27.         mLocationResult=(TextView) findViewById(R.id.location_result);  
  28.         findViewById(R.id.start_location).setOnClickListener(clickListener);  
  29.         findViewById(R.id.stop_location).setOnClickListener(clickListener);  
  30.           
  31.         LocationClientOption option = new LocationClientOption();  
  32.         option.setCoorType("bd09ll");//设置坐标类型  
  33.         locationClient = new LocationClient(this);  
  34.         locationClient.registerLocationListener(new MyLocationListener());  
  35.         locationClient.setLocOption(option);  
  36.     }  
  37.       
  38.     private OnClickListener clickListener=new OnClickListener(){  
  39.         @Override  
  40.         public void onClick(View v) {  
  41.             switch (v.getId()) {  
  42.             case R.id.start_location:  
  43.                 locationClient.start();  
  44.                   
  45.                 //延迟2.5秒执行locationResult()  
  46.                 //正常情况下访问百度定位服务器只需要2秒  
  47.                 new Handler().postDelayed(new Runnable() {  
  48.                     @Override  
  49.                     public void run() {  
  50.                         locationResult();  
  51.                     }  
  52.                 }, 2500);  
  53.                   
  54.                 break;  
  55.             case R.id.stop_location:  
  56.                 distory();  
  57.                 break;  
  58.             }  
  59.         }  
  60.     };  
  61.       
  62.     /** 
  63.      * 实现实位回调监听,如果访问百度定位服务器成功就会把结果赋值给location 
  64.      * 否则这个location为null 
  65.      */  
  66.     public class MyLocationListener implements BDLocationListener {  
  67.         @Override  
  68.         public void onReceiveLocation(BDLocation db) {  
  69.             location=db;  
  70.         }  
  71.     }  
  72.       
  73.     private void locationResult(){  
  74.         if(null==location){//为空表示百度sdk定位失败  
  75.             location=new BDLocation();  
  76.         }  
  77.         //Receive Location   
  78.         StringBuffer sb = new StringBuffer(256);  
  79.         sb.append("time : ");  
  80.         sb.append(location.getTime());  
  81.         sb.append("\nerror code : ");  
  82.         sb.append(location.getLocType());  
  83.         sb.append("\nlatitude : ");  
  84.         sb.append(location.getLatitude());  
  85.         sb.append("\nlontitude : ");  
  86.         sb.append(location.getLongitude());  
  87.         sb.append("\nradius : ");  
  88.         sb.append(location.getRadius());  
  89.           
  90.         if (mLocationResult != null)  
  91.             mLocationResult.setText(sb.toString());  
  92.           
  93.         Log.i("BaiduLocationApiDem", sb.toString());  
  94.         distory();  
  95.     }  
  96.       
  97.     private void distory(){//关闭定位  
  98.          if (locationClient != null && locationClient.isStarted()) {  
  99.              locationClient.stop();  
  100.          }  
  101.     }  
  102. }  

效果图如下:


推荐下自己创建的android QQ群:202928390   欢迎大家的加入.

目录
相关文章
|
达摩院 Java 开发工具
Python、Java SDK两种方式调用阿里云人脸检测与五官定位
阿里云视觉智能开放平台基于达摩院自研的人脸人体分析技术,提供人脸检测与五官定位、人脸属性识别、人脸比对、人脸搜索、人体检测、人体属性、行为分析等多种功能,为开发者和企业用户提供高性能高可用的人脸人体识别服务。广泛应用于数字门店、楼宇门禁、身份识别、互动娱乐、IPC摄像头、内容广告等领域。此篇文章简单介绍人脸人体与五官定位python,java两种方式调用。
685 0
Python、Java SDK两种方式调用阿里云人脸检测与五官定位
|
移动开发 JavaScript 前端开发
uniapp在H5获取当前定位信息不需要SDK可直接获取城市(包括经纬度省市区和市区编码)
最近在做获取用户当前定位信息的时候,发现uniapp官方提供的兼容性并不是特别好,光注意事项都是密密麻麻一大堆,在实际使用场景下,效果并不理想,也不是很稳定。于是便重新封装了一下腾讯地图的一些东西,提高了下兼容度!下边我会把我用的封装思路逻辑给大家一一讲解。完整代码可私信我我发给你以上便是基于uni-app框架开发,使用Promise进行异步请求和结果返回,封装的H5获取当前详细定位信息组件希望大家一起交流。
1962 0
|
PHP 开发工具 计算机视觉
PHP SDK百度人脸识别遇见的坑,BASE64识别程度高但加载慢;URL加载快,但总image download fail
PHP SDK百度人脸识别遇见的坑,BASE64识别程度高但加载慢;URL加载快,但总image download fail
152 0
|
Java 定位技术 开发工具
Android 百度地图SDK 自动定位、标记定位
Android 百度地图SDK 自动定位、标记定位
423 0
|
API 定位技术 开发工具
iOS14 定位适配:1、向用户申请临时开启一次精确位置权限的方案2、高德定位SDK适配
iOS14 定位适配:1、向用户申请临时开启一次精确位置权限的方案2、高德定位SDK适配
1770 0
iOS14 定位适配:1、向用户申请临时开启一次精确位置权限的方案2、高德定位SDK适配
|
Java Maven 开发工具
阿里云视觉智能开放平台(VIAPI)人脸检测与五官定位Java SDK使用说明
本文为介绍人脸检测与五官定位DetectFace的语法及示例。
930 1
|
语音技术 开发工具 Python
Python 技术篇-百度语音合成SDK接口调用演示
Python 技术篇-百度语音合成SDK接口调用演示
358 0
Python 技术篇-百度语音合成SDK接口调用演示
|
Java 开发工具
阿里云智能视觉生产图像分析元素识别定位Java SDK使用说明
元素识别定位用于识别输入图中所包含的元素,用矩形框标注出其位置,并区分其对应的基本类型(人/物、修饰、文案)。本文介绍如何使用阿里云智能视觉生产图像分析元素识别定位Java SDK,包括SDK的安装方法及SDK代码示例。
326 0
|
定位技术 开发工具 Android开发
Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK
原文:Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37590688/article/details/76072563 前两天学习了一下Android的特色--LBS(基于百度地图Android SDK)。
1386 0
|
开发工具 Android开发 定位技术
Android 百度定位SDK
原文:Android 百度定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shui1025701856/article/details/79031834 官方文档:http://lbsyun.
1327 0

热门文章

最新文章

  • 1
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
  • 4
    CompreFace:Star6.1k,Github上火爆的轻量化且强大的人脸识别库,api,sdk都支持
  • 5
    【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
  • 6
    【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
  • 7
    Eclipse Oxygen 如何正确配置Java 9 SDK
  • 8
    ti processor sdk linux am335x evm /bin/setup-minicom.sh hacking
  • 9
    openstack python sdk list tenants get token get servers
  • 10
    常用的工业相机及SDK
  • 1
    【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    31
  • 2
    CompreFace:Star6.1k,Github上火爆的轻量化且强大的人脸识别库,api,sdk都支持
    23
  • 3
    【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
    19
  • 4
    【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    27
  • 5
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    159
  • 6
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    162
  • 7
    【01】完整开发即构美颜sdk的uni官方uts插件—让所有开发者可以直接使用即构美颜sdk的能力-优雅草卓伊凡
    75
  • 8
    AutoTalk第十三期-应知必会的自动化工具-阿里云SDK支持策略(一)
    55
  • 9
    自动化AutoTalk第十期:应知必会的自动化工具-阿里云SDK
    54
  • 10
    API稳定安全最佳实践:用阿里云SDK为业务保驾护航
    94