Android模拟位置程序,俗称GPS欺骗,只能修改采用GPS定位的软件。 手机定位方式目前有4种:基站定位,WIFI定位,GPS定位,AGPS定位

常见的修改手法:
1. 抓包欺骗法,抓包改包欺骗服务器端, 但是得专门去针对某款app,而且现在很多app数据包都加密了
2. hook java层经纬度获取函数, 这个方法以前可以用,现在不行了
3. hook native层经纬度获取函数 
4. 使用允许模拟地址位置信息(不是很通用有版本限制)

为了修改微信朋友圈地理位置信息,为了好玩
试过了上面的一些方法
1. xpose hook java层gps函数试过了没有用
2. 抓包发现全部加密了(去年经纬度信息都还没有加密的)
3. hook native没有去研究
4. 允许地址位置信息模拟(实测可以用)  无需root
       但是有版本限制, 5.0以后这个功能有限制
       4.4.2版本的Nexus失效
       红米4.1.2成功了

下文主要讲解方法4, 允许模拟地理位置信息法

一.开启允许位置信息模拟
该功能在开发者选项里面,勾选允许地理位置信息即可


二. 开始编码
1. 成员定义
private String mMockProviderName = LocationManager.GPS_PROVIDER;
private Thread thread;
private LocationManager locationManager;

private Boolean is_run = true;  


2. 初始化
/**
 * inilocation 初始化 位置模拟
 * 
 */
private void init_location() {
    locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
    locationManager.addTestProvider(mMockProviderName, false, true, false, false, true, true, true, 0, 5);
    locationManager.setTestProviderEnabled(mMockProviderName, true);
    locationManager.requestLocationUpdates(mMockProviderName, 0, 0, this);

}  


3. 设置地理位置模拟
@SuppressLint("NewApi")
private void setLocation(double longitude, double latitude) {
    Location location = new Location(mMockProviderName);
    location.setTime(System.currentTimeMillis());
    location.setLatitude(latitude);
    location.setLongitude(longitude);
    location.setAltitude(2.0f);
    location.setAccuracy(3.0f);
    location.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
    locationManager.setTestProviderLocation(mMockProviderName, location);

}  


4. 开启线程一直修改
// 开启线程,一直修改GPS坐标
thread = new Thread(new Runnable() {
    @Override
    public void run() {
        while (is_run) {
            try {
                Thread.sleep(500);
                setLocation(longitude, latitude);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
});

thread.start();  


5.检测是否开启了允许地址位置模拟
import android.provider.Settings;
if (Settings.Secure.getInt(getContentResolver(),Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0){
    // 开启了地理位置模拟

}  



最后在加上百度地图SDK就可以随意的获取经纬度坐标了并修改地理位置坐标了
百度地图SDK用法:

代码上传github:

最后的效果:


Android模拟位置信息的更多相关文章

  1. Android获取位置信息的方法总结

    1.位置服务的简介:位置服务,英文翻译为Location-Based Services,缩写为LBS,又称为定位服务或基于位置的服务,融合了GPS定位.移动通信.导航等多种技术,提供与空间位置相关的综 ...

  2. 模拟位置 定位 钉钉打卡 运动轨迹 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  3. android上传位置信息导致的流量大爆炸问题调查

    原由:项目中有人写了个位置上传的服务,其实一直没问题,后来不知道什么时候出现了很多抱怨,是开着app流量一下子跑掉了几个G,差点就要卖房子还移动话费了,很多同事哭笑不得的找上门来,后来PM解决了,我一 ...

  4. Android GPS应用:动态获取位置信息

    在上文中,介绍了GPS概念及Android开发GPS应用涉及到的常用类和方法.在本文中,开发一个小应用,实时获取定位信息,包括用户所在的纬度.经度.高度.方向.移动速度等.代码如下: Activity ...

  5. Android初级教程获取手机位置信息GPS与动态获取最佳方式

    简单介绍一下gps定位的操作. 主要是靠locationmanger这个api完成的一些操作:通过获取这个实例,然后调用它的requestLocationUpdates方法进行注册.传入的参数分别有以 ...

  6. android GPS 定位,取位置信息

    现在很多app ,需要取位置信息,所以我也做了一个模块用来取位置信息:   加入位置服务所需的权限: <uses-permission android:name="android.pe ...

  7. Android 集成GoogleMap,实现定位和获取位置信息

    1.准备 我使用的是AS2.2.2,首先FQ注册google开发者帐号,准备获取API Key,网上有许多相关资料我就不再赘述,这里讲一个比较小白级的获取方法,可以减少许多输入 1.1. AS创建项目 ...

  8. android黑科技系列——微信定位聊天记录中照片的位置信息插件开发详解

    一.前言 最近关于微信中,朋友之间发送原图就可能暴露你的位置信息,其实这个问题不在于微信,微信是为了更好的体验效果,才有发送原图功能,而对于拍照,发送普通图片微信后台都会过滤图片的exif信息,这样就 ...

  9. Android GPS获取当前位置信息

    package com.example.gpstest; import org.apache.http.util.LangUtils; import android.content.Context; ...

随机推荐

  1. ubuntu14.04为安装fcitx卸载ibus后出现system setting (系统设置)中图标消失的问题

    最近在系统为ubuntu14.04原版中,安装fictx.按照以往的经验应先把ibus卸载干净,否则可能会有冲突.因此惯性思维驱使,先卸载ibus,然后安装fcitx,但是问题出现了,system s ...

  2. maven 项目启动tomcat报错 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

    maven项目启动tomcat报错: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderLi ...

  3. vtk工作流

    要理解VTK的工作原理,首先应明确几个类型: 1.vtkSource(数据源)   这个就好比一个剧本里面的角色,让演员知道要演的是什么人物. 数据源有:vtkConeSource,vtkSphere ...

  4. Freemarker常用技巧

    1,截取字符串 有的时候我们在页面中不需要显示那么长的字符串,比如新闻标题,这样用下面的例子就可以自定义显示的长度 < lt. <= lte. > gt. >= gte < ...

  5. LintCode-Longest Increasing Subsequence

    Given a sequence of integers, find the longest increasing subsequence (LIS). You code should return ...

  6. 一行python代码实现树结构

    树结构是一种抽象数据类型,在计算机科学领域有着非常广泛的应用.一颗树可以简单的表示为根, 左子树, 右子树. 而左子树和右子树又可以有自己的子树.这似乎是一种比较复杂的数据结构,那么真的能像我们在标题 ...

  7. [fiddler] 手机抓包

    最近工作涉及到与原生app联调,需要抓取手机上的请求.借此机会研究了下fiddler,简直神器. 以下简单介绍通过fiddler进行手机抓包的方法,之后也会陆续更新fiddler的其他功能 设置fid ...

  8. c++调用lua环境配置

    安装完luaforwindows后进行配置 配置项目属性            

  9. hbase shell 常见命令

    quick start from official Hbase  hbase(main):003:0> create 'test', 'cf' 0 row(s) in 1.2200 second ...

  10. WCF错误:由于目标计算机积极拒绝,无法连接

    今天学习WCF时用C#重写测试例子时,发生错误:由于目标计算机积极拒绝,无法连接.找了N久,网上也没有找到实际的解决方法.查看netstat -an发现当自承载宿主运行时,没有侦听配置的端口.开始总以 ...