在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → GpsHook实现模拟定位,手机需安装Xposed类框架

GpsHook实现模拟定位,手机需安装Xposed类框架

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:25.90M
  • 下载次数:33
  • 浏览次数:2090
  • 发布时间:2018-05-01
  • 实例类别:Android平台开发
  • 发 布 人:szb19910915
  • 文件格式:.zip
  • 所需积分:3
 相关标签: GPS 定位 Xposed

实例介绍

【实例简介】

【实例截图】

from clipboard


from clipboard

【核心代码】

package com.markypq.gpshook;

import android.Manifest;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Random;

import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.XposedBridge;

public class MainActivity  extends AppCompatActivity {
    TextView tv;
    EditText lan, lon,acc;
    CheckBox enableHook;
    TestLocationListener mlistener = new TestLocationListener();
    LocationManager locationManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.show);
        lan = (EditText) findViewById(R.id.lan);
        lon = (EditText) findViewById(R.id.lon);
        acc= (EditText) findViewById(R.id.acc);
        enableHook = (CheckBox) findViewById(R.id.enableHook);
        initView();
        locationManager = (LocationManager) MainActivity.this.getSystemService(Context.LOCATION_SERVICE);
        getLocation(null);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode==0x01&&resultCode==Activity.RESULT_OK){
            SharedPreferences sp = getSharedPreferences("markypq", MODE_WORLD_READABLE);
            SharedPreferences.Editor e = sp.edit();
            e.putString("lan", data.getDoubleExtra("lan",0) "");
            e.putString("lon", data.getDoubleExtra("lon",0) "");
            e.commit();
            initView();
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

    private void initView() {
        SharedPreferences sp = getSharedPreferences("markypq", MODE_WORLD_READABLE);
        lan.setText(sp.getString("lan", ""));
        lon.setText(sp.getString("lon", ""));
        acc.setText(sp.getString("acc",""));
        enableHook.setChecked(sp.getBoolean("enableHook",true));
    }

    @TargetApi(23)
    public void getLocation(View view) {

        if (Build.VERSION.SDK_INT >= 23)
            if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                // TODO: Consider calling
                //    Activity#requestPermissions
                // here to request the missing permissions, and then overriding
                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                //                                          int[] grantResults)
                // to handle the case where the user grants the permission. See the documentation
                // for Activity#requestPermissions for more details.
                return;
            }
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 200, 1, mlistener);
        String bestProvider = locationManager.getBestProvider(getCriteria(), true);
        Location location = locationManager.getLastKnownLocation(bestProvider);
        if (location != null)
            tv.setText(location.getLongitude()   "|"   location.getLatitude());
      /*  try {
            Field localField = Class.forName("android.os.ServiceManager")
                    .getDeclaredField("sCache");
            localField.setAccessible(true);
            HashMap<String, IBinder>   map =      (HashMap<String, IBinder>) localField.get(null);
            for (String s:map.keySet()){
                Log.d("local",s map.get(s).toString());
            }
        }catch (Exception e){

        }*/
    }

    public void save(View view) {
        SharedPreferences sp = getSharedPreferences("markypq", MODE_WORLD_READABLE);
        SharedPreferences.Editor e = sp.edit();
        e.putString("lan", lan.getText().toString());
        e.putString("lon", lon.getText().toString());
        e.putString("acc",acc.getText().toString());
        e.putBoolean("enableHook",enableHook.isChecked());
        e.commit();
        Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();
       // getLocation(null);
    }

    public void change(View view) {
        if (Build.VERSION.SDK_INT >= 23)
        if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    Activity#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for Activity#requestPermissions for more details.
            return;
        }
        locationManager.removeUpdates(mlistener);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 200,1, mlistener);
    }

    public void map(View view) {
        Intent intent =new Intent(MainActivity.this,MapActivity.class);
        SharedPreferences sp = getSharedPreferences("markypq", MODE_WORLD_READABLE);
            double latitude = Double.valueOf(sp.getString("lan","117.536246"));
            double longtitude = Double.valueOf(sp.getString("lon","36.681752"));
        intent.putExtra("lan",latitude);
        intent.putExtra("lon",longtitude);
        startActivityForResult(intent,0x01 );
    }

    private class TestLocationListener implements LocationListener {
        @Override
        public void onLocationChanged(Location location){
            //当位置发生改变时调用
            tv.setText("经度: "   location.getLatitude()   " ,纬度: "   location.getLongitude());
        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {

        }

        @Override
        public void onProviderDisabled(String provider){
            //当适配器禁用时调用
        }

        @Override
        public void onProviderEnabled(String provider){
            //当适配器有效时调用
        }

        public void onStatusChanged(String provider){
            //当状态改变时调用
        }
    }

  /*  * 返回查询条件
    *
            * @return
            */
    private Criteria getCriteria() {
        Criteria criteria = new Criteria();
        // 设置定位精确度 Criteria.ACCURACY_COARSE比较粗略,Criteria.ACCURACY_FINE则比较精细
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        // 设置是否要求速度
        criteria.setSpeedRequired(false);
        // 设置是否允许运营商收费
        criteria.setCostAllowed(false);
        // 设置是否需要方位信息
        criteria.setBearingRequired(false);
        // 设置是否需要海拔信息
        criteria.setAltitudeRequired(false);
        // 设置对电源的需求
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        return criteria;
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main,menu);
        return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.setting:

            case R.id.about:
                try {
                    String url="mqqwpa://im/chat?chat_type=wpa&uin=2039609991";
                    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                }catch (Exception e){
                    ClipboardManager myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);;
                    myClipboard.setPrimaryClip(ClipData.newPlainText("text", "2039609991"));
                    Toast.makeText(MainActivity.this,"作者QQ已经复制",Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.donate:
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("HTTPS://QR.ALIPAY.COM/FKX04652BHHIVRVZIABFB1".toLowerCase())));
                break;

        }
        return super.onOptionsItemSelected(item);
    }
}

标签: GPS 定位 Xposed

实例下载地址

GpsHook实现模拟定位,手机需安装Xposed类框架

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警