导入库文件

在下载页面下载最新的库文件。将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"
  2. android:permission="android.permission.BAIDU_LOCATION_SERVICE">
  3. <intent-filter>
  4. <action android:name="com.baidu.location.service_v2.4"></action>
  5. </intent-filter>
  6. </service>

声明使用权限

  1. <permission android:name="android.permission.BAIDU_LOCATION_SERVICE"></permission>
  2. <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE"></uses-permission>
  3. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
  4. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
  5. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
  6. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
  7. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
  8. <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
  9. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
  10. <uses-permission android:name="android.permission.INTERNET" />
  11. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
  12. <uses-permission android:name="android.permission.READ_LOGS"></uses-permission>

import相关类

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

功能类的使用

初始化LocationClient类

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

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

实现BDLocationListener接口

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

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

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

  1. public class MyLocationListenner implements BDLocationListener {
  2. @Override
  3. public void onReceiveLocation(BDLocation location) {
  4. if (location == null)
  5. return ;
  6. StringBuffer sb = new StringBuffer(256);
  7. sb.append("time : ");
  8. sb.append(location.getTime());
  9. sb.append("\nerror code : ");
  10. sb.append(location.getLocType());
  11. sb.append("\nlatitude : ");
  12. sb.append(location.getLatitude());
  13. sb.append("\nlontitude : ");
  14. sb.append(location.getLongitude());
  15. sb.append("\nradius : ");
  16. sb.append(location.getRadius());
  17. if (location.getLocType() == BDLocation.TypeGpsLocation){
  18. sb.append("\nspeed : ");
  19. sb.append(location.getSpeed());
  20. sb.append("\nsatellite : ");
  21. sb.append(location.getSatelliteNumber());
  22. } else if (location.getLocType() == BDLocation.TypeNetWorkLocation){
  23. sb.append("\naddr : ");
  24. sb.append(location.getAddrStr());
  25. }
  26.  
  27. logMsg(sb.toString());
  28. }
  29. public void onReceivePoi(BDLocation poiLocation) {
  30. if (poiLocation == null){
  31. return ;
  32. }
  33. StringBuffer sb = new StringBuffer(256);
  34. sb.append("Poi time : ");
  35. sb.append(poiLocation.getTime());
  36. sb.append("\nerror code : ");
  37. sb.append(poiLocation.getLocType());
  38. sb.append("\nlatitude : ");
  39. sb.append(poiLocation.getLatitude());
  40. sb.append("\nlontitude : ");
  41. sb.append(poiLocation.getLongitude());
  42. sb.append("\nradius : ");
  43. sb.append(poiLocation.getRadius());
  44. if (poiLocation.getLocType() == BDLocation.TypeNetWorkLocation){
  45. sb.append("\naddr : ");
  46. sb.append(poiLocation.getAddrStr());
  47. }
  48. if(poiLocation.hasPoi()){
  49. sb.append("\nPoi:");
  50. sb.append(poiLocation.getPoi());
  51. }else{
  52. sb.append("noPoi information");
  53. }
  54. logMsg(sb.toString());
  55. }
  56. }

设置参数

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

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

发起定位请求

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

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

发起POI查询请求

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

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

位置提醒使用

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

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

    1.在配置文件配置好的情况下,在运行 consul agent -server -datacenter=([xacl.json].[acl_datacenter]) -bootstrap -data- ...

  2. MyEclipse - 问题集 - 创建Maven项目,JDK版本默认是1.5

    修改Maven的配置文件settings.xml,增加profile节点,如下所示: <profile> <id>jdk-1.8</id> <activati ...

  3. [转]Android UI 自动化测试

    介绍 Android测试支持库包含UI自动化模块,它可以对Android应用进行自动黑盒测试.在API Level 18中引入了自动化模块,它允许开发者在组成应用UI的控件上模仿用户行为. 在这个教程 ...

  4. vue2.0 watch

    类型:string | Function | Object vue官网解释: 一个对象,键是需要观察的表达式,值是对应回调函数.值也可以是方法名,或者包含选项的对象.Vue 实例将会在实例化时调用 $ ...

  5. Android Studio Gradle编译时『No resource found that matches the given name』解决方法(windows系统的坑)

    * 最近帮团队同事配置gradle时,发现一个非常奇怪的问题:> * 同样的gradle配置的项目,只是修改了一个项目的名称,竟然会出现以下奇怪问题: ## 现象1. 一个编译完全OK,另外一个 ...

  6. 「日常训练」「小专题·USACO」 Broken Necklace(1-2)

    题意 圆形链条,打断一处可以形成一条链.问在哪个地方开始打断,能够形成最大的连续颜色(白色视作同样的颜色)? 分析 说起来很高级,但是我们实际上并不需要穷举打断的地方,只需要把串重复三回啊三回.然后从 ...

  7. adb usage

    使用安卓调试及自动化,不可避免的要使用adb,说明看起来很麻烦,进行简单记录,以便时候不时之需. usb连接手机调试就很简单了.首先,在手机端开启usb调试,即点击安卓版本项7次,就可以显示开发者菜单 ...

  8. UnrealEngine4入门(一) 新建一个c++项目

    epic games宣布ue4免费使用(游戏发布之后,每个季度大于3000美元则收取收益的5%)之后,吸引了大批看好VR和AR前景的游戏开发者.不过国内(中文)ue4教程和资料太少,而且一大部分资料都 ...

  9. Java作业09-异常

    6. 为如下代码加上异常处理 byte[] content = null; FileInputStream fis = new FileInputStream("testfis.txt&qu ...

  10. C++ 点

    2017/12/23 scoped_ptr类型的指针,只能在一个namespace中使用 1) 怎么查看元素在set中是否存在 1) istringstream类用于执行C++风格的串流的输入操作. ...