*位置的服务(Location Based Service)

基于位置的服务简称LBS,主要的工作原理就是利用无线电通讯网络或GPS等定位方式来确定出移动设备所在的位置。
基于位置的服务所围绕的核心就是要先确定出用户所在的位置。一种是通过GPS定位,一种是通过网络定位。GPS定位的工作原理是基于手机内置的GPS硬件直接和卫星交互来获取当前的经纬度信息,这种定位方式精确度非常高,但确定是只能在室外使用,室内基本无法接受到卫星的信号。网络定位的工作原理是根据手机当前网络附近的三个基站进行测速,以此计算出手机和每个基站之间的距离,在通过三角定位确定出一个大概的位置,这种定位方式精确度一般,但有点是在室内室外都可以使用。(引用郭霖老师书中的知识)
首先需要申请百度地图密钥: https://blog.csdn.net/weixin_42813606/article/details/88556804.这个连接里面有如何获取密钥。
还得需要申请百度地图SDK,在这里我就不介绍如何申请了,申请下来的就是如下所示:
话不多说,先上个案列更加明确。
首先需要创建一个安卓项目,这个我就更加不要接受如何创建了。
只需要把压缩包放进libs下面,其他的需要在创建一个包名字为jniLibs,
jniLibs文件夹是默认的,如果用其他名字需要在app目录下gradle配置文件中指定重定向的目录,没有必要了。
在xml中编写如下代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:id="@+id/position_text_view"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>

主要是通过一个TextView来显示出。
在java中编写如下代码:

public class MainActivity extends AppCompatActivity {public LocationClient mLocationClient;//定位服务的客户端。宿主程序在客户端声明此类,并调用private TextView positionText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mLocationClient=new LocationClient(getApplicationContext());//调用getApplicationContext()方法来调用一个全局的Context参数并传入mLocationClient.registerLocationListener(new MyLocationListener());//调用.registerLocationListener()方法来注册一个定位监听器,当你获得//位置信息的时候,就会回调这个定位监听器setContentView(R.layout.activity_main);positionText=(TextView)findViewById(R.id.position_text_view);List<String> permissionList=new ArrayList<>();if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);}if (ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_PHONE_STATE)!=PackageManager.PERMISSION_GRANTED){permissionList.add(Manifest.permission.READ_PHONE_STATE);}if (ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED){permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);}if (!permissionList.isEmpty()){String[] permissions=permissionList.toArray(new String[permissionList.size()]);ActivityCompat.requestPermissions(MainActivity.this,permissions,1);}else {requestLocation();}}private void requestLocation() {initLocation();mLocationClient.start();//开始定位,定位的结果会回调到我们前面注册的监听器中MyLocationListener//LocationClient的start()方法只会定位一次}private void initLocation() {LocationClientOption option=new LocationClientOption();option.setScanSpan(4000);//设置更新的间隔 多长时间进行一次请求option.setIsNeedAddress(true);//是否获取当前详细的地址信息mLocationClient.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;}}requestLocation();}else {Toast.makeText(this,"发生未知错误",Toast.LENGTH_SHORT).show();finish();}break;default:}}public class MyLocationListener implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation bdLocation) {StringBuilder currentPosition=new StringBuilder();//BDLocation的getLatitude()方法获取当前位置的纬度currentPosition.append("纬度:").append(bdLocation.getLatitude()).append("\n");//BDLocation的getLongitude()方法获取当前位置的经度currentPosition.append("经线:").append(bdLocation.getLongitude()).append("\n");currentPosition.append("国家:").append(bdLocation.getCountry()).append("\n");currentPosition.append("省:").append(bdLocation.getProvince()).append("\n");currentPosition.append("市:").append(bdLocation.getCity()).append("\n");currentPosition.append("区:").append(bdLocation.getDistrict()).append("\n");currentPosition.append("街道:").append(bdLocation.getStreet()).append("\n");currentPosition.append("定位方式:");//BDLocation的getLocType()方法获取当前位置的定位方式if (bdLocation.getLocType()==BDLocation.TypeGpsLocation){currentPosition.append("GPS");}if (bdLocation.getLocType()==BDLocation.TypeNetWorkLocation){currentPosition.append("网络");}positionText.setText(currentPosition);}}@Overrideprotected void onDestroy() {super.onDestroy();mLocationClient.stop();}
}

主要的我在代码上已经注释了,在这里我就不在讲述了。
最后别忘了要设置权限和注册你所申请的百度密钥:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="com.example.lbstest3"><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"tools:ignore="ProtectedPermissions" /><uses-permission android:name="android.permission.READ_LOGS"tools:ignore="ProtectedPermissions" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><meta-data android:name="com.baidu.lbsapi.API_KEY"android:value="ADuRoL0gilmwrS6MnskQyWGSaaQxhwaH"/><service android:name="com.baidu.location.f" android:enabled="true"android:process=":remote"/></application></manifest>

这是Manifest.xml中要写的。
这就是一个简单的定位你所在的位置。
效果图如下:

安卓之位置服务(简单定位用户所在的位置)相关推荐

  1. 【微信小程序腾讯位置服务】获取用户所在城市信息实战

    背景 实现小程序进去后获取用户当前所在城市,然后显示该城市的数据,并且显示在导航栏和 Tab上. 微信小程序中,我们可以通过调用wx.getLocation()获取到设备当前的地理位置信息,这个信息是 ...

  2. 微信公众号定位用户所在位置

    微信公众号定位用户所在位置 最近由于项目的原因,涉及到了微信公众号,看了几天文档加上问了问同事,对这个玩意有一点了解,写一下微信公众号定位的方法,记一下以后方便用. //获取codevar url = ...

  3. 无需写代码,在EXCEL表中定位坐标所在地图位置

    一 前言 EXCEL是我们日常工作学习数据处理的办公软件,操作易上手,几乎人人都会用.EXCEL表格能够处理各种数据,包括经纬度坐标数据,然而EXCEL自带的功能仅能对坐标数据进行增删改等常规的操作. ...

  4. 根据IP定位用户所在城市信息

    2019独角兽企业重金招聘Python工程师标准>>> 当我们在页面中填写个人资料中的省市信息时,页面会根据当前用户所在的城市自动选中省市下拉选项:当我们访问某个大型站点时,网站程序 ...

  5. 微信定位当前城市 php,html5,javascript_微信内置浏览器如何定位用户所在城市,html5,javascript - phpStudy...

    微信内置浏览器如何定位用户所在城市 我的代码这样写的,但是有个问题,在wifi网络下可以正确定位(杭州),但是把网络切换到移动网络比喻4G网络就不准确了,我在杭州,但是定位显示温州. $(functi ...

  6. python根据经纬度确定省份_根据经纬度定位用户所在城市

    //根据经纬度定位用户所在城市 if (navigator.geolocation){ navigator.geolocation.getCurrentPosition(showPosition, s ...

  7. 基于位置服务,手机定位

    基于位置的服务简称LBS(Location Based Service) 基于位置的服务简称LBS,主要的工作原理就是利用无线电通讯网络或GPS等定位方式来确定出移动设备所在的位置. 归根结底,其实基 ...

  8. 怎样打开微信定位服务器地址,微信位置服务功能,能知道对方位置,你们知道怎么用吗!...

    我们是经常使用微信了,实际微信隐藏着一个位置的一个功能,不管在什么地方,都可以实时知道对方的位置信息,尤其是家里的老人和孩子,一定要学会该怎么操作呢?带大家一起来看一下.微信究竟隐藏着哪些实用的功能呢 ...

  9. Android地图定位-百度地图上定位自己所在的位置

    一 效果图 二 主要代码 BaseActivity.java package com.itheima.baidumap74;import com.baidu.mapapi.map.BaiduMap; ...

最新文章

  1. js更改html元素颜色,HTML - 使用JS根据值更改文本的颜色
  2. 如何构建一套高性能、高可用性、低成本的视频处理系统?
  3. 日历签到 java_我的Android案例―签到日历
  4. 斯坦福大学CS520知识图谱系列课程学习笔记:第二讲如何构建知识图谱
  5. Ubuntu下安装Oracle Instant Client
  6. error汇总:dpkg: error processing package *** (--configure)
  7. python自动获取北京时间_python实现定时同步本机与北京时间的方法
  8. Photoshop插件-证件照-白红蓝底-PS插件-脚本开发
  9. 大学计算机系最努力的同学都是如何学习的?
  10. OC - @preperty的一些修饰词
  11. Apache服务器访问过慢分析及解决
  12. PHP+ajaxfileupload 实现用户头像上传
  13. Shell脚本之免交互
  14. mysql 汉字字母拼音_mysql 汉字按拼音字母排序、获取拼音首字母、拼音全拼
  15. 20220109训练-腿
  16. SSL_ERROR_BAD_CERT_DOMAIN 部署 ssl证书后仍显示潜在风险
  17. Excel如何将多列数据合并为一列
  18. 思科模拟器教程-OSPF动态路由端口认证
  19. postman json格式文档转word表格文档
  20. Linux(ubunto)安装flash教程

热门文章

  1. Oracle 10.2 流复制问题(二)—— C001: large txn detected
  2. ubuntu双系统引导梅花_Win10+ubuntu 双系统安装顺顺利利!
  3. 在unbuntu16.04上安装网易云音乐
  4. 我的大学(一)-----回顾与反思
  5. 对虎牙直播进行爬取,并对信息进行处理分析
  6. 简单的在html中引入地图
  7. Python学习笔记(5)
  8. 一文带你深入浅出C语言运算符、表达式和语句
  9. 题8:二叉树的下一个结点
  10. 大师级管理人物盘点:“颠覆性技术“提出者-克里斯坦森