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. 基于jquery的has()方法以及与find()方法以及filter()方法的区别详解

    has(selector选择器或DOM元素)   将匹配元素集合根据选择器或DOM元素为条件,检索该条件在每个元素的后代中是否存在,将符合条件的的元素构成新的结果集. 下面举一个例子: <ul& ...

  2. VMware三种上网模型

    今天捣鼓了一会虚拟机,对上网方式又学习了一遍,之前摆弄过,现在又捡起来了,主要自己整理一下,方面后面复习.主要有三种网络模型:桥接.仅主机(Host-Only).NAT.自己亲测了这三种方式,都可以上 ...

  3. WCF开发那些需要注意的坑 Z

    执行如下 批处理:"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\svcutil.exe" http://127.0.0.1: ...

  4. iOS常用 --- NSDictionary 与 NSMutableDictionary

    一.NSDictionary 字典的两种创建方法 NSDictionary *dic1 =[[NSDictionary alloc]init]; 2 // 或: 3 NSDictionary *dic ...

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

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

  6. 线段树 HDU 3397

    5种操作 具体看代码 #include<iostream> #include<stdio.h> #include<string.h> #include<alg ...

  7. AOJ DSL_2_E Range Add Query (RAQ)

    Range Add Query 数列 A = {a1,a2,...,an} に対し.次の2つの操作を行うプログラムを作成せよ. add(s,t,x): as,as+1,...,at にxを加算する. ...

  8. Android开发笔记之《Window下安装Ubuntu双系统,Grub无法显示Window选项》

    解决方法是: 在terminal里面输入: sudo update-grub 会找到windows的grub 重启电脑就可以了.

  9. Android内存优化-内存泄漏的几个场景以及解决方式

    转自:http://blog.csdn.net/a910626/article/details/50849760 一.什么是内存泄漏 在Java程序中,如果一个对象没有利用价值了,正常情况下gc是会对 ...

  10. ElasticSearch-5.0.0安装中文分词插件IK

    Install IK 源码地址:https://github.com/medcl/elasticsearch-analysis-ik,git clone下来. 1.compile mvn packag ...