转:如何获取某人的所在物理位置

2023-05-16

如何获取某人的所在物理位置?(andorid手机GPS、基站定位、JSON获取基站定位信息)  

原文地址: http://cyad.blog.163.com/blog/static/5436879201172673732642/ 

要解决这个问题首先要满足的几个条件:

1、对方一定使用的是智能操作系统手机,比如:andorid、wm、iphone等等。

2、对方的手机上一定要有一个软件可以通过GSM/CDMA/GPS获取当前手机所在位置。该软件就是本文要介绍的。

这里本人用ANDROID2.1的系统举例,怎样构造一个获取对方物理位置信息的程序。

首先,需要搞清楚在手机上获取坐标的方法,通过最近一段时间的学习和总结,一共发现有三种方法:

1、如果手机上有GPS功能,并且一直开启,并且手机已经能够联系上4颗通讯卫星,那么可以使用GPS功能直接获取到坐标。

2、如果手机上没有GPS功能,那么通过无线基站的定位服务也可以获取到坐标。

3、如果基站不提供这种服务,我们可以通过手机获取其所在的物理位置区域编号,并使用google提供的Geolocation API Network Protocol来查询手机所在区域位置。

从准确性上将从方法1到3以此递减。其次要考虑的问题是通过什么方式获取对方手机信息,首先想到的是通过GPRS连接建立TCP/IP通信方式,但这种方式需要对方实时连接2G或3G网络,对于现在大多数人来说资费是个问题,不太可能实时的开启数据网络。另外一种方式就是通过短信方式,即,给对方手机发送一条特殊的短信,短信中携带一个特殊的标识,当对方手机收到这个标识时,启动定位程序,定位程序通过上述3种方式的其中一种获取位置信息,并再次通过短信方式将结果发回本端手机。

程序模型如下:

发送端手机 -----> 短信请求 -----> 接收端手机 ------> 对方手机处理短信并进行定位 -----> 短信回复 -----> 发送端手机 -----> 解析坐标数据并查地图软件显示

对方手机处理短信并进行定位,流程如下:

2.1 通过GPS定位,如果成功,则回复位置短消息,如果失败,则进入2.2

2.2通过无线基站定位,如果成功,则回复位置短消息,如果失败,则进入2.3

2.3 通过手机所在cell区域码,用json向google服务器请求定位

整个模型如图所示:

 

 

 

在andorid2.1上开发的几个重要步骤:

1、配置开发环境:http://www.hzlitai.com.cn/article/ARM11/SYSTEM/android.html

2、发送端只需要人为直接发送短信,暂时不需要开发。

3、接收端中的使用到的几个ANDROID API:

a>短信拦截和读取

b>gps provider坐标信息receiver的注册

c>network provider坐标信息receiver的注册

d>android.telephony.gsm.GsmCellLocation获取cell位置的方法

e>通过google Geolocation API Network Protocol 参考:http://code.google.com/intl/zh-CN/apis/gears/geolocation_network_protocol.html查询cell物理位置坐标方法

4、本端手机拿到坐标之后,查询google map得到地图位置。

为了实验的简单性,本人将第4步省略,直接使用短信中的坐标在PC上打开google map手工查询。

以下是实现代码实现中的一些设计说明:

1、LocateTest类,主程序入口,负责其他类实例的初始化和析构,是整个程序的驱动。

2、ReceiverDemo类,用于接收短消息,并解析定位标识,回送带有坐标信息的短信。来源:http://blog.csdn.net/duchunchao/archive/2010/12/23/6093776.aspx

3、MyLocationManager类,完成订阅GPS发来的位置信息、处理和保存,另外还完成基站提供的位置信息订阅、处理和保存。来源:http://veright.blog.163.com/blog/static/28345389201062211719890/

4、JsonLocation类,通过获取手机中保存的基站位置编号,通过发送json请求从google服务器获取位置信息。

实验效果:

由于本人的手机在房间里,GPS需要4颗卫星才能够定位,所以程序尝试第一次使用GPS定位会失败,然而不知道为什么移动的基站也不能正确提供定位信息,所以第二次尝试也失败了,最后一次使用手机所在的cell区域信息,发送了一个json请求给google服务器,获得了响应,这里本人使用了#w做为请求标识,手机收到之后回复了以下短信:

{"location":{"latitude":40.071562,"longitude":116.321943,"address":{"country":"China","country_code":"CN","region":"Beijing","city":"Beijing","street":"Longxi 3rd St"},"accuracy":594.0},"access_token":"2:GTwWburFjSG2tX9k:e9nVRO7o1by6-E9p"}

通过纬度40.071562和经度116.32194,查google地图,结果如下:



本人是在红色圈地点做的实验,而这个经纬度在地图上标识的是绿色箭头位置,相距有500m左右(直线距离),看来通过基站区域定位无法精确定位到手机位置。

此程序有一个缺陷,就是在使用json定位时,直接使用的是gsm类获取cell位置信息,所以改程序暂不支持json方式查询CDMA手机位置。有兴趣的朋友可以完善一下。

程序改进点:通过上图可以发现,其实接收端在通过json进行定位时,对端手机还是需要通过GPRS网络访问google服务器,所以这对对端手机有能够上网的假设。而如果将cell编码直接传回本端手机,然后由本端手机向google服务器请求位置成功率将大大提高。不过这样就省不了在本端手机开发代码的问题。

对源代码感兴趣的朋友,可以加我的QQ:13480461,或给我发邮件:lyf219@163.com,免费提供,欢迎探讨交流。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

转:如何获取某人的所在物理位置 的相关文章

随机推荐

  • 云服务器内存不够,设置swap交换分区

    购买了一台阿里的云服务器1核2G的 xff0c 装上docker后 xff0c 运行了十几个容器后面的容器就再也没法启动了 xff0c 一看物理内存为0 xff0c 加内存又没钱 xff0c 只能牺牲速度了 xff0c 阿里云的服务器默认是
  • sql 拼接一列数据为一个字段

    最近有个功能中需要把一列数据拼接成一个字段的需要 xff0c 本以为concat 轻松就能实现 xff0c 结果却差点意思 xff0c 这个是拼接一行之间的 xff0c group concat 需要分组才能拼接组内的一列数据 xff0c
  • idea反编译

    idea有自带的反编译插件java decompiler jar xff0c 默认是安装的 这个工具包在F Program Files JetBrains IntelliJ IDEA 2020 2 3 plugins java decomp
  • android远程协助

    一部手机有时候需要远程协助另一台手机如QQ的远程协助一样 xff0c 准备两个手机 下面用AB代替 1 A手机 xff08 需要被协助的手机 xff09 开启开发者选项 xff0c usb连接电脑 xff0c 命令开启ADB xff08 手
  • 阿里云服务器安装图形界面

    为了自动化流程安装图形界面 xff0c 我的服务器是Centos7 1 yum安装gnome图形界面 yum groupinstall GNOME Desktop y 2 安装远程桌面服务端 yum y install tigervnc s
  • 国网 内网U盘 服务未启动 驱动版本不符问题

    国网内网U盘问题处理 1 提示服务未启动 是因为Bios开启了Secure BOOT xff0c 将这个选项设置为disable就可以 xff0c 进入Bios这个选项有的主板在Boot选项下 xff0c 有的在Security选项下 xf
  • 【C++】面试题目,整理自牛客网

    来源 1 写出完整版的strcpy函数 char strcpy char strDest const char strSrc assert strDest 61 NULL amp amp strSrc 61 NULL char addres
  • 卡尔曼滤波

    系列文章目录 前言 一 线性高斯系统 二 卡尔曼滤波算法 1 卡尔曼滤波算法的应用 2 卡尔曼滤波的数学推导 1 预测部分的推导 2 观测部分的推导 前言 最近在阅读概率机器人这本书 xff0c 读到了卡尔曼滤波的相关内容 xff0c 想要
  • xcode升级到6.2,解决了simulator国际化无法获取中文的问题

    问题描述 xff1a http blog csdn net aileenyuxiao article details 42704917 xcode最近升级到6 2 xff0c 这个bug也一起解决了 xff0c 只需要修改simulator
  • 利用OOQP求解二次凸优化问题

    最近使用到了OOQP求解凸优化问题 xff0c 所以记录一下求解简单的二次凸优化问题 目录 一 OOQP安装 二 OOQP相关介绍 三 例题 1 数学例题 2 代码求解 3 求解结果 总结 一 OOQP安装 参考了浙大高飞老师团队提供的 O
  • 一、pixhawk 开发之 QGroundControl 安装

    提示 xff1a 地面站 xff08 QGroundControl xff09 安装 一 注意事项 1 There are known video steaming issues on Ubuntu 18 04 systems with d
  • git bash可以正常commit,但是 VSCode 里不能正常commit使用的解决方法

    问题描述 同一路径下的源码 xff0c 使用git bash可以正常commit xff0c 但是使用vscode提交commit就会一直卡住 xff0c 转圈圈 参考方案链接 xff1a VS CODE GIT 500 问题处理 pudn
  • Windows和Linux双系统安装教程

    最近刚刚完成了Windows和Linux双系统 xff08 这里以Ubuntu安装为例 xff09 的安装 xff0c 应某奔同学要求 xff0c 这里简单记录下安装过程 系统启动盘准备Windows系统安装分出给Linux系统的磁盘空间安
  • Level5#Unit1#Part1#Dialogue#A-Customer-Complaint

    Is this the ACE service center Yes it is sir May I help you Yes I 39 m calling to complain about your service Certainly
  • Level5#Unit1#Part2#Listening#At-Jessica’s-Reunion-Party1

    Jessica 39 s 20 year classreunion was held at a fancy hotel When she arrived she wasn 39 t sure she was in the right pla
  • Level5#Unit2#Part1#Dialogue#The-Teenage-Years

    What 39 s so funny What are you writing about I 39 m writing about something I saw earlier this morning Really Do you ke
  • nginx环境wordpress 固定链接实现…

    开始几次设置wordpress的固定链接都没成功 xff0c 今天做松子价格网时不甘心 xff0c 试了几次OK了 其实nginx环境下设置wordpress固定链接 xff08 也叫伪静态 xff09 非常简单 xff08 我是用的是wo
  • 如何使用vb.net多线程

    可能一些小程序用不上 xff0c 单线程就可以完成 xff0c 但是很多程序往往需要多个线程同时操作 xff0c 或者用辅助线程来完成主线程的工作 xff0c 多线程对于一个程序员来说是一个必须逾越的槛 最近在写一个程序 xff0c 设备要
  • 准备自己做块飞控,先看看方案

    主要参考是CC3D和crazyflie 2 0 xff0c 双CPU xff1a STM32F405RG xff0c 和STM32F103相比 xff0c 支持浮点运算 xff0c 168MHz xff0c 片上存储空间大 xff0c 考虑
  • 转:如何获取某人的所在物理位置

    如何获取某人的所在物理位置 xff1f xff08 andorid手机GPS 基站定位 JSON获取基站定位信息 xff09 原文地址 xff1a http cyad blog 163 com blog static 54368792011