原文:Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37590688/article/details/76072563
前两天学习了一下Android的特色--LBS(基于百度地图Android SDK)。有些坑还是得填下,避免以后用到时忘记了。

一 .申请API_KEY

1)http://lbsyun.baidu.com/ :在这里注册并申请。注册之后出现应用列表

2)选择创建应用:下图所示

PS:SHA1找了我好久

按照书上面的,资料上看了,左侧选择项目目录类型project,打开右侧Gradle–>app–>android–>signingReport,发现,诶,怎么没有。。。。(黑人问号脸??),突然发现左下角有个转换的键(左下标红的地方),一按。。。,答案出来了。

3)完成
创建完成,获得API_KEY。

二 .下载百度定位SDK

下载解压后得到libs文件夹

BaiduLBS_android.jar放在project目录下的app–>libs目录下,其他目录放在app–>main–>新建文件夹比如:jniLibs下

三 .使用百度地图

1) AndroidManifest.xml
添加如下权限

<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡读取权限,用户写入离线定位数据-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>

在Application标签中声明SERVICE组件,每个APP拥有自己单独的定位SERVICE

<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">
</service>

Android定位SDK4.2及之后版本需要在Mainfest.xml正确设置Accesskey(AK),如果设置错误将会导致定位和地理围栏服务无法正常使用。设置AK,在Application标签中加入

<meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="AK" />       //key:开发者申请的Key

2) 新建activity:LBSwithBaidu,LBSwithBaidu代码如下:

public class LBSwithBaidu extends AppCompatActivity {private TextView text;private LocationClient client;private  StringBuilder connrentPosition;private MapView map;private BaiduMap baidumap;private boolean ismylocation=true;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);SDKInitializer.initialize(getApplicationContext());client = new LocationClient(getApplicationContext());client.registerLocationListener(new MylocationListener());setContentView(R.layout.activity_lbswith_baidu);text= (TextView) findViewById(R.id.textView_location);map= (MapView) findViewById(R.id.mapwithbaidu);baidumap=map.getMap();baidumap.setMyLocationEnabled(true);List<String> permission = new ArrayList<>();if (ContextCompat.checkSelfPermission(LBSwithBaidu.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {permission.add(Manifest.permission.ACCESS_FINE_LOCATION);}if (ContextCompat.checkSelfPermission(LBSwithBaidu.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {permission.add(Manifest.permission.READ_PHONE_STATE);}if (ContextCompat.checkSelfPermission(LBSwithBaidu.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {permission.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);}if (!permission.isEmpty()) {String[] permissions = permission.toArray(new String[permission.size()]);ActivityCompat.requestPermissions(LBSwithBaidu.this, permissions, 1);} else {requestion();}}private void requestion() {initlocation();client.start();}private void initlocation() {LocationClientOption option=new LocationClientOption();option.setIsNeedAddress(true);option.setScanSpan(5000);client.setLocOption(option);}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {switch (requestCode) {case 1:if (grantResults.length > 0) {for(int result:grantResults){if(result!=PackageManager.PERMISSION_GRANTED){Toast.makeText(this, "必须同意权限", Toast.LENGTH_SHORT).show();finish();return;}}requestion();}else {Toast.makeText(this, "发生错误", Toast.LENGTH_SHORT).show();}break;default:}}public void nagativato(BDLocation bdLocation) {if (ismylocation) {LatLng ll = new LatLng(bdLocation.getLatitude(), bdLocation.getLongitude());Log.d("pipa",bdLocation.getLatitude()+"::"+ bdLocation.getLongitude());MapStatusUpdate updata = MapStatusUpdateFactory.newLatLng(ll);baidumap.animateMapStatus(updata);updata = MapStatusUpdateFactory.zoomTo(16f);baidumap.animateMapStatus(updata);ismylocation = false;}MyLocationData.Builder loBuilder=new MyLocationData.Builder().latitude(bdLocation.getLatitude()).longitude(bdLocation.getLongitude());MyLocationData locationData=loBuilder.build();baidumap.setMyLocationData(locationData);}public class MylocationListener implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation bdLocation) {if(bdLocation.getLocType()==BDLocation.TypeGpsLocation||bdLocation.getLocType()==BDLocation.TypeNetWorkLocation){nagativato(bdLocation);}connrentPosition = new StringBuilder();connrentPosition.append("纬度:").append(bdLocation.getLatitude()).append("\n");connrentPosition.append("经度:").append(bdLocation.getLongitude()).append("\n");connrentPosition.append("国家:").append(bdLocation.getCountry()).append("\n");connrentPosition.append("省:").append(bdLocation.getProvince()).append("\n");connrentPosition.append("市:").append(bdLocation.getCity()).append("\n");connrentPosition.append("县:").append(bdLocation.getDistrict()).append("\n");connrentPosition.append("街道:").append(bdLocation.getStreet()).append("\n");connrentPosition.append("定位方式:");if (bdLocation.getLocType() == BDLocation.TypeGpsLocation) {connrentPosition.append("GPS");} else if (bdLocation.getLocType() == BDLocation.TypeNetWorkLocation) {connrentPosition.append("网络定位");}runOnUiThread(new Runnable() {@Overridepublic void run() {text.setText(connrentPosition);}});}@Overridepublic void onConnectHotSpotMessage(String s, int i) {}}@Overrideprotected void onResume() {super.onResume();map.onResume();}@Overrideprotected void onPause() {super.onPause();map.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();client.stop();map.onDestroy();baidumap.setMyLocationEnabled(false);}
}

效果图:


Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK相关推荐

  1. LBS 基于位置的服务

    LBS隐私保护的一些看法 2016年12月07日 13:50:25 阅读数:2214 标签: 物联网隐私lbs 更多 个人分类: 分布式虚拟化 版权声明:本文为博主原创文章,转载请注明出处,查看原文章 ...

  2. 第一行代码十一章:(基于位置的服务) 3C-58-C2-5D-F8-FE

    基于位置的服务 1.申请API 2.使用百度定位 3.在手机上出现自己的位置 1.申请API 在做位置服务时需要申请属于自己的API,所以必须要先成为一个百度开发者,注册的网址如下:hppt//:de ...

  3. 基于位置的服务器,用于基于位置的服务的移动台-服务器协议

    具体实施方式 以下将结合示例性无线通信系统和相关联的基于位置的服务来示出本发明.然而,应当理解,本发明不限于与任何特定类型的无线系统或者基于位置的服务结合使用.公开的技术适于与各种其他系统结合使用,并 ...

  4. 基于位置的服务(简介)

    基于位置的服务(Location Based Services,LBS) 一. 基于位置的服务(Location Based Services,LBS)是指采用无线定位.GIS.Internet.无线 ...

  5. [android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题

           前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索",主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Intere ...

  6. android开发百度地图坐标偏差,利用百度地图Android sdk高仿微信发送位置功能及遇到的问题...

    接触了百度地图开发平台半个月了,这2天试着模仿了微信给好友发送位置功能,对百度地图的操作能力又上了一个台阶 我在实现这个功能的时候,遇到一些困难,可能也是别人将会遇到的困难,特在此列出 1.在微信发送 ...

  7. 百度地图android自定义文字,Android SDK | 百度地图API SDK

    什么是百度地图Android SDK? 百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口, 您可以通过该接口实现丰富的LBS功能: 地图:提供地图(2D.3 ...

  8. 百度地图 Android SDK - 检索功能使用的简单演示样例

    百度地图 SDK 不仅为广大开发人员提供了炫酷的地图展示效果.丰富的覆盖物图层,更为广大开发人员提供了多种 LBS 检索的能力. 通过这些接口,开发人员能够轻松的訪问百度的 LBS 数据,丰富自己的移 ...

  9. android地图模式,百度地图Android V2.0新增卫星图及3D模式功能

    近日,百度地图Android版V2.0正式对外发布.本次升级引入了全新引擎.全新数据并采用全新界面,因此这个版本被称为全新跨代版.它不仅为用户打造更加优质精准的地图检索及浏览感受,同时还有效节省使用地 ...

最新文章

  1. h.264的POC计算
  2. educoder答案python玩转列表_2020大学mooc用Python玩转数据章节测验答案
  3. MTK:oemlock介绍
  4. 团购硝烟慢慢散去之时:从团购身上我们可以学到什么?
  5. JS组件系列——自己动手扩展BootstrapTable的 冻结列 功能:彻底解决高度问题
  6. boost::mpl模块实现set相关的测试程序
  7. vb初学者编程代码大全_VB编程应该如何学习?
  8. 怎样才算得上合格的程序员
  9. 范例 在 Setting 里加入 HiApk Settings 选项
  10. 银行电子支付接口概述
  11. 偏微分方程数值解法python_微分方程数值方法和偏微分方程有什么区别吗?
  12. 初次使用dcm4che-tool-findscu做查询
  13. php的gc回收机制,php垃圾回收机制相关(GC)
  14. 现成源码抢单软件开发|服务器
  15. VB操作IE浏览器完全控制
  16. Spring Security系列教程03--创建SpringSecurity项目
  17. Win10系统下如何有效的关闭易升(系统自动更新)
  18. 谷歌安装插件Fatkun 批量保存网页图片
  19. Innodb存储引擎-idb文件格式解析
  20. python中类的self到底是什么

热门文章

  1. 迈出物联网的第一步,玩儿一下Arduino
  2. WSGI和PASTE
  3. 从ThinkPHP框架核心讨论C、E、G、L、T、I、N...等函数
  4. Event delegate
  5. ISA Server 2004 FAQ集
  6. Vuebnb:一个用vue.js和Laravel构建的全栈应用
  7. SFB 项目经验-28-设置-所有用户-OWA-时区-语言-跳过-时区设置)
  8. MySQL的并发控制与加锁分析
  9. OSChina 周二乱弹 ——在影楼工作的妹子,可追不?
  10. MaxCompute(原ODPS) 脑图 - 常用知识总结