android 如何去获取手机Gps的ios gps信号强度度

工具类服务
编辑部专用服务
作者专用服务
Android平台下基于无线信号强度的定位系统的实现
随着3G网络的大规模建设与智能移动终端的迅速普及,移动互联网时代已经到来,定位系统更是成为移动通讯设备的缺省配置。然而,众所周知的是:目前在用户群体中普及的全球定位系统(GPS)是依靠通讯卫星实现定位,并将结果传送至移动网络的。虽然在户外环境中能提供精确的位置信息(包括精度、纬度、速度、时间、轨迹等参数),但是无法确定垂直方向上的位置变化。此外,全球定位系统还必须要求定位的环境要在卫星的视距范围之内。一旦将GPS设备移至室内,通讯卫星的信号受建筑物的影响而大大衰减,设备也就无法正常工作,使定位功能大打折扣。基于信号强度的无线局域网定位系统是一个室内定位系统,它利用现有的无线局域网基础设施,为移动用户提供位置服务信息。它填补了室内环境下连续空间定位技术的空白,能够提供较高的定位精度,并且不需要添加硬件设备,代表了定位技术的最新发展方向。现有的基于信号强度的无线局域网定位系统可以分为两种:理论模型和经验模型。理论模型需要建立距离与信号强度之间的关系函数,经验模型定位精度则较高,需要为每个局域网建立信号空间数据库,当无线网络环境改变时则要重新建立数据库。  本文设计与实现了一种在Android平台下运行的基于无线局域网信号强度的定位系统。通过获取与分析信号强度,以较理想的方式来获得被测物的位置信息,同时设计了一种全新的定位算法,提高了定位精度,最后通过实验进行比较分析,验证了算法的有效性。Android平台良好的开放性,支持应用程序的并行特性,强大的计算能力和数据库技术,都对实现本文的目标提供了强有力的支持。
学科专业:
授予学位:
学位授予单位:
导师姓名:
学位年度:
在线出版日期:
本文读者也读过
相关检索词
万方数据知识服务平台--国家科技支撑计划资助项目(编号:2006BAH03B01)(C)北京万方数据股份有限公司
万方数据电子出版社查看: 5947|回复: 4
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID9869722阅读权限10帖子积分9金币16 注册时间
, 积分 9, 距离下一级还需 41 积分
积分9金币16 注册时间
本帖最后由 any2go 于
21:23 编辑
在使用5830过程中,一直想测试他的GPS信号情况,总感觉定位很慢,但又看不到信号情况,于是自己写了一个GPS信号测试的软件,供大家使用。有需要的可以从。
总体说来 5830的GPS信号定位情况并不尽如意,定位时间比较慢,信号上升慢(天气好时要表现好很多),一般情况下定位需要5~10分钟, 这与当前市场上几百元的PND无法比拟,最快的可以达到几秒中定位,号称是“开机后立刻定位”。
相比这方面GT5830&&还要提升提升才行。
安卓论坛 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、管理员和版主有权不事先通知发贴者而删除本文
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID9869722阅读权限10帖子积分9金币16 注册时间
, 积分 9, 距离下一级还需 41 积分
积分9金币16 注册时间
港版的手机在深圳GPS信号不怎么好
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID9869722阅读权限10帖子积分9金币16 注册时间
, 积分 9, 距离下一级还需 41 积分
积分9金币16 注册时间
鼎鼎。。。。
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID9869722阅读权限10帖子积分9金币16 注册时间
, 积分 9, 距离下一级还需 41 积分
积分9金币16 注册时间
求加速GPS定位的办法。。。。
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID872985阅读权限20帖子积分52金币102 注册时间
, 积分 52, 距离下一级还需 128 积分
积分52金币102 注册时间
Powered by手机做车载导航必看!测量手机GPS信号App【图】_Android资讯_太平洋电脑网
手机做车载导航必看!测量手机GPS信号App【图】_Android资讯_太平洋电脑网
现在手机的屏幕越来越大,加上手机能够结合基站快速定位,所以很多朋友都选择用手机作为车载导航工具。而作为一个导航工具,其GPS卫星信号必须要强——特别是在如同钢筋水泥森林般的城市中,GPS信号受遮挡衰弱得很厉害,定位不准的话一不小心就在错综复杂的立交桥上迷路了。如何才能挑选到GPS卫星信号最强的设备?今天小编就来为大家介绍两款测量手机GPS信号的安卓App,一起来看看吧!  测量手机GPS信号:GPS Test软件名称:GPS测试(GPS Test Plus)软件版本:1.2.4软件大小:409.6KB软件授权:免费适用平台:Android下载地址:.cn/download/78055.html  这是一款非常经典的GPS信号测试App,从安卓诞生不久这款App就出现了。虽然这款App已经有一年左右没更新了,但功力依旧在!通过GPS Test,能够详细测试出手机所能连接GPS卫星的数量、信号强度等多种GPS数据,并支持选择多种不同的GPS坐标格式。GPS Test可以显示当前接收到的GPS卫星数量、信号强度、方位,显示你的GPS坐标,还是非常专业和强大的。 GPS Test能够显示手机连接到了多少颗GPS卫星,同时还可以显示GPS卫星的位置  而通过GPS定位,GPS Test应用能够判断出你的方向,用来充当指南针也没有问题。此外,它还可以判定你所在地区是白天还是黑夜,你现在的速度,你现在所在时区的时间,以及UTC时间等等信息都一览无遗,测试GPS信号强度和灵敏度绰绰有余。 还可以利用GPS测试时区、海拔、速度等数据  最值得一提的是这款App的体积——它仅有0.4M!利用如此小的体积实现如此强大的功能,可见其功力之深。另外,GPS Test在Google Play上的Plus版售价高达2.42美金,从售价也可以略窥其实力。如果你想要挑选一部定位能力强一些的手机,用GPS Test测试一下各机型的GPS信号接收能力,还是很有帮助的。  测量北斗等卫星信号:GPS测试  这是另一款GPS测试App,和上文的GPS Test相比,这款测试工具资格比较年轻,但也有其优势所在!这款GPS测试App不仅可以测试GPS卫星的信号,还支持俄罗斯的GLONASS、日本的QZSS乃至中国的北斗卫星信号!现在的手机定位芯片往往支持不止一种卫星,这款GPS测试App很适合测试现在的手机定位芯片。软件名称:GPS测试软件版本:1.0.2软件大小:2.26MB软件授权:免费适用平台:Android下载地址:.cn/download/364047.html  这款GPS测试App使用很简单,开启App后,就可以看到各国卫星的信号强度了。在界面中,不同的国旗代表这不同国家的定位卫星,可以看到由于多年的发展,美国的GPS是最多的。通过地图,App还提供了详细的地图定位信息,不过这个功能需要依赖Google地图,不安装Google地图的话,不仅仅是这个功能,连整个App都无法使用,希望日后能够解除这一限制吧。 可以搜索多国的卫星  这款GPS测试App提供了一个非常直观的雷达功能。通过雷达,App能够显示当前所连接的卫星的位置、信号强度、类型以及定位情况。同时,这个雷达还提供了指南针的方向,用户可以在设置中将雷达的指向设置为真北或者磁北。 利用卫星雷达,GPS收讯能力一目了然  总的来说,这是一款不错的GPS信号测试App。它的功能有亮点有特色,可以作为GPS Test的一个补充。当然,这款App并非尽善尽美,它需要先安装Google地图才能运行,同时也附带有一些小广告,大家酌情使用吧。  总结  实际上,现在的手机的GPS芯片越来越先进,能够支持的卫星数量也越来越多。如果大家打算把手机当作车载导航仪,或者经常利用手机看地图,不妨用上文的App挑选一部定位能力强的手机吧!相关阅读:海量表情更新!安卓6.0.1系统发布下载摄影师福音!Lightroom安卓版宣布免费手机误删照片怎么恢复?手机照片恢复App你玩过几款?谷歌公布年度最佳安卓游戏
发表评论:
TA的最新馆藏[转]&[转]&Android上做GPS相关定位服务,不需要读取NMEA数据分析,Android已经封装好了相关服务,你要做的就是调用API。(Android也提供了读取NMEA接口,下面会说到)
1、Android 定位服务
下面我们先来看看Android有关定位服务提供的支持:
  Android定位服务都是位于location下,上面都有相关说明,这里就不详细解析。有一点有需要说说的
是:GpsStatus.NmeaListener&官方的说法是可以读取NMEA数据,但是我这里测试发现,并没有读取到NMEA的数据。查阅过一些资料,说是google在底层并没有实现数据反馈的功能。有时间,需要查看一下源码。
3、LocationManager定位
//获取定位服务LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);//判断是否已经打开GPS模块
if (locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER))
  //GPS模块打开,可以定位操作
// 通过GPS定位
String LocateType= locationManager.GPS_PROVIDER;
Location location = locationManager.getLastKnownLocation(LocateType);
// 设置监听器,设置自动更新间隔这里设置1000ms,移动距离:0米。
locationManager.requestLocationUpdates(provider, 1000, 0, locationListener);
// 设置状态监听回调函数。statusListener是监听的回调函数。
locationManager.addGpsStatusListener(statusListener);
//另外给出 通过network定位设置
String LocateType= locationManager.NETWORK_PROVIDER;
Location location = locationManager.getLastKnownLocation(LocateType);
3、GpsStatus监听器
  上面给出了定位服务的初始化设置步骤,但我们都知道GPS卫星是定期广播数据的,也就是说会定期收到卫星的GPS数据。我们并不能跟卫星主动申请数据,只能被动接收数据。(中国的北斗2倒是可以发送卫星报文给卫星)因此我们需要注册一个监听器来处理卫星返回的数据。
private final GpsStatus.Listener statusListener = new GpsStatus.Listener() {
public void onGpsStatusChanged(int event)   {
 // GPS状态变化时的回调,获取当前状态
  GpsStatus status = locationManager.getGpsStatus(null);    //自己编写的方法,获取卫星状态相关数据
GetGPSStatus(event, status);
&4、获取搜索到的卫星
private void GetGPSStatus(int event, GpsStatus status)
Log.d(TAG, "enter the updateGpsStatus()");
if (status == null)
}    else if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS)
{     //获取最大的卫星数(这个只是一个预设值)
int maxSatellites = status.getMaxSatellites();
Iterator&GpsSatellite& it = status.getSatellites().iterator();
numSatelliteList.clear();     //记录实际的卫星数目
int count = 0;
while (it.hasNext() && count &= maxSatellites)
{       //保存卫星的数据到一个队列,用于刷新界面
GpsSatellite s = it.next();
numSatelliteList.add(s);
Log.d(TAG, "updateGpsStatus----count="+count);
mSatelliteNum = numSatelliteList.size();
else if(event==GpsStatus.GPS_EVENT_STARTED)
//定位启动
else if(event==GpsStatus.GPS_EVENT_STOPPED)
//定位结束
上面就是从状态值里面获取搜索到的卫星数目,主要是通过status.getSatellites()实现。获取到的GpsSatellite对象,
保存到一个队列里面,用于后面刷新界面。上面是获取GPS状态监听器,除了GPS状态外,我们还需要监听一个服务,
就是:LocationListener,定位监听器,监听位置的变化。这个对做定位服务的应用来说,十分重要。
5、LocationListener监听器
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location)      {
//当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
updateToNewLocation(location);
Log.d(TAG, "LocationListener
onLocationChanged");
public void onProviderDisabled(String provider)      {
//Provider被disable时触发此函数,比如GPS被关闭
Log.d(TAG, "LocationListener
onProviderDisabled");
public void onProviderEnabled(String provider)      {
// Provider被enable时触发此函数,比如GPS被打开
Log.d(TAG, "LocationListener
onProviderEnabled");
public void onStatusChanged(String provider, int status, Bundle extras)      {
Log.d(TAG, "LocationListener
onStatusChanged");
// Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
if (status == LocationProvider.OUT_OF_SERVICE || status == LocationProvider.TEMPORARILY_UNAVAILABLE)       {    
位置监听回调是用来处理GPS位置发生变化的时候,自动回调的方法,我们可以从这里获取到当前的GPS数据。另外我们可以通过回调函数提供的location参数,获取GPS的地理位置信息,包括经纬度、速度、海拔等信息。
6、获取地理位置信息(经纬度、卫星数目、海拔、定位状态)
//location对象是从上面定位服务回调函数的参数获取。
mLatitude = location.getLatitude();   // 经度
mLongitude = location.getLongitude();  // 纬度
mAltitude = location.getAltitude();   //海拔
mSpeed = location.getSpeed();       //速度
mBearing = location.getBearing();    //方向
7、获取指定卫星信息(方向角、高度角、信噪比)
//temgGpsSatellite就是我们上面保存的搜索到的卫星
float azimuth = temgGpsSatellite.getAzimuth();
float elevation = temgGpsSatellite.getElevation();
float snr = temgGpsSatellite.getSnr();
利用方向角、高度角我们可以绘画出一个二维图形,表示卫星在地球哪个方位,信噪比作用更大。一般的卫星定位测试软件,都提供了信噪比的状态图,这是表示GPS模块搜星能力的代表。
8、绘画二维卫星位置图
&下面是我做的GPS测试的效果图:
下面给出一个根据方向角和高度角,计算卫星二维图里面位置的方法,上面效果图左边的绿色圆点就代表卫星位置。
右边的信噪比柱状图,代表卫星的接收信号能力。
//根据方向角和高度角计算出,卫星显示的位置
Point point = new Point();
int x = mEarthHeartX; //左边地球圆形的圆心位置X坐标
int y = mEarthHeartY; //左边地球圆形的圆心位置Y坐标
int r = mEarthR;
x+=(int)((r*elevation*Math.sin(Math.PI*azimuth/180)/90));
y-=(int)((r*elevation*Math.cos(Math.PI*azimuth/180)/90));
//point就是你需要绘画卫星图的起始坐标
信噪比的绘画,就是一个单位换算,这里就不给代码了。
Android为我们提供了很方便的位置服务,主要通过GpsStatus、LocationManager、GpsSatellite这几个类实现相关服务和监听。
不过个人觉得如果能直接读取NMEA的数据也是很方便,起码对于某些应用来说,可以获取更多信息。
频道: Android 标签:
&&&&相关课程
12345678910android(5)
1,看到别人写的app里面有展示Gps信号强度的功能,我们的app也需要这个功能,我是先百度了一圈(没有发现要找到的内同,百度果然有些东西搜索不到),还是翻墙去的谷歌看到了,你也可以先去应用市场里面下载几个Gps相关的软件,比如:Gps工具箱,
GpsStatus.Listener gpsS = new GpsStatus.Listener() {
public void onGpsStatusChanged(int event) {
gpscount = 0;
// TODO Auto-generated method stub
if(event==GpsStatus.GPS_EVENT_FIRST_FIX){ &
& & & & & &//第一次定位 &
& & & &}else if(event==GpsStatus.GPS_EVENT_SATELLITE_STATUS){ &
& & & & & &//卫星状态改变 &
& & & & & &GpsStatus gpsStauts= locationManager.getGpsStatus(null); // 取当前状态 &
& & & & & &int maxSatellites = gpsStauts.getMaxSatellites(); //获取卫星颗数的默认最大值 &
& & & & & &
& & & & & &Iterator&GpsSatellite& it = gpsStauts.getSatellites().iterator();//创建一个迭代器保存所有卫星 &
& & & & & &while (it.hasNext() && gpscount &= maxSatellites) { & &
& & & & & & & &GpsSatellite s = it.next();
& & & & & & & &//可见卫星数量
& & & & & & & &if(s.usedInFix()){
& & & & & & & &//已定位卫星数量
& & & & & & & &gpscount++;
& & & & & & & &}
& & & & & &} &&
& & & & & &gpsCount.Gpscount(gpscount);
& & & &}else if(event==GpsStatus.GPS_EVENT_STARTED){ &
& & & & & &//定位启动 &
& & & &}else if(event==GpsStatus.GPS_EVENT_STOPPED){ &
& & & & & &//定位结束 &
& & & &} &
代码里面有一个已定位的卫星判断,这个方法返回的状态值就是
if(s.usedInFix()){
& & & & & & & &//已定位卫星数量
& & & & & & & &gpscount++;
& & & & & & & &}
根据返回的卫星数量来判断当前Gps信号强度的。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2441次
排名:千里之外
(1)(1)(2)(1)(2)

我要回帖

更多关于 android gps信号强度 的文章

 

随机推荐