导入库文件

在下载页面下载最新的库文件。将liblocSDK2.4.so文件拷贝到libs/armeabi目录下。将locSDK2.4.jar文件拷贝到工程根目录下,并在工程属性->Java Build Path->Libraries中选择“Add JARs”,选定locSDK2.4.jar,确定后返回。这样您就可以在程序中使用百度定位API了。

设置AndroidManifest.xml

为区分2.3版本service,需要将manifest file中的 intent filter声明为com.baidu.location.service_v2.4 在application标签中声明service组件

    1. <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"
    1. android:permission="android.permission.BAIDU_LOCATION_SERVICE">
    1. <intent-filter>
    1. <action android:name="com.baidu.location.service_v2.4"></action>
    1. </intent-filter>
    1. </service>

声明使用权限

    1. <permission android:name="android.permission.BAIDU_LOCATION_SERVICE"></permission>
    1. <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE"></uses-permission>
    1. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    1. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    1. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    1. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    1. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    1. <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
    1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    1. <uses-permission android:name="android.permission.INTERNET" />
    1. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
    1. <uses-permission android:name="android.permission.READ_LOGS"></uses-permission>

import相关类

    1. import com.baidu.location.BDLocation;
    1. import com.baidu.location.BDLocationListener;
    1. import com.baidu.location.LocationClient;
    1. import com.baidu.location.LocationClientOption;
    1. import com.baidu.location.BDNotifyListener;//假如用到位置提醒功能,需要import该类

功能类的使用

初始化LocationClient类

此处需要注意:LocationClient类必须在主线程中声明。需要Context类型的参数。

    1. public LocationClient mLocationClient = null;
    1. public BDLocationListener myListener = new MyLocationListener();
    1.  
    1. public void onCreate() {
    1. mLocationClient = new LocationClient(this); //声明LocationClient类
    1. mLocationClient.registerLocationListener( myListener ); //注册监听函数
    1. }

实现BDLocationListener接口

BDLocationListener接口有2个方法需要实现:

1.接收异步返回的定位结果,参数是BDLocation类型参数。

2.接收异步返回的POI查询结果,参数是BDLocation类型参数。

    1. public class MyLocationListenner implements BDLocationListener {
    1. @Override
    1. public void onReceiveLocation(BDLocation location) {
    1. if (location == null)
    1. return ;
    1. StringBuffer sb = new StringBuffer(256);
    1. sb.append("time : ");
    1. sb.append(location.getTime());
    1. sb.append("\nerror code : ");
    1. sb.append(location.getLocType());
    1. sb.append("\nlatitude : ");
    1. sb.append(location.getLatitude());
    1. sb.append("\nlontitude : ");
    1. sb.append(location.getLongitude());
    1. sb.append("\nradius : ");
    1. sb.append(location.getRadius());
    1. if (location.getLocType() == BDLocation.TypeGpsLocation){
    1. sb.append("\nspeed : ");
    1. sb.append(location.getSpeed());
    1. sb.append("\nsatellite : ");
    1. sb.append(location.getSatelliteNumber());
    1. } else if (location.getLocType() == BDLocation.TypeNetWorkLocation){
    1. sb.append("\naddr : ");
    1. sb.append(location.getAddrStr());
    1. }
    1.  
    1. logMsg(sb.toString());
    1. }
    1. public void onReceivePoi(BDLocation poiLocation) {
    1. if (poiLocation == null){
    1. return ;
    1. }
    1. StringBuffer sb = new StringBuffer(256);
    1. sb.append("Poi time : ");
    1. sb.append(poiLocation.getTime());
    1. sb.append("\nerror code : ");
    1. sb.append(poiLocation.getLocType());
    1. sb.append("\nlatitude : ");
    1. sb.append(poiLocation.getLatitude());
    1. sb.append("\nlontitude : ");
    1. sb.append(poiLocation.getLongitude());
    1. sb.append("\nradius : ");
    1. sb.append(poiLocation.getRadius());
    1. if (poiLocation.getLocType() == BDLocation.TypeNetWorkLocation){
    1. sb.append("\naddr : ");
    1. sb.append(poiLocation.getAddrStr());
    1. }
    1. if(poiLocation.hasPoi()){
    1. sb.append("\nPoi:");
    1. sb.append(poiLocation.getPoi());
    1. }else{
    1. sb.append("noPoi information");
    1. }
    1. logMsg(sb.toString());
    1. }
    1. }

设置参数

设置定位参数包括:定位模式(单次定位,定时定位),返回坐标类型,是否打开GPS等等。eg:

    1. LocationClientOption option = new LocationClientOption();
    1. option.setOpenGps(true);
    1. option.setAddrType("detail");
    1. option.setCoorType("gcj02");
    1. option.setScanSpan(5000);
    1. option.disableCache(true);//禁止启用缓存定位
    1. option.setPoiNumber(5); //最多返回POI个数
    1. option.setPoiDistance(1000); //poi查询距离
    1. option.setPoiExtraInfo(true); //是否需要POI的电话和地址等详细信息
    1. mLocClient.setLocOption(option);

发起定位请求

发起定位请求。请求过程是异步的,定位结果在上面的监听函数onReceiveLocation中获取。

    1. if (mLocClient != null && mLocClient.isStarted())
    1. mLocClient.requestLocation();
    1. else
    1. Log.d("LocSDK_2.0_Demo1", "locClient is null or not started");

发起POI查询请求

发起POI查询请求。请求过程是异步的,定位结果在上面的监听函数onReceivePoi中获取。

    1. if (mLocClient != null && mLocClient.isStarted())
    1. mLocClient.requestPoi();

位置提醒使用

位置提醒最多提醒3次,3次过后将不再提醒。 假如需要再次提醒,或者要修改提醒点坐标,都可通过函数SetNotifyLocation()来实现。

    1. //位置提醒相关代码
    1. mNotifyer = new NotifyLister();
    1. mNotifyer.SetNotifyLocation(42.03249652949337,113.3129895882556,3000,"gps");//4个参数代表要位置提醒的点的坐标,具体含义依次为:纬度,经度,距离范围,坐标系类型(gcj02,gps,bd09,bd09ll)
    1. mLocationClient.registerNotify(mNotifyer);
    1. //注册位置提醒监听事件后,可以通过SetNotifyLocation 来修改位置提醒设置,修改后立刻生效。
    1. //BDNotifyListner实现
    1. public class NotifyLister extends BDNotifyListener{
    1. public void onNotify(BDLocation mlocation, float distance){
    1. mVibrator01.vibrate(1000);//振动提醒已到设定位置附近
    1. }
    1. }
    1. //取消位置提醒
    1. mLocationClient.removeNotifyEvent(mNotifyer);

from: http://lszdb1983.blog.163.com/blog/static/20426348201272924223933/

Android百度定位API的使用的更多相关文章

  1. Android百度定位地图使用--文章集锦

    Android百度定位API使用方法 Android百度地图开发(一)之初体验 AndroidNote013.在百度地图上画出轨迹 Android学习笔记之百度地图(分条目覆盖物:ItemizedOv ...

  2. Android 百度定位SDK

    原文:Android 百度定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/shui1025701856/article/details/7 ...

  3. Android 百度地图API 定位 导航

    看看这个利用百度地图定位并实现目的地导航的Demo. 首先看实现效果:                          进 入后首先会得到当前位置,在地图上显示出来.在输入框中输入目的地后,就会在地 ...

  4. Android引用百度定位API第三方组件后导致其它.so文件无法正常加载的问题

    查看当前调试设备CPU架构的方法: adb.exe shell getprop ro.product.cpu.abi  (一般返回值为:armeabi-v7a) adb.exe shell getpr ...

  5. Android 百度地图API(01)_开发环境 HelloBaiduMap

    转载于:http://blog.csdn.net/lmj623565791/article/details/37729091 转载于:http://blog.csdn.net/crazy1235/ar ...

  6. Android 百度定位SDKv4.2及6.0_百度定位实例_安卓定位实例

    介绍 由于项目需要.前几天一直在研究百度定位的功能.通过不断的实践终于有结果了.不愿意独享 现在我把我的研究成果和大家分享一下.其实百度的 API 已经相当不错了 这之所以要写出来.一是自己做一个笔记 ...

  7. 百度定位API报错:leaked ServiceConnection com.baidu.location.LocationClient$1@426122f0

    使用百度MapApi定位时候,当退出当时使用的activity后,则会报如题的异常,解决办法: 1:当退出当前定位的activity时,一定要在onDestroy方法中要mLocClient.stop ...

  8. 使用百度定位Api获取当前用户登录地址

    最近在做一个商城项目,客户想把网站做成类似于美团的效果,切换地区时,内容也跟随变化.这就要首先解决根据用户id获得地址的问题,最终决定使用百度定位(不适用于搭建反向代理的项目) String url ...

  9. Android使用百度定位API时获取的地址信息为null

    option.setAddrType("all"); //加上这个配置后才可以取到详细地址信息

随机推荐

  1. RHEL-7.1 Server.x86_64 yum源设置为光盘

    1.挂载光盘 首先在media目录下创建文件夹CentOS mkdir CentOS 然后将光盘挂载在CentOS下 mount -t iso9660 -o loop /dev/cdrom /medi ...

  2. 汇编实验15:安装新的int 9中断例程

    汇编实验15:安装新的int 9中断例程 任务 安装一个新的int 9中断例程,功能:在DOS下,按下“A”键后,除非不在松开,一旦松开后,就显示满屏幕的“A”,其他键照常处理. 预备知识概要 这次实 ...

  3. leetcode 笔记5 single number

    question: Given an array of integers, every element appears twice except for one. Find that single o ...

  4. 自学MVC开发基础

    由于现在面试需求,我必须有点了解MVC开发基础,MVC是一个开发框架或者是一个开发模式,MVC让软件开发的过程大致切割成三个单元,分别是:Model(模型).View(试图).Controller(控 ...

  5. Docker容器-入门级

    1.1 容器简介 1.1.1 什么是 Linux 容器 Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件.容器提供的镜像包含了应用的所有依赖项, ...

  6. Toward Convolutional Blind Denoising of Real Photographs

    本文提出了一个针对真实图像的盲卷积去噪网络,增强了深度去噪模型的鲁棒性和实用性. 摘要 作者提出了一个 CBD-Net,由噪声估计子网络和去噪子网络两部分组成. 作者设计了一个更加真实的噪声模型,同时 ...

  7. BZOJ 4012 HNOI2015 开店 树的边分治+分治树

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4012 题意概述:给出一颗N点的树,保证树上所有点的度不超过3,树上每个点有权值,每条边有权 ...

  8. ajax 异步刷新,需要填写的参数

    参数 options 类型:Object 可选.AJAX 请求设置.所有选项都是可选的. ******* async 类型:Boolean 默认值: true.默认设置下,所有请求均为异步请求.如果需 ...

  9. [问题解决]Python locale error: unsupported locale setting

    原文来源:https://stackoverflow.com/questions/14547631/python-locale-error-unsupported-locale-setting 安装f ...

  10. 【iOS开发】IOS界面开发使用viewWithTag:(int)findTag方法获取界面元素

    http://blog.csdn.net/lxp1021/article/details/43952551 今天在开发OS界面的时候,遇到通过界面UIview viewWithTag:(int)fin ...