Android定位测试(深坑)
问题:我们是一个海外app,市场部去马来西亚打开那边的市场,发现了一个问题,就是我们的app定位有问题,还是成都的定位,主要原因是在马来西亚使用这个app,请求中带的经纬度参数是成都的,导致服务器返回了成都的定位。
一、Android定位方式
Android常用的三种定位方式有:基于GPS定位、基于基站定位、基于wifi定位
1)基于GPS定位
GPS定位需要GPS模块(硬件)的支持,没有GPS模块是无法进行GPS定位的。
GPS定位最大的优点就是其定位精确度高;缺点就是耗电高、定位慢、室内和地下室基本定位不到。
2)基于基站定位
根据采集到手机所处基站信息和手机相关信息(MNC、MCC、LAC)进行定位,基站定位最大的优点就是:定位速度快,缺点就是:定位精度稍微较差,无网络信号不能使用。
3)基于wifi定位:
和基站定位类似,根据当前设备获取的wifi信息来进行定位。
可以从Androidmanifest.xml查看程序优先使用的定位方式:

android.permission.ACCESS_FINE_LOCATION → GPS定位
android.permission.ACCESS_COARSE_LOCATION → 网络定位
二、Android应用定位原理
LocationManager是用于管理Android的用户定位服务,使用它来监听获取当前的位置信息并定义要返回的信息,如经纬度、方位等

注意点:
1、如果程序拥有打开GPS的权限,用户设置关闭GPS后但又获取位置的需求则会自动打开GPS来进行定位,定位后会自动关闭GPS;
2、定位时一定要设置超时时间,要不然遇到定位不到的情况则会一直卡在定位上还无法退出使用其他功能;
3、如果超时可以上一次定位的位置(LocationManager有方法可以得到上次定位的位置),如果上次定位位置为空则提示用户定位失败。
三、测定位时该从哪些角度考虑
1、检查三种定位方式定位是否能成功,定位精度准确且无报错;
2、三种定位正交组合,检查定位功能和定位精度;
3、程序有打开GPS权限时,关闭网络和GPS,检查能否定位和定位精度;
4、定位失败的两种处理情况(失败提示和是否返回上一次位置);
5、定位过程中与来电、短彩信、蓝牙的冲突;
6、定位过程中与功能键交互;
7、不同网络环境(移动、联通、电信中3G/2G)下的定位速度和精度;
8、不同环境(室内、室外、电梯)的定位和精度;
9、本地测试外地定位(DDMS模拟)
特别是第9点,我这次就是坑了,没测试到
Android定位测试(深坑)的更多相关文章
- Android studio的深坑 导jar包重复的异常处理
导包重复这个问题折磨了整整一天!! 第一个方法在gradle文件下看看有没有重复的包 如果有那么一切都是浮云分分钟搞定 ,最可恶的是在gradle里面没有. 在gradle里面找不到的话就要考虑一下 ...
- android MultiDex multidex原理原理下遇见的N个深坑(二)
android MultiDex 原理下遇见的N个深坑(二) 这是在一个论坛看到的问题,其实你不知道MultiDex到底有多坑. 不了解的可以先看上篇文章:android MultiDex multi ...
- Android GPS定位测试(附效果图)
今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整 ...
- Android GPS定位测试(附效果图)
今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整 ...
- Android项目开发填坑记-so文件引发的攻坚战
故事的最初 我负责的项目A要求有播放在线视频的功能,当时从别人的聊天记录的一瞥中发现百度有相关的SDK,当时找到的是Baidu-T5Player-SDK-Android-1.4s,项目中Demo的so ...
- Android测试(一):在Android中测试App
原文:https://developer.android.com/training/testing/index.html 测试你的App是开发过程中的重要组成部分.通过对应用程序持续的运行测试,你可以 ...
- Go语言第一深坑:interface 与 nil 的比较
interface简介 Go 语言以简单易上手而著称,它的语法非常简单,熟悉 C++,Java 的开发者只需要很短的时间就可以掌握 Go 语言的基本用法. interface 是 Go 语言里所提供的 ...
- 六 APPIUM Android 定位方式
文本转自:http://www.cnblogs.com/sundalian/p/5629500.html APPIUM Android 定位方式 1.定位元素应用元素 1.1通过id定位元素 An ...
- Appium 在 Android UI 测试中的应用
原文地址:https://blog.coding.net/blog/Appium-Android-UI Android 测试工具与 Appium 简介 Appium 是一个 C/S 架构的,支持 An ...
随机推荐
- SSM-CRUD入门项目——查询
查询 1.基础查询 分析:访问项目主页 index.jsp 时应该跳转到列表页 我们可以在index.jsp发出查询员工列表请求,来到 list.jsp 使用插件 pageHelper 完成分页功能— ...
- AWT之—画图
package edu.ch4; import java.awt.Color;import java.awt.Font;import java.awt.Frame;import java.util.C ...
- 在SQL SERVER中批量替换字符串的方法
UPDATE MainData SET Content = )) , 'XM00000137' , 'XM00000078') WHERE [Key] IN (SELECT md_key FROM i ...
- 1071: [SCOI2007]组队
1071: [SCOI2007]组队 https://lydsy.com/JudgeOnline/problem.php?id=1071 分析: dp+单调性. A*(hi–minH)+B*(si–m ...
- Hibernate5使用注解方式(转)
用Hibernate5使用映射文件时存在一个问题没有解决,在映射文件中配置了student_sequence,但找不到映射文件自增长的序列的sequence(Oracle)数据库. 输出的是 Hibe ...
- 安装完.net core sdk 后部署 ASP.NET Core 出现错误502.5
将项目升级到和sdk一样的版本 然后 命令行执行 iisreset
- XAF-如何改变列表点击时的默认行为
在 Windows 窗体应用程序中,按下回车或双击列表会打开默认的详细视图. 在 ASP.NET Web 应用程序中,单击对象时执行此操作. 这一行为是由 ListViewProcessCurrent ...
- JVM知识(上)
目录 什么是JVM? JVM的生命周期 JVM的体系结构 JVM的数据类型 java虚拟机被称为"虚拟",因为它是一个抽象的计算机定义的规范.要运行一个Java程序,需要一个抽象的 ...
- PHP序列化serialize()和反序列化unserialize()
所谓的序列化,就是把保存在内存中的各种对象状态或属性保存起来,在需要时可以还原出来. serialize() 可处理除了 resource 之外的任何类型返回字符串,此字符串包含了表示 value 的 ...
- 三、Django之请求与响应-Part 1
一.新建项目 进入你指定的项目保存目录,然后运行下面的命令: $ django-admin startproject mysite 这将在目录下生成一个mysite目录,也就是你的这个Django项目 ...