快速集成百度定位功能
1:如果你没有百度帐号,要先注册百度帐号,登录,进入API控制台服务,输入应用名称,将应用类型改为“Android SDK”,输入应用安全码。这一布比较简单,如图
你只需要填写图中的内容即可,获取SHA1码的具体方法,可以参考这篇博客
http://blog.csdn.net/harvic880925/article/details/17618743
2:填写完上述内容,会生成一个密钥,如图
3:下载百度地图相关SDK,主要有4种类型,选择自己需要的即可,如果只是定位,那么第一种就可以(现在最新的包改为BaiduLBS_Android.jar,不是以前的baidu_xxx.jar了,我下载的时候不知道出了什么问题,下载的包里面始终没有LocationClient这个类,最后只要下载Demo,然后把demo中libs目录下的包拷到自己的羡慕中来解决)。下载路径:
http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download
4:完成上述步骤后,在manifest中进行如下配置:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><!-- 放在application节点下的--!>
<meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="填写第2步的密钥" /><serviceandroid:name="com.baidu.location.f"android:enabled="true"android:process=":remote" >
</service>
5:到此,百度SDK的前期准备工作全部完成,简单使用时,只需要在布局中添加如下显示百度地图控件:
<com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="fill_parent"android:layout_height="fill_parent"android:clickable="true" />
6:在代码中初始化百度SDK,然后实现BDLocationListener接口,在onReceiveLocation(BDLocation location) 将定位到的位置显示到控件上即可。完整代码如下:
public class MainActivity extends Activity {private final static String TAG = "BaiduMap";private MapView mMapView = null;private LocationClient mLocationClient;private BDLocationListener mLocationListener;private BaiduMap mBaiduMap;private LocationManager lm;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);initView();initLocation();}private void initLocation() {mLocationClient = new LocationClient(getApplicationContext());mLocationListener = new MyLocationListener();mLocationClient.registerLocationListener(mLocationListener);initLocationOptions();mLocationClient.start();}private void initView() {mMapView = (MapView) findViewById(R.id.bmapView);lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);// 判断GPS是否正常启动if (!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {Toast.makeText(this, "请开启GPS导航...", Toast.LENGTH_SHORT).show();// 返回开启GPS导航设置界面Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);startActivityForResult(intent, 0);}}/*** 设置属性*/private void initLocationOptions(){ LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy );//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备 mBaiduMap = mMapView.getMap();mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);//设置比例,具体参考自己需要MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);mBaiduMap.setMapStatus(msu);option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系 int span = 1000; option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的 option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要 option.setOpenGps(true);//可选,默认false,设置是否使用gps option.setLocationNotify(true);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果 option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近” option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到 option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死 option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集 option.setEnableSimulateGps(false);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要 mLocationClient.setLocOption(option); } @Overrideprotected void onStart() {// 开启图层定位mBaiduMap.setMyLocationEnabled(true);if (!mLocationClient.isStarted()) {mLocationClient.start();}super.onStart();}private class MyLocationListener implements BDLocationListener {@Overridepublic void onConnectHotSpotMessage(String arg0, int arg1) {// TODO Auto-generated method stub}@Overridepublic void onReceiveLocation(BDLocation location) {//定义Maker坐标点 LatLng point = new LatLng(location.getLatitude(), location.getLongitude()); //构建Marker图标 BitmapDescriptor bitmap = BitmapDescriptorFactory .fromResource(R.drawable.map_gps);//构建MarkerOption,用于在地图上添加Marker OverlayOptions option = new MarkerOptions() .position(point) .icon(bitmap); //在地图上添加Marker,并显示 mBaiduMap.addOverlay(option); mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(point)); //更新地图状态 }}@Overrideprotected void onStop() {// 关闭图层定位mBaiduMap.setMyLocationEnabled(false);mLocationClient.stop();super.onStop();}@Overrideprotected void onDestroy() {super.onDestroy();// 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理mMapView.onDestroy();mMapView = null;}@Overrideprotected void onResume() {super.onResume();// 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();// 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理mMapView.onPause();}
}
定位结果如下:
ps:想实现方向传感的,可以参考这位大兄弟的,写的很好,因为坑爹的机器没有传感器啊!!!,文章路径:
http://www.2cto.com/kf/201412/359292.html
就是这么简单,代码我就不上传了,完整代码就这么多
快速集成百度定位功能相关推荐
- Android集成百度定位以及导航详解
Android集成百度定位以及导航详解 百度地图Android SDK 官方下载地址: 包括类参考.示例代码 ...
- Spring Boot 快速集成第三方登录功能
Spring Boot 快速集成第三方登录功能 前言 此 demo 主要演示 Spring Boot 项目如何使用 史上最全的第三方登录工具 - JustAuth 实现第三方登录,包括 QQ 登录.G ...
- Android集成百度定位,超详细,拒绝坑,附demo!!!
众所周知,百度地图作为定位,地图,导航界的大佬之一,我们的项目中有这方面的需求,百度地图集成也是个不错的选择. 百度地图集成成本极低,首先,它免费,官网文档清晰,demo明确,但还是有很多人要才坑,正 ...
- android开发游记:集成百度定位SDK进行实时定位 获取当前城市地理信息
定位功能在app开发中很常用,大多数企业都是不具备定位资质的,所有一般是通过接入第三方的sdk来进行定位,比较熟悉的有如:百度.高德.谷歌.腾讯等.而国内比较地图策划比较成熟的主要是百度和高德,这里就 ...
- Flutter集成百度定位和百度地图
准备 请尽量先阅读官方文档,本文是对官方文档的合并整理,结合自己项目集成过程. 插件请以官方最新版本为主. <百度定位.地图Flutter插件开发文档> <Api中心> 在使用 ...
- 解决集成百度定位SDK获取不到定位信息的问题
我们很多场景都需要获取用户的定位信息,包括使用友盟统计,其实也会根据设备的定位信息来分析用户的使用行为. 1)集成百度推送,需要打开百度开发文档,并且注册账户. 2)根据开发文档下载基础定位的SDK. ...
- Android 集成高德定位功能,获取经纬度,城市至门牌号码
老规矩,上效果图,先给你们看下效果: 虽然打上了马赛克,但是装到别人手机上还是看着很爽啊; 友善提醒:禁止用作非法用途 首先进入高德地图开放平台 先要下载高德的定位SDK包,这里就不演示了 1.--- ...
- 微信小程序集成 “百度语音合成” 功能
文章目录 1.成为百度AI开放平台的开发者 2.领取免费额度 3.在微信小程序中使用 4.java中使用 百度AI开发平台文档:https://ai.baidu.com/ai-doc/SPEECH/j ...
- Flutter 混合开发 - 03 百度地图定位功能 ios 篇
本节目标 创建 ios flutter 插件流程 集成百度定位功能 视频 https://www.bilibili.com/video/BV1HT4y1L73i/ 代码 https://github. ...
最新文章
- AngularJS2 + ASP.NET MVC项目
- iphone圆点怎么弄出来_新款iPhone放出终极大招,果粉:就没高级点的嘛
- java spring 服务器关闭_通过springboot怎么停止服务器??
- C#去掉字符串中的汉字
- 鏖战双十一-阿里直播平台面临的技术挑战
- 【bzoj4080】[Wf2014]Sensor Network 随机化
- 提示No Launcher activity found
- 浏览器API location
- 如何将JAR添加到Jetbrains MPS项目
- 我的博客园css样式
- HBase集群环境部署
- 吐血整理了下AAAI2022中和NLP相关的论文,包括信息抽取、机翻、NER、多模态、数据增强、问答、多语言、KD、文本纠错等...
- Item 10.const成员函数 (Meaning of a Const Member Function)
- 微信运动计步器 php,微信修改步数(卡密版)v1.2.1 PHP程序
- 微信公众平台二次开发技术文档
- java get中文乱码怎么解决_java中get请求中文乱码怎么办?
- 飞机大战(简单版)(C/C++) (VS)
- 未能加载程序集oracle.dataaccess 控制台,未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项.试图加载格式不正确的程序...
- JAVA基础(12.Java中的常用类String)
- 表格对决CSS--一场生死之战 (转自“清清月儿”)
热门文章
- CIC滤波器和SINC滤波器
- 基于CNN的动态手势识别:Real-time Hand Gesture Detection and Classification Using Convolutional Neural Networks
- oracle adf源代码在哪里,第 3 章 | 从设计到实践全面了解 Oracle ADF 应用程序
- 怎么将视频里的语音转成文字?不妨试试这三款转文字工具
- 从前端技术到体验科技
- 毕业/课程设计——基于STM32的智能灯光控制系统(物联网、智能家居、手机APP控制、语音控制)
- 致敬平凡程序员妙优车助力1024程序员节
- 安装NET.FRAMEWORK报错:error 25015安装法度集 C:\Windows\Microsoft .NET\Framework\v2.0.50727\xxx.dl...
- Java 8 forEach使用
- jav中jar包的MANIFEST.MF