博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android手机定位技术的发展
阅读量:6445 次
发布时间:2019-06-23

本文共 2817 字,大约阅读时间需要 9 分钟。

基于以下三种方式的移动位置:1. 网络位置 ;2. 基站定位。 3. GPS定位

1 网络位置

     前提是连接到网络:Wifi、3G、2G

  到达IP址

 比如:彩虹版QQ,珊瑚虫版QQ,就有一个功能显示对方的IP;
 依据IP显示详细的位置;
 原理是建立一个库那个IP地址相应那个地方。早期警方破案就採用此特点;
 有局限性:针对固定的IP地址。
 假设手机网或者ip地址是动态分布IP,这个偏差就非常大。

这样的情况是无法满足需求的。

2 基站定位

    工作原理:手机能打电话,是须要基站的。手机定位也是用基站的。

手机附近能收到3个基站的信号,就能够定位了。

基站定位有可能非常准确。比方基站多的地方;
假设基站少的话就会相差非常大。

准确度:几十米到几公里不等;

3 GPS定位

A-GPS 使用了卫星定位 须要联网辅助修正位置(手机常常使用,优先请求网络,获取之前保存的卫星轨道的信息cache,)

特点是:须要搜索卫星, 头顶必须是空旷的;
影响条件:云层、大厦、大树。

下面是实现的代码:

package com.andy.gpsdemo;import com.example.gpsdemo.R;import android.support.v7.app.ActionBarActivity;import android.widget.TextView;import android.location.Criteria;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;public class MainActivity extends ActionBarActivity {	// 位置服务	private LocationManager locationManager;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);		/*List
provider = locationManager.getAllProviders(); for (String string : provider) { System.out.println(string); }*/ // 注冊监听位置服务 // 给位置提供者设置条件 Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE);// 获取精确的位置 // criteria.setAccuracy(Criteria.ACCURACY_FINE);//设置为最大精度 // criteria.setAltitudeRequired(false);//不要求海拔信息 // criteria.setBearingRequired(false);//不要求方位信息 // criteria.setCostAllowed(true);//是否同意付费 // criteria.setPowerRequirement(Criteria.POWER_LOW);//对电量的要求 String proveder = locationManager.getBestProvider(criteria, true); locationManager.requestLocationUpdates(proveder, 0, 0, new LocationListener() { @Override public void onLocationChanged(Location location) { // 当改变位置时回调 String longitude = "经度:" + location.getLongitude(); String latitudeString = "维度:" + location.getLatitude(); String accuracy = "准确度:" + location.getAccuracy(); TextView textView = new TextView(MainActivity.this); textView.setText(longitude + "\n" + latitudeString + "\n" + accuracy); setContentView(textView); } @Override public void onProviderDisabled(String provider) { // 当一个位置提供者不能够使用 } @Override public void onProviderEnabled(String provider) { // 当一个位置提供者能够使用 } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // 当状态发生改变的时候回调 开启--关闭 。关闭--开启 } }); }}
布局文件为:

须要增加的权限为:

<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>//模拟器測试使用

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

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
小tip:纯CSS让overflow:auto页面滚动条出现时不跳动
查看>>
Linq Like
查看>>
Linux知识积累(4) Linux下chkconfig命令详解
查看>>
centos关机与重启命令
查看>>
[Eth]Mac/Phy/mdio/Rgmii
查看>>
C++中的函数指针和函数对象总结
查看>>
ELK学习总结(3-2)elk的过滤查询
查看>>
快速定位oracle故障-恩墨
查看>>
Redis可视化工具 Redis Desktop Manager
查看>>
Go基础系列:为select设置超时时间
查看>>
Android网络请求之OkHttp框架
查看>>
《Apache Kafka实战》读书笔记-调优Kafka集群
查看>>
小程序开发事项
查看>>
福利 | 2018各大技术大会资料汇总(可下载)
查看>>
寻找下一代CTO - 激发潜能把握成功!!
查看>>
用DELPHI 开发压缩、解压、自解压、加密
查看>>
Linux命令行得到系统IP
查看>>
SQL Server索引的维护 - 索引碎片、填充因子 <第三篇>
查看>>
python类型转换、数值操作(收藏)
查看>>
mysql delimiter
查看>>