这里使用讲解的是androidStudio下开发android应用,实现百度地图定位功能的辅助教程。
登入百度地图API官方网站http://lbsyun.baidu.com/
在主页中选择开发->Android定位sdk,我们可以看到有很多的教程,包括教你获取秘钥,开发指南等等。具体我就不再赘述了,可以看上面的开发指南,这篇文章主要针对app中加入百度定位的一些细节方面的操作。
接着选择相关下载->全部下载,进入之后可以看到如下界面。我们这里只勾选全量定位即可。

点击下载开发包,当然你也可以下载示例代码和参考类。
下载好开发包之后可以解压看到如下目录结构:


有可能你会问这些是干嘛用的,其实这些都是动态链接库,针对不同架构的android手机cpu百度编写了不同的库文件,目的是为了适配不同的CPU架构,如果你选择了多个功能的开发包,会发现非常大,这时我们就得取舍,我们只要留下armeabi和 armeabi-v7a 这两文件的库就行了,基本上市面机子都ok。

知识提示:
armeabi就是针对普通的或旧的arm v5 cpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm v7 cpu。
armeabi-v7a(32位ARM设备),arm64-v8a(64位ARM设备)。

对于.so文件放哪,你可能会感到困惑,如下总结:
- AndroidStudio工程放在jniLibs/ABI目录中(当然也可以通过在build.gradle文件中的设置jniLibs.srcDir属性自己指定);
- Eclipse工程放在libs/ABI目录中(这也是ndk-build命令默认生成.so文件的目录);
- AAR压缩包中位于jni/ABI目录中(.so文件会自动包含到引用AAR压缩包的APK中);
- 最终在APK文件中的lib/ABI目录中
通过PackageManager安装后,在小于Android 5.0的系统中,.so文件位于app的nativeLibraryPath目录中;在大于等于Android 5.0的系统中,.so文件位于app的nativeLibraryRootDir/CPU_ARCH目录中。

接下来是将这些库文件以及jar包导入到android工程中,如下操作,这里就将百度地图的动态链接库全部导入到应用中吧,全部复制粘贴到libs目录下:

将jar包选择右键,Add As Library,这样成功将jar包导入,图中没有显示库文件,是因为楼主截图不是同一个工程导致。正常将会显示出库文件,请谅解。

当然你也可以通过Project Structure的方式将jar包导入,如下操作:


完成jar包的导入,可以看到在android工程的Gradle(Module:app)文件中看到如下的描述,这意味着,您的jar包导入成功了。

下面是导入后的libs目录结构:

由于百度地图定位需要用到动态链接库,我们需要在Gradle(Module:app)文件中添加如下代码:

sourceSets {main {jniLibs.srcDirs = ['libs']}}

还需要在Manifests文件中声明服务以及配置秘钥,如下:


对了,别忘了还要声明一些权限,详情请看官方开发指南
好了这样百度地图定位的准备工作就基本做好了。现在你就可以看百度的图的开发指南,进行代码的编写
官方开发指南地址:http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/getloc

作者在做自己项目时写了个工具类,方便操作:

public class BDLocationUtils implements BDLocationListener {private static BDLocationUtils bdLocationUtils;public LocationClient mLocationClient = null;private String describe = "";private List<Poi> locationPoiList = new ArrayList<>();private List<String> locationList = new ArrayList<>();private String address;public static BDLocationUtils newInstance(Context context) {if (bdLocationUtils == null) {bdLocationUtils = new BDLocationUtils(context);}return bdLocationUtils;}public BDLocationUtils(Context context) {System.out.println("bdlocation");mLocationClient = new LocationClient(context);     //声明LocationClient类initLocation();mLocationClient.registerLocationListener(this);    //注册监听函数mLocationClient.start();}/*** 初始化位置获取设置*/private void initLocation() {LocationClientOption option = new LocationClientOption();option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备option.setCoorType("bd09ll");//可选,默认gcj02;设置返回的定位结果坐标系// int span = 1000;//option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要option.setOpenGps(false);//可选,默认false,设置是否使用gpsoption.setLocationNotify(false);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果option.setIsNeedLocationDescribe(false);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集option.setEnableSimulateGps(true);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要mLocationClient.setLocOption(option);}@Overridepublic void onReceiveLocation(BDLocation location) {System.out.println("bdlocation listener。");//Receive LocationStringBuffer 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());//latitude = location.getLatitude();MyApplication.location.setLatitude(location.getLatitude());//纬度sb.append("\nlontitude : ");sb.append(location.getLongitude());//经度MyApplication.location.setLatitude(location.getLongitude());//longitude = location.getLongitude();
//        sb.append("\nradius : ");
//        sb.append(location.getRadius());if (location.getLocType() == BDLocation.TypeGpsLocation) {// GPS定位结果
//            sb.append("\nspeed : ");
//            sb.append(location.getSpeed());// 单位:公里每小时
//            sb.append("\nsatellite : ");
//            sb.append(location.getSatelliteNumber());
//            sb.append("\nheight : ");
//            sb.append(location.getAltitude());// 单位:米
//            sb.append("\ndirection : ");
//            sb.append(location.getDirection());// 单位度sb.append("\naddr : ");//sb.append(location.getAddrStr());address = location.getAddrStr();MyApplication.location.setAddress(address);sb.append(address);//Log.i("address:", address);sb.append("\ndescribe : ");sb.append("gps定位成功");describe = "gps定位成功";} else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 网络定位结果sb.append("\naddr : ");address = location.getAddrStr();sb.append(address);MyApplication.location.setAddress(address);//运营商信息sb.append("\noperationers : ");sb.append(location.getOperators());sb.append("\ndescribe : ");sb.append("网络定位成功");describe = "网络定位成功";} else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果sb.append("\ndescribe : ");sb.append("离线定位成功,离线定位结果也是有效的");describe = "离线定位成功,离线定位结果也是有效的";} else if (location.getLocType() == BDLocation.TypeServerError) {sb.append("\ndescribe : ");sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因");describe = "服务端网络定位失败";} else if (location.getLocType() == BDLocation.TypeNetWorkException) {sb.append("\ndescribe : ");sb.append("网络不同导致定位失败,请检查网络是否通畅");describe = "服务端网络定位失败";} else if (location.getLocType() == BDLocation.TypeCriteriaException) {sb.append("\ndescribe : ");sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");describe = "无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机";}sb.append("\nlocationdescribe : ");sb.append(location.getLocationDescribe());// 位置语义化信息locationPoiList = location.getPoiList();// POI数据if (locationPoiList != null) {sb.append("\npoilist size = : ");sb.append(locationPoiList.size());locationList.clear();for (Poi p : locationPoiList) {sb.append("\npoi= : ");sb.append(p.getId() + " " + p.getName() + " " + p.getRank());locationList.add(p.getName());}//通知list数据更新}//提示定位结果Log.i("BaiduLocationApiDem", sb.toString());}public void startLocation() {mLocationClient.start();}public void stopLocation() {mLocationClient.stop();}public List<String> getLocationList() {return locationList;}public String getAddress() {return address;}public String getDescribe() {return describe;}
}

获取您当前位置可能的地点:

bdLocationUtils = BDLocationUtils.newInstance(getApplicationContext());
bdLocationUtils.startLocation();
locationList = bdLocationUtils.getLocationList();

locationList存放着可能得地点
下面是获取您当前位置的地点,属于一个范围地点,但不是具体的

bdLocationUtils.getAddress()

当你定位失败的时候,你肯定想有提示一下,那么可以调用如下代码

String describe = bdLocationUtils.getDescribe();

这样,describe就有你想要的信息。
注意,在你的activity中,finish时别忘了调用一下

bdLocationUtils.stopLocation();

以防止内存泄露。

如有问题,请留下您的脚印谢谢。

android 百度地图定位辅助教程相关推荐

  1. Android百度地图开发入门教程

    Android百度地图开发入门教程 1.平台注册登录 2.创建应用 3.Android studio配置 4.代码编写 5.最终效果(建议真机) 1.平台注册登录 登录百度地图开放平台网站注册并登录 ...

  2. Android百度地图API使用教程

    课1 百度地图应用 百度地图.ppt 百度地图API:API文档 http://wiki.lbsyun.baidu.com/cms/androidsdk/doc/v3_2_0/ 67个类:其中6大核心 ...

  3. Android百度地图定位APP,显示出当前位置坐标

    Android百度地图定位APP,显示出当前位置坐标 官网配置百度地图 通过CMD命令获取SHA1 在百度的官网里面创建一个应用 Android配置 显示地图即定位 配置 AndroidManifes ...

  4. android获得图片的坐标,Android百度地图定位后获取周边位置的实现代码

    本文实例讲解Android百度地图定位后获取周边位置的实现代码,分享给大家供大家参考,具体内容如下 效果图: 具体代码: 1.布局文件 android:orientation="vertic ...

  5. unlegal android,百度地图定位 Cordova 插件 cordova-plugin-baidumaplocation

    软件介绍 百度地图定位Cordova插件,支持Android,IOS 可以在此地址查看example 基于百度地图Android版定位SDK(v7.1)以及百度地图IOS SDK (v3.2.1) 一 ...

  6. android 百度地图定位总结

    百度地图用过几次,往往用过即忘,疏于总结,这次归纳一下 api-key, jar导入,Menifest.xml配置参考官方文档, 基于jar包 3.6.1版,地图sdk版本不同,方法会有差异 效果图: ...

  7. android 百度地图定位SDK使用方法

    本以为gps定位就只是拿个经纬度,不会很复杂,结果折腾了一下午才弄好,惭愧啊~ Ps:今天练跆拳道,刚热身就两条腿一起抽筋,难道是平时撸多了......好吧,我想多了,废话不多说,开始入正题~ 首先介 ...

  8. android百度地图定位自定义图标,Android应用开发之android 百度地图自定义圆,更改默认图标等常用方法...

    本文将带你了解Android应用开发之android 百度地图自定义圆,更改默认图标等常用方法,希望本文对大家学Android有所帮助. 总结了一下百度地图常用的方法(前提是集成百度地图环境成功): ...

  9. android百度地图定位自定义图标,百度地图SDK集成及根据坐标实现定位(android studio开发)...

    百度地图SDK集成及根据坐标实现定位(android studio开发) 百度地图SDK集成及根据坐标实现定位(android studio开发) 1.下载百度地图SDK 链接:http://lbsy ...

最新文章

  1. javascript之window对象详解
  2. Ubuntu Linux配置Nginx+MySQL+PHP+phpMyAdmin详细步骤
  3. odoo12 mysql_odoo12从零开始:二、1)个性化定制odoo12之修改数据库创建页面
  4. 【机器视觉】 dev_get_window算子
  5. 今天聊聊Oracle Database 21c 十“小”新特性
  6. ubuntu之安装显卡驱动
  7. S2SH新手框架结构的准备工作只需要导入这些文件
  8. 一文搞懂 Flink 的 Exactly Once 和 At Least Once
  9. 用HE提供的免费DNS解析服务通过IPv6 DNS检测
  10. 数据库大作业预览-教室管理系统
  11. 小米路由器能做无线打印服务器吗,将普通打印机连接在小米路由器上能做
  12. 空洞卷积(Atrous convolution)
  13. 理解 asyncio 来构建高性能 Python 网络程序 - Ricequant米筐量化
  14. NOI Linux 2.0 桌面背景展示
  15. 钢笔墨水能否代替打印机墨水_喷墨打印机该用染料墨水还是颜料墨水,有什么区别,你会选吗?...
  16. Pathon 连接数据库
  17. 给邮箱和手机号码打码
  18. “巴巴罗莎计划---我的崛起之路
  19. FFmpeg的HEVC解码器源代码简单分析:环路滤波(Loop Filter)
  20. 【出差总结】出差0902

热门文章

  1. 二极管A7与M7的区别
  2. realvnc下载,realvnc(远程控制软件)下载软件介绍
  3. 深度解读人社部《电子劳动合同订立指引》,广深行业专家说了啥?
  4. 前程无忧:节后芯片、通讯行业人才需求看涨, 金融业走低
  5. OICQ 99c版本加密方法研究报告
  6. 网络经济学——第二章 网络外部性
  7. 为了彻底搞懂 hashCode,我连 JDK 的源码都没放过(建议收藏)
  8. zune连接手机报错,提示无法连接的解决方法
  9. error Expected linebreaks to be ‘LF‘ but found ‘CRLF‘ linebreak-style
  10. 福建省南平市谷歌卫星地图下载