文档章节

Android mock location

c
 chenming
发布于 2014/04/20 17:38
字数 555
阅读 2773
收藏 1

1. Mock Location 简介

借助 mock location, 在测试LBS应用时不必进行路测就可以生成位置数据。 总的来说,使用 mock location 有以下好处:

  • 可以生成特定的模拟数据而不必真的移动物理设备
  • 模拟数据同样来自 location service,可以测试到应用中位置相关的代码。另外,是从产品外部发送模拟数据,产品代码中不会编写一些在发布前必须删除或关闭的测试代码
  • 不必移动物理设备所以可以在模拟器上测试产品

Android 官方文档 中给出了详细的操作步骤。但文档中的实现是基于 Google Play services 的。 对于没有安装 Google Play services 的设备,文档中提供的方法是不可行。

2. Mock Location 实现

参考一些技术博客, 发现不基于 Google Play services 也可以很方便地实现 mock location。总结如下

首先要确保打开设备的 mock location 开关 (2.3上 设置 - 应用程序 - 开发 - 允许模拟位置, 4.0上 设置 - 开发 - 允许模拟位置)

在 AndroidManifest.xml 中需要声明以下这个不太常用的权限:

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

此外还需要GPS权限 ACCESS_FINE_LOCATION

核心代码如下:

mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mLocationManager.addTestProvider(LocationManager.GPS_PROVIDER, false,
		false, false, false, true, true, true, 0, /* magic */5);
mLocationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER,
		true);

Location loc = Utils.createLocation(35 + i * unit, 117 + i
		* unit, 50.f);
loc.setTime(System.currentTimeMillis());
mLocationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, loc);

Utils类定义如下:

public class Utils {
    private static final String PROVIDER = "gps";
    private static final double LAT = 37.377166;
    private static final double LNG = -122.086966;
    private static final float ACCURACY = 3.0f;
    /*
     * From input arguments, create a single Location with provider set to
     * "flp"
     */
    public static Location createLocation(double lat, double lng, float accuracy) {
        // Create a new Location
        Location newLocation = new Location(PROVIDER);
        newLocation.setLatitude(lat);
        newLocation.setLongitude(lng);
        newLocation.setAccuracy(accuracy);
        return newLocation;
    }
    // Example of creating a new Location from test data
    public static final Location testLocation = createLocation(LAT, LNG, ACCURACY);
}

3. Mock Location 实现

Android 官方文档 中给出的最佳实践如下:

  • 从一个独立的 mock location provider app 中发送模拟数据
  • mock location provider app 是从运行在 started service 中的后台线程发送数据的。所以即使 app 进入后台,仍然可以发送模拟数据,且不用担心阻塞 UI 线程。

参考

android mock location on device

© 著作权归作者所有

共有 人打赏支持
c
粉丝 2
博文 59
码字总数 24719
作品 0
南宁
Android 操作权限大全 (android.permission)

android.permission.ACCESSCHECKINPROPERTIES 允许读写访问”properties”表在checkin数据库中,改值可以修改上传( Allows read/write accessto the “properties” table in the checkin d......

Vincent009
2012/10/18
0
0
Android (cocos2dx 网络访问)访问权限设置

Android开发应用程序时,如果应用程序需要访问网络权限,需要在 AndroidManifest.xml 中加入以下代码: <uses-permission android:name="android.permission.INTERNET"></uses-permission> 同样......

石头哥哥
2013/08/14
0
0
【初印象】Android权限变量表

作为一个还在Android门口徜徉的小白,我不急于直接深入到Android里面去,而是现在门口绕一绕,挖点感兴趣的东西出来。 其实每个人第一次用Android的时,都会发现一个Android特殊的机制,就是...

RankoWong
2013/03/20
0
0
iOS端Mock GPS定位 —— 测试、开发、玩游戏、发朋友圈等等,你都用得上

前言 2017年,淘宝、天猫线下活动会场日益增多,个性化的地理围栏圈人投放成了运营司空见惯的方式,那么每次测试就变得非常蛋疼。安卓能找到一大波能虚拟定位的工具,那ios如何测试。我们Awa...

尛破孩波波
2017/10/11
0
0
Android 的所有权限说明

Android 权限分的很细,但命名比较人性化,Android permission比SymbianCapabilities有了不少改进,下面就来看看权限许可都有哪些定义吧,发现还是比较繁多的,如果发现你的程序某个地方调试...

Vincent009
2012/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

74.expect脚本同步文件以及指定host同步文件 构建分发系统文件和命令

20.31 expect脚本同步文件: 在expect脚本中去实现在一台机器上把文件同步到另外一台机器上去。核心命令用的是rsync ~1.自动同步文件 #!/usr/bin/expect set passwd "123456" spawn rsync -a...

王鑫linux
42分钟前
0
0
TypeScript项目引用(project references)

转发 TypeScript项目引用(project references) TypeScript新特性之项目引用(project references) 项目引用是TypeScript 3.0中的一项新功能,允许您将TypeScript程序构建为更小的部分。 通过这...

durban
47分钟前
0
0
爬虫入门

导读 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取...

问题终结者
47分钟前
0
0
ppwjs之bootstrap文字排版:无序列表项不换行

<!DOCTYPT html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title>ppwjs欢迎您</title><link rel="icon" href="/favicon.ico" ......

ppwjs
54分钟前
0
0
SpringBoot 学习一

本文将从以下几个方面介绍: 前言 HelloWorld 读取配置文件 例子(CURD) 前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架...

tsmyk0715
54分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部