基于位置的服务简称LBS(Location Based Service)

基于位置的服务简称LBS,主要的工作原理就是利用无线电通讯网络或GPS等定位方式来确定出移动设备所在的位置。
归根结底,其实基于位置的服务所围绕的核心就是要确定出自己所在的位置,这在Android中并不困难,主要借助LocationManager这个类就实现了。

LocationManager的基本用法:

package com.example.locationservice;import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/*** 获取LocationManager实例对象。getSystemService()方法接收一个字符串参数用于确定获取系统的那个服务,* 这里传入Context.LOCATION_SERVICE即可。* *Android中一般有三种位置提供器可供选择,GPS_PROVIDER、NETWORK_PROVIDER和PASSIVE_PROVIDER。* 其中前两种使用的比较多,分别表示使用GPS定位和使用网络定位。* GPS定位的精确度比较高,但是非常耗电。* 网络定位的精确度稍差,但耗电量比较少。*///1.获取LocationManager实例对象LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);//2.获取位置提供器String provider = LocationManager.NETWORK_PROVIDER;//3.将选择好的位置提供器传入到getLastKnownLocation()方法中,就可以得到一个Location对象/**Location对象中包含了经度,纬度,海拔等一系列的位置信息*/Location location = locationManager.getLastKnownLocation(provider);}
}

如果有些时候你想让定位的精度尽量高一些,但又不确定GPS定位的功能是否已经启用,这个时候就可以先判断一下有哪些位置提供器可用。

/**
* getProviders()方法接收一个布尔型参数,传入true就表示只有启用的位置提供器才会被返回。
* 之后再从providerList中判断是否包含GPS定位的功能就行了。
*/
List<String> providerList = locationManager.getProviders(true);
另外,调用getLastKnownLocation();方法虽然可以获取到设备当前的位置信息,但是用户是完全有可能带着移动设备随时移动的,那么我们怎样才能在设备位置发生变化的时候获取到最新的位置信息呢?不用担心,LocationManager还提供了一个requestLocationUpdates()方法,只要传入一个LocationListener的实例。
/*** 这里requestLocationUpdates()方法接收四个参数* String provider: 位置提供器的类型* long minTime: 监听位置变化的时间间隔,以毫秒为单位* float minDistance:   监听位置变化的距离间隔,以米为单位* LocationListener listener:    LocationListener监听器* * 这样,LocationManager每隔5秒钟会检测一下位置的变化情况,当移动距离超过10米的时候,* 就会调用LocationListener的onLocationChanaged()方法,并把新的位置信息作为参数传入。*/locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, new LocationListener() {@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {// TODO Auto-generated method stub}@Overridepublic void onProviderEnabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onProviderDisabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onLocationChanged(Location location) {// TODO Auto-generated method stub}});

确定自己位置的经纬度:

activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent" ><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="我的位置坐标:"android:textSize="18sp"android:id="@+id/tv_location"android:textColor="#f00" /></RelativeLayout>

MainActivity.java

package com.example.locationservice;import java.util.List;import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends Activity {private TextView tvLocation;private String provider;private LocationManager locationManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tvLocation = (TextView) findViewById(R.id.tv_location);//1.获取LocationManager对象locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);//2.获取所有可用的位置提供器List<String> allProviders = locationManager.getAllProviders();if(allProviders.contains(LocationManager.GPS_PROVIDER)){provider = LocationManager.GPS_PROVIDER;}else if(allProviders.contains(LocationManager.NETWORK_PROVIDER)){provider = LocationManager.NETWORK_PROVIDER;}else{//当没有可用的位置提供器时,弹出Toast提示用户Toast.makeText(this, "没有可用的位置提供器", Toast.LENGTH_SHORT).show();}//3.获取到记录当前位置信息的Location对象了Location location = locationManager.getLastKnownLocation(provider);if(location!=null){//显示当前设备的位置信息showLocation(location);}//4.为了监测到位置信息的变化locationManager.requestLocationUpdates(provider, 5000, 1, locationListener);}@Overrideprotected void onDestroy() {super.onDestroy();if(locationManager!=null){//关闭程序时将监听器移除,保证不会继续耗费手机的电量locationManager.removeUpdates(locationListener);}}LocationListener locationListener = new LocationListener() {@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {// TODO Auto-generated method stub}@Overridepublic void onProviderEnabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onProviderDisabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onLocationChanged(Location location) {// 更新当前设备的位置信息showLocation(location);}};/**显示位置信息*/private void showLocation(Location location) {String j = "经度:"+location.getLongitude();String w = "维度:"+location.getLatitude();String accuracy = "精确度:"+location.getAccuracy();String altitude = "海拔" + location.getAltitude();tvLocation.setText(j+"\n"+w+"\n"+accuracy+"\n"+altitude);}
}

在清单文件中加入权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>


首先看一下手机定位都有哪些方式:
1.网络定位
根据ip地址定位,ip地址和实际地址形成一个数据库,可以根据ip在数据库中查出具体地址。
缺点:ip地址动态分配,会导致定位不准确
2.基站定位
范围:几百米到几公里不等,范围比较广。
3.GPS定位
至少需要3颗卫星,GPS使用24颗卫星,基本可以覆盖全球90%的区域。
范围:几米到几十米不等
缺点:容易受云层,建筑等干扰。
4.A-GPS,辅助GPS定位系统
通过网络和GPS共同定位,一般Android手机都采用此种定位方式。
范围:几米到几十米不等。

基于位置服务,手机定位相关推荐

  1. 基于位置服务(Location Based Service)lbs

    LBS英文全称为Location Based Services, 它包括两层含义:首先是确定移动设备或用户所在的地理位置:其次是提供与位置相关的各类信息服务.意指与定位相关的各类服务系统,简称&quo ...

  2. 服务器位置超差保护,浅议基于位置服务(LBS)的隐私保护

    范勇 蔡键 摘要:LBS隐私的泄露问题不仅包含用户提交的位置和查询数据,更是包含了其中隐藏的用户身份.兴趣爱好.社会习惯.行为模式等.文章重点介绍了位置服务的几种应用场景,并且对LBS隐私保护体系结构 ...

  3. 基于位置服务的信息推送系统设计

    1.1  研究目的与意义 随着空间信息技术和网络技术的快速发展,普通的地图信息展示已经无法满足人们的需求.GIS(Geographic Information System)作为拥有处理和分析空间信息 ...

  4. 服务器位置超差保护,基于位置服务的隐私保护方法研究

    摘要: 由于带有定位功能的智能手机的普及,以及车载移动计算的发展,基于位置的服务已逐渐进入人们的生活范围,为人们的生活带来便利.从传统意义上来说移动用户是基于位置服务的消费者,但是越来越多的社会应用显 ...

  5. android 基于位置服务,Android 基于位置服务的基本知识

    1.在android平台使用位置服务需要使用位置管理器,获得方法如下: String locationService =Context.LOCATION_SERVICE; LocationManage ...

  6. 【作品展】-- 2011年第十一届挑战杯作品“基于位置的手机即时通信系统的研究与实现”展板设计...

    转载于:https://www.cnblogs.com/xusheng/archive/2012/03/28/2421334.html

  7. 位置信息、定位技术与位置服务

    位置是物联网信息的重要属性之一,缺少位置的感知信息是没有实用价值的,位置服务采用 定位技术 ,确定智能物体当前的地理位置,利用 地理信息系统技术 与 移动通信技术,向物联网中的智能物体提供与其位置相关 ...

  8. 手机lbs位置服务盘点

    2019独角兽企业重金招聘Python工程师标准>>> 位置服务(LBS,Location Based Services)指的是通过移动终端和移动网络的配合,确定移动用户的实际地理位 ...

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

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

最新文章

  1. 在jsp中点击按钮,在bean中把已经查出的数据,生成csv文件,然后在ie中自动打开
  2. mysql use index用法_MySQL中USE INDEX 和 FORCE INDEX
  3. Zabbix分布式监控(zabbix-proxy)的配置关键点
  4. linux服务器系统内核参数优化
  5. 【OpenCV应用】python处理行李图像匹配项目——图像直方图应用与明暗变换
  6. python入门经典代码-【python】编程语言入门经典100例--12
  7. java开发怎么包装_Java开发知识之Java的包装类
  8. redis sentinel 哨兵
  9. 学生成绩信息的增删改查 通过控制台实现
  10. 如何转换html转化mp4,格式互转技巧:webm格式怎么转换mp4?
  11. oracle磁带库清洁带标签,分享那些在磁带库上爬过的坑
  12. matinee和matin区别_【近义词辨析】An和Année, Jour和Journée如何区别
  13. 记一次百度知识图谱面试经历(cold)
  14. 5.2.1_3 普通心理学(彭冉玲第四版) - 第2章 心理的神经生理机制
  15. 厉害,超乎想象,鹅厂程序员占比近 7 成
  16. 儿童定位手表、定位器、老人健康手表的工作原理
  17. 交换机的几种配置方法
  18. Revit二次开发环境平台的搭建
  19. 【ThreeJS基础教程-材质纹理篇】3.1 纹理知识进阶
  20. html遍历map,forEach()方法遍历map()方法数组遍历

热门文章

  1. 复习系列之大话数据结构
  2. 软件测试简单经验心得分享
  3. Android开发单选按钮功能,Android单选按钮RadioButton的使用详解
  4. 在计算机网络数据传输时最佳交换数据方式,计算机网络基础:数据通信技术之数据交换技术(二)...
  5. python计算均方根误差_scikit学习:如何计算均方根误差(RMSE)的百分比?
  6. MatConvNet安装
  7. plsql大量插入数据卡死
  8. H5 调用扫一扫识别条形码 并返回内容值
  9. 常见的损失函数(代价函数)
  10. weka平台贝叶斯算法